Files
breedr/SPRINT1_PEDIGREE_COMPLETE.md

7.7 KiB

Sprint 1 Complete: Interactive Pedigree Tree

What Was Built

A fully interactive, production-ready pedigree tree visualization system for BREEDR.

Components Created

  1. PedigreeTree.jsx - Core D3 tree visualization component

    • Interactive zoom and pan controls
    • Color-coded nodes (blue for males, pink for females)
    • Click-to-navigate functionality
    • Responsive design
    • COI display with risk indicators
    • Legend for visual reference
  2. PedigreeTree.css - Complete styling

    • Polished UI with controls overlay
    • Mobile-responsive breakpoints
    • Print-friendly styles
    • Smooth animations and transitions
  3. pedigreeHelpers.js - Utility functions

    • transformPedigreeData() - Converts API data to D3 tree format
    • countAncestors() - Counts total ancestors
    • getGenerationCounts() - Analyzes generation distribution
    • isPedigreeComplete() - Checks pedigree completeness
    • findCommonAncestors() - Identifies shared ancestors
    • formatCOI() - Formats COI with risk levels
    • getPedigreeCompleteness() - Calculates completeness percentage
  4. PedigreeView.jsx - Full page implementation

    • Stats dashboard showing COI, completeness, generation selector
    • Loading and error states
    • Breadcrumb navigation
    • Help tips for users
    • Responsive grid layout

Features

Interactive Controls

  • Zoom In/Out buttons
  • Reset view button
  • Mouse wheel zoom
  • Click and drag to pan
  • Touch support for mobile

Visual Enhancements

  • Color-coded by sex (♂ blue, ♀ pink)
  • Registration numbers displayed
  • Birth years shown
  • Clean, modern design
  • Smooth animations

Data Display

  • COI with color-coded risk levels:
    • Green (≤5%): Low inbreeding, excellent diversity
    • Yellow (5-10%): Moderate inbreeding, acceptable with caution
    • Red (>10%): High inbreeding, consider genetic diversity
  • Pedigree completeness percentage
  • Generation selector (3, 4, or 5 generations)
  • Progress bars and visual indicators

Navigation

  • Click any node to view that dog's profile
  • Back to Profile button
  • Breadcrumb navigation
  • Deep linking support

Responsive Design

  • Desktop optimized
  • Tablet friendly
  • Mobile responsive
  • Print-friendly layout

Installation & Setup

1. Install Dependencies

The required dependencies should already be in package.json:

cd client
npm install

Key dependencies:

  • react-d3-tree: ^3.6.2 - D3 tree visualization
  • date-fns: ^2.30.0 - Date formatting utilities
  • d3: ^7.9.0 - D3 core library

2. Deploy the Branch

git checkout feature/enhanced-litters-and-pedigree
git pull origin feature/enhanced-litters-and-pedigree

3. Restart the Application

With Docker:

docker-compose down
docker-compose up --build -d

Without Docker:

# Terminal 1 - Server
cd server
npm install
npm run dev

# Terminal 2 - Client
cd client
npm install
npm run dev

4. Access the Pedigree

Navigate to any dog and access the pedigree at:

http://localhost:5173/pedigree/:dogId

For example:

http://localhost:5173/pedigree/1

Testing Checklist

Basic Functionality

  • Pedigree page loads without errors
  • Tree displays correctly for dogs with parents
  • Nodes show correct information (name, registration, birth year)
  • Colors are correct (blue=male, pink=female)

Interactive Controls

  • Zoom in button works
  • Zoom out button works
  • Reset button returns to default view
  • Mouse wheel zoom works
  • Click and drag panning works

Navigation

  • Clicking a node navigates to that dog's profile
  • Back to Profile button works
  • Generation selector changes displayed generations

Data Display

  • COI displays correctly with proper color
  • Pedigree completeness calculates accurately
  • Stats update when generation selector changes

Edge Cases

  • Handles dogs with no parents gracefully
  • Handles dogs with only one parent
  • Handles incomplete pedigrees
  • Shows appropriate message when no data available

Responsive Design

  • Works on desktop (1920x1080)
  • Works on tablet (768x1024)
  • Works on mobile (375x667)
  • Print view displays correctly

API Requirements

The pedigree tree depends on these existing API endpoints:

Required Endpoints

  1. GET /api/pedigree/:id - Get pedigree tree

    • Must return nested sire/dam objects
    • Should include: id, name, sex, registration_number, birth_date
    • Example response:
    {
      "id": 1,
      "name": "Dog Name",
      "sex": "male",
      "registration_number": "ABC123",
      "birth_date": "2020-01-01",
      "sire": {
        "id": 2,
        "name": "Father Name",
        "sex": "male",
        "sire": { ... },
        "dam": { ... }
      },
      "dam": {
        "id": 3,
        "name": "Mother Name",
        "sex": "female",
        "sire": { ... },
        "dam": { ... }
      }
    }
    
  2. GET /api/pedigree/:id/coi - Get COI calculation

    • Returns coefficient of inbreeding
    • Example response:
    {
      "coi": 3.125,
      "generations": 5
    }
    

Known Limitations

  1. Performance: Very large pedigrees (>100 nodes) may experience slowdown
  2. COI: Calculation requires complete pedigree data
  3. Mobile: Tree may be difficult to navigate on very small screens
  4. Print: May require landscape orientation for best results

Future Enhancements (Not in Sprint 1)

  • PDF export functionality
  • Highlight common ancestors between two dogs
  • Show inbreeding loops visually
  • Ancestor search/filter
  • Save custom tree views
  • Share pedigree links
  • Printable certificate template

Troubleshooting

Tree Doesn't Display

  • Check browser console for errors
  • Verify API endpoint /api/pedigree/:id is working
  • Check that dog has parent data in database
  • Ensure dependencies are installed (npm install)

Zoom/Pan Not Working

  • Check that react-d3-tree is properly installed
  • Clear browser cache and reload
  • Try in different browser

COI Not Showing

  • Verify /api/pedigree/:id/coi endpoint exists
  • Check that pedigree has sufficient data (at least 3 generations)
  • COI may be null for incomplete pedigrees

Styling Issues

  • Ensure PedigreeTree.css is imported in component
  • Check that CSS variables are defined in main stylesheet
  • Clear browser cache

Files Modified/Created

New Files

client/src/
├── components/
│   ├── PedigreeTree.jsx          ✅ NEW
│   └── PedigreeTree.css          ✅ NEW
├── utils/
│   └── pedigreeHelpers.js        ✅ NEW
└── pages/
    └── PedigreeView.jsx           ✅ UPDATED

Modified Files

  • client/package.json - Dependencies already present
  • client/src/pages/PedigreeView.jsx - Rebuilt from placeholder

Next Steps

Sprint 1 is COMPLETE

Ready to proceed with Sprint 2:

  • Litter Detail Page with comprehensive information
  • Countdown Widget for whelping dates
  • Enhanced Litter List with filters and sorting
  • Database Migration for additional litter fields

Support

If you encounter issues:

  1. Check browser console for errors
  2. Review this documentation
  3. Check API endpoints are responding
  4. Verify database has parent relationships

Success Criteria Met

  • Interactive tree with D3 visualization
  • 5-generation display (configurable to 3, 4, or 5)
  • Zoom, pan, and navigation controls
  • Color-coded nodes by sex
  • COI display with risk indicators
  • Pedigree completeness tracking
  • Click-to-navigate functionality
  • Responsive design
  • Loading and error states
  • Helper utilities for data transformation
  • Print-friendly layout

Sprint 1: COMPLETE AND READY FOR TESTING 🎉