Files
breedr/README.md

265 lines
7.7 KiB
Markdown

# BREEDR - Dog Breeding Genealogy Management System
A reactive, interactive dog breeding genealogy mapping system for professional kennel management.
## ✅ Current Features
### Core Functionality
- **✅ Dog Registry** - Complete CRUD operations with comprehensive profiles
- **✅ Photo Management** - Multiple photos per dog with upload/delete capabilities
- **✅ Parent Relationships** - Clean database design using `parents` table (no sire/dam columns in dogs table)
- **✅ Litter Management** - Track breeding records, link puppies to litters
- **✅ Interactive Pedigree Visualization** - Multi-generational family trees with zoom/pan
- **✅ Modern UI** - Sleek, dark-themed interface with compact info cards
- **✅ Search & Filter** - Find dogs by name, breed, sex, and more
### Database Architecture
- **✅ Clean Schema** - No migrations, fresh installs create correct structure
- **✅ Normalized Design** - `parents` table for relationships (sire/dam)
- **✅ Litter Linking** - Dogs linked to litters via `litter_id`
- **✅ Health Records** - Medical history and genetic testing
- **✅ Heat Cycles** - Breeding cycle tracking
- **✅ Genetic Traits** - Inherited trait mapping
### Recently Fixed
- **✅ Database Schema** - Removed weight/height columns, added litter_id
- **✅ Parent Handling** - Proper sire/dam via parents table
- **✅ Microchip Field** - Optional, allows multiple dogs without microchips
- **✅ Error Handling** - Graceful fallbacks for API failures
- **✅ UI Layout** - Fixed overlapping elements in dog forms
## Technology Stack
- **Frontend**: React 18 with modern component design
- **Visualization**: React-D3-Tree for pedigree charts
- **Backend**: Node.js/Express API
- **Database**: SQLite (embedded, zero-config) with clean normalized schema
- **Container**: Single Docker image with multi-stage build
- **Styling**: CSS custom properties with dark theme
## Quick Start
### Docker Deployment (Recommended)
```bash
# Clone repository
git clone https://git.alwisp.com/jason/breedr.git
cd breedr
# Build Docker image
docker build -t breedr:latest .
# Run with docker-compose
docker-compose up -d
```
Access at: `http://localhost:3000`
### Fresh Install Database Setup
For a **fresh install**, the database will automatically initialize with the correct schema.
For an **existing installation upgrade**:
```bash
# Stop the application
docker-compose down
# Backup your data
cp data/breedr.db data/breedr.db.backup
# Delete old database (it will be recreated)
rm data/breedr.db
# Pull latest code
git pull origin docs/clean-schema-and-roadmap-update
# Rebuild and restart
docker-compose up -d --build
```
The app will create a fresh database with the clean schema automatically.
## Database Schema
### Key Design Principles
1. **No sire/dam columns in `dogs` table** - Parent relationships stored in `parents` table
2. **Normalized structure** - Reduces redundancy, improves data integrity
3. **Litter linking** - Dogs reference litters via `litter_id` foreign key
### Core Tables
- **dogs** - Core dog registry (NO sire_id/dam_id columns)
- **parents** - Sire/dam relationships (dog_id, parent_id, parent_type)
- **litters** - Breeding records with sire/dam references
- **health_records** - Medical and genetic testing
- **heat_cycles** - Breeding cycle tracking
- **traits** - Genetic trait mapping
**Full schema documentation:** [DATABASE.md](DATABASE.md)
## Environment Variables
- `NODE_ENV` - production/development (default: production)
- `PORT` - Server port (default: 3000)
- `DB_PATH` - SQLite database path (default: /app/data/breedr.db)
- `UPLOAD_PATH` - Upload directory (default: /app/uploads)
## Development
### Local Development Setup
```bash
# Install dependencies
npm install
# Run development server (frontend + backend)
npm run dev
# Build for production
npm run build
```
### Project Structure
```
breedr/
├── client/ # React frontend
│ ├── src/
│ ├── public/
│ └── package.json
├── server/ # Node.js backend
│ ├── routes/
│ ├── db/
│ │ └── init.js # Clean schema (NO migrations)
│ └── index.js
├── docs/ # Documentation
├── DATABASE.md # Schema documentation
├── ROADMAP.md # Development roadmap
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml
└── README.md
```
## API Endpoints
- `GET/POST /api/dogs` - Dog CRUD operations
- `GET /api/dogs/:id` - Get dog with parents and offspring
- `POST /api/dogs/:id/photos` - Upload photos
- `GET/POST /api/litters` - Litter management
- `GET /api/pedigree/:id` - Generate pedigree tree
- `GET /api/health` - Health records
- `GET/POST /api/breeding` - Heat cycles and breeding
## Upgrading
### From Earlier Versions
If you have an **old database with sire/dam columns** or missing litter_id:
```bash
# Backup your data
cp data/breedr.db data/breedr.db.backup
# Delete old database
rm data/breedr.db
# Pull latest code
git pull
# Restart (will create clean schema)
docker-compose restart
```
**Important:** The new schema uses a `parents` table instead of sire/dam columns. Parent data cannot be automatically migrated - you'll need to re-enter parent relationships.
## Troubleshooting
### "no such column: weight" or "no such column: sire_id"
Your database has an old schema. Delete and recreate:
```bash
rm data/breedr.db
docker-compose restart
```
### Parent relationships not saving
Check server logs for:
```
✓ Dog inserted with ID: 123
Adding sire relationship: dog 123 -> sire 5
✓ Sire relationship added
```
If you don't see these logs, ensure `sire_id` and `dam_id` are being sent in the API request.
## Roadmap
### ✅ Completed
- [x] Docker containerization
- [x] SQLite database with clean schema
- [x] Dog management (CRUD)
- [x] Photo management
- [x] Interactive pedigree visualization
- [x] Litter management
- [x] Parent-child relationships via parents table
- [x] Modern UI redesign
- [x] Search and filtering
### 🚧 In Progress
- [ ] Trial pairing simulator
- [ ] Inbreeding coefficient calculator
- [ ] Heat cycle tracking UI
### 📋 Planned
- [ ] Health records management
- [ ] Genetic trait tracking
- [ ] PDF pedigree generation
- [ ] Advanced search and filters
- [ ] Export capabilities
**Full roadmap:** [ROADMAP.md](ROADMAP.md)
## Recent Updates
### March 9, 2026 - Clean Database Schema
- **Fixed:** Database schema cleaned up - no migrations
- **Fixed:** Removed weight/height columns (never implemented)
- **Fixed:** Proper parent handling via parents table
- **Added:** litter_id column for linking puppies to litters
- **Added:** Comprehensive DATABASE.md documentation
- **Improved:** Server startup with clean initialization
- **Improved:** Logging for parent relationship creation
### March 8, 2026 - UI Redesign & Bug Fixes
- **Fixed:** Microchip field UNIQUE constraint (now properly optional)
- **Redesigned:** Modern dark theme with sleek aesthetics
- **Redesigned:** Compact horizontal info cards (80x80 avatars)
- **Improved:** Dashboard with gradient stats cards
- **Improved:** Navigation bar with glass morphism
- **Enhanced:** Age calculation and display
- **Added:** Sex-colored icons (blue ♂, pink ♀)
- **Added:** Registration number badges
## Documentation
- [DATABASE.md](DATABASE.md) - Complete schema documentation
- [ROADMAP.md](ROADMAP.md) - Development roadmap and features
- [INSTALL.md](INSTALL.md) - Detailed installation instructions
- [QUICKSTART.md](QUICKSTART.md) - Quick setup guide
## License
Private use only - All rights reserved
## Support
For issues or questions:
- Check documentation in `docs/` folder
- Review DATABASE.md for schema questions
- Check container logs: `docker logs breedr`
- Contact the system administrator