Reviewed-on: #24
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
parentstable (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
- ✅ Branded Navigation - Custom logo (br-logo.png) with gold-to-rusty-red gradient title
- ✅ Trial Pairing Simulator - COI calculator with common ancestors table and risk badge
- ✅ Heat Cycle Calendar - Month grid calendar with cycle windows and breeding date suggestions
Database Architecture
- ✅ Clean Schema - No migrations, fresh installs create correct structure
- ✅ Normalized Design -
parentstable 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 Added (March 9, 2026)
- ✅ Heat Cycle Calendar - Full month grid with color-coded cycle windows (Proestrus / Optimal / Late Estrus / Diestrus)
- ✅ Start Cycle Modal - Click any day or the header button to log a new heat cycle for a female
- ✅ Breeding Date Suggestions - Phase windows with date ranges loaded from
GET /api/breeding/heat-cycles/:id/suggestions - ✅ Whelping Estimate - Auto-calculates earliest/expected/latest whelping once a breeding date is logged
- ✅ Trial Pairing Simulator -
/pairingroute with sire/dam dropdowns, COI%, risk badge, and common ancestors table - ✅ Pairing Nav Link -
FlaskConicalicon added to navbar - ✅ New API Endpoints -
GET /api/breeding/heat-cycles,GET /api/breeding/heat-cycles/:id/suggestions
Previously Added (March 9, 2026)
- ✅ Brand Logo - Custom
br-logo.pngin navbar replacing generic icon - ✅ Gradient Title - Gold-to-rusty-red gradient on "BREEDR" brand text
- ✅ Static Asset Serving -
/staticdirectory served by Express for branding assets - ✅ Dev Proxy - Vite dev server proxies
/staticto Express backend - ✅ Route Fix -
/staticand/uploadspaths no longer fall through to React catch-all - ✅ Logo Sizing - Fixed brand logo to 1:1 aspect ratio square
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 + gradient branding
Quick Start
Docker Deployment (Recommended)
# 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:
# 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 master
# 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
- No sire/dam columns in
dogstable - Parent relationships stored inparentstable - Normalized structure - Reduces redundancy, improves data integrity
- Litter linking - Dogs reference litters via
litter_idforeign 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
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
# 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/
│ │ ├── pages/
│ │ │ ├── BreedingCalendar.jsx # Heat cycle calendar (month grid)
│ │ │ ├── PairingSimulator.jsx # Trial pairing + COI
│ │ │ ├── Dashboard.jsx
│ │ │ ├── DogList.jsx
│ │ │ ├── DogDetail.jsx
│ │ │ ├── PedigreeView.jsx
│ │ │ └── LitterList.jsx
│ ├── public/
│ └── package.json
├── server/ # Node.js backend
│ ├── routes/
│ │ ├── breeding.js # Heat cycles, whelping, suggestions
│ │ ├── pedigree.js # COI, trial pairing
│ │ ├── dogs.js
│ │ └── litters.js
│ ├── db/
│ │ └── init.js # Clean schema (NO migrations)
│ └── index.js
├── static/ # Branding assets (br-logo.png, etc.)
├── docs/ # Documentation
├── DATABASE.md # Schema documentation
├── ROADMAP.md # Development roadmap
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml
└── README.md
API Endpoints
Dogs
GET/POST /api/dogs- Dog CRUD operationsGET /api/dogs/:id- Get dog with parents and offspringPOST /api/dogs/:id/photos- Upload photos
Pedigree & Genetics
GET /api/pedigree/:id- Generate pedigree treePOST /api/pedigree/trial-pairing- COI + common ancestors + risk recommendation
Breeding & Heat Cycles
GET /api/breeding/heat-cycles- All heat cyclesGET /api/breeding/heat-cycles/active- Active cycles with dog infoGET /api/breeding/heat-cycles/dog/:dogId- Cycles for a specific dogGET /api/breeding/heat-cycles/:id/suggestions- Breeding windows + whelping estimatePOST /api/breeding/heat-cycles- Create new heat cyclePUT /api/breeding/heat-cycles/:id- Update cycle (log breeding date, etc.)DELETE /api/breeding/heat-cycles/:id- Delete cycleGET /api/breeding/whelping-calculator- Standalone whelping date calculator
Litters
GET/POST /api/litters- Litter management
Assets
GET /static/*- Branding and static assetsGET /uploads/*- Dog photos
Upgrading
From Earlier Versions
If you have an old database with sire/dam columns or missing litter_id:
# 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:
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.
Logo not appearing in navbar
Ensure br-logo.png is placed in the static/ directory at the project root. The file is served at /static/br-logo.png.
Heat cycles not showing on calendar
Ensure dogs are registered with sex: 'female' before creating heat cycles. The API validates this and will return a 400 error for male dogs.
Roadmap
✅ Completed
- Docker containerization
- SQLite database with clean schema
- Dog management (CRUD)
- Photo management
- Interactive pedigree visualization
- Litter management
- Parent-child relationships via parents table
- Modern UI redesign
- Search and filtering
- Custom brand logo + gradient title
- Static asset serving
- Trial Pairing Simulator (COI + common ancestors + risk badge)
- Heat Cycle Calendar (month grid + windows + breeding suggestions + whelping estimate)
🔧 In Progress / Up Next
- Health Records System
- Genetic trait tracking
📋 Planned
- PDF pedigree generation
- Advanced search and filters
- Export capabilities
- Progesterone tracking (extended feature)
Full roadmap: ROADMAP.md
Recent Updates
March 9, 2026 - Heat Cycle Calendar & Trial Pairing Simulator (v0.5.0)
- Added: Full month grid heat cycle calendar with color-coded phase windows
- Added: Start Heat Cycle modal (click any day or header button)
- Added: Cycle Detail modal with breeding window breakdown and inline breeding date logging
- Added: Whelping estimate (earliest/expected/latest) auto-calculated from breeding date
- Added: Trial Pairing Simulator at
/pairingwith COI%, risk badge, common ancestors table - Added:
GET /api/breeding/heat-cyclesandGET /api/breeding/heat-cycles/:id/suggestionsendpoints - Moved: Progesterone tracking to extended roadmap
March 9, 2026 - Branding & Header Improvements (v0.4.1)
- Added: Custom
br-logo.pngbrand logo in navbar - Added: Gold-to-rusty-red gradient on "BREEDR" title text
- Added:
/staticdirectory for branding assets served by Express - Fixed: Vite dev proxy for
/staticroutes - Fixed:
/staticand/uploadspaths no longer fall through to React router - Fixed: Brand logo sized as fixed 1:1 square for proper aspect ratio
March 9, 2026 - Clean Database Schema (v0.4.0)
- 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
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
- Added: Sex-colored icons (blue ♂, pink ♀)
- Added: Registration number badges
Documentation
- DATABASE.md - Complete schema documentation
- ROADMAP.md - Development roadmap and features
- INSTALL.md - Detailed installation instructions
- 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