jason b8633863b0 fix: add pagination to unbounded GET endpoints
All list endpoints now accept ?page and ?limit (default 50, max 200) and
return { data, total, page, limit } instead of a bare array, preventing
memory and performance failures at scale.

- GET /api/dogs: adds pagination, server-side search (?search) and sex
  filter (?sex), and a stats aggregate (total/males/females) for the
  Dashboard to avoid counting from the array
- GET /api/litters: adds pagination; also fixes N+1 query by fetching
  all puppies for the current page in a single query instead of one per
  litter
- DogList: moves search/sex filtering server-side with 300ms debounce;
  adds Prev/Next pagination controls
- LitterList: uses paginated response; adds Prev/Next pagination controls
- Dashboard: reads counts from stats/total fields instead of array length
- LitterDetail, LitterForm: switch dogs fetch to /api/dogs/all (complete
  list, no pagination, for sire/dam dropdowns)
- DogForm: updates litters fetch to use paginated response shape

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 16:40:28 -05:00
2026-03-11 13:15:01 -05:00
2026-03-12 11:26:48 -05:00
2026-03-09 18:52:42 -05:00
2026-03-08 22:43:11 -05:00
2026-03-12 11:26:48 -05:00
2026-03-12 11:26:48 -05:00
2026-03-12 07:43:30 -05:00
2026-03-08 22:55:08 -05:00
2026-03-12 11:26:48 -05:00
2026-03-12 11:26:48 -05:00

BREEDR - Dog Breeding Genealogy Management System

A reactive, interactive dog breeding genealogy mapping system for professional kennel management.


🌟 Recent Highlights (v0.8.0)

  • Reverse Pedigree — Toggle between ancestors and descendants view for full lineage tracking.
  • External Dog Mapping — Assign parents to external dogs, allowing for full genealogy of outside lines.
  • Universal Parent Selection — Select any dog (kennel or external) as a sire/dam from any profile.

🚀 Quick Start

git clone https://git.alwisp.com/jason/breedr.git
cd breedr
docker-compose up -d --build

Access at: http://localhost:3000

2. Manual Development Setup

npm install
npm run dev

Note: The database initializes automatically on first boot. No manual migrations are required.


🐕 Managing Your Kennel

  • Adding Dogs: Go to the Dogs page, click Add New Dog. You can mark dogs as External if they aren't in your kennel but are needed for pedigree mapping.
  • Champion Tracking: Toggle the Champion status to title dogs. Offspring will automatically display the "Champion Bloodline" badge.
  • Photo Management: Multiple high-quality photos per dog with a compact gallery view.
  • Litter Tracking: Link puppies to breeding records automatically to track weight and health from birth.

🧬 Breeding & Genetics

  • Interactive Pedigree: 5-generation trees with zoom/pan. Toggle the Reverse Pedigree switch to see descendant lineage.
  • Trial Pairing Simulator: Calculate Wright's Inbreeding Coefficient (COI) instantly. Identifies common ancestors and providing risk badges (Low/Moderate/High).
  • Heat Cycles: Track female cycles on the calendar. Includes projected whelping alerts (indigo windows) and expected due dates.

🛠️ Technology Stack

  • Frontend: React 18, Vite, Lucide Icons
  • Visualization: React-D3-Tree, D3.js
  • Backend: Node.js, Express.js
  • Database: SQLite (Zero-config, safe ALTER TABLE migrations)
  • Deployment: Multi-stage Docker

📂 Project Structure

breedr/
├── client/                 # React frontend (Pages: Pedigree, Pairing, Calendar, Settings)
├── server/                 # Node.js backend (Routes: Dogs, Pedigree, Breeding, Settings)
├── static/                 # Branded assets (logos, etc.)
├── data/                   # SQLite database storage (mapped in Docker)
├── uploads/                # Dog photo storage (mapped in Docker)
└── docs/                   # Technical documentation and design history

🕒 Release Summary

  • v0.8.0 (Mar 2026): Reverse Pedigree & External dog parentage.
  • v0.7.0 (In Progress): Health & Genetics (OFA clearances, DNA panels).
  • v0.6.1: COI calculation fix for direct parent×offspring relations.
  • v0.6.0: Champion status tracking & Kennel settings API.

Troubleshooting

  • COI shows 0.00%?: Ensure both parents are mapped and have shared ancestors.
  • Missing Columns?: Restart the server; auto-init guards add columns automatically.
  • Logo not appearing?: Place br-logo.png in the static/ directory.

Full Documentation: Installation Guide | Development & Architecture | API Reference | Roadmap

Description
No description provided
Readme 1.2 MiB
Languages
JavaScript 93.4%
CSS 6.1%
Dockerfile 0.4%
HTML 0.1%