A Gatsby-based website that streams a live YouTube feed of chickens and displays their interactive family tree. Watch the flock from anywhere in the world and explore their genealogy!
- 🎥 Live Stream: 24/7 YouTube livestream embedded on the homepage
- 🌳 Family Tree: Interactive GEDCOM-based genealogy viewer with mobile support
- 📝 GEDCOM Management: Claude Code slash commands for easy chicken record keeping
- 🧬 Breed Tracking: Custom
_BREEDtags for documenting chicken breeds - 📱 Mobile Responsive: Optimized viewing experience on all devices
cd frontend
npm install
npm run developVisit http://localhost:8000 to view the site.
Navigate to http://localhost:8000/family-tree to explore the chicken genealogy.
- CLAUDE.md - AI agent guidance for working with this codebase
- frontend/data/README.md - Comprehensive GEDCOM documentation and management guide
- .claude/commands/ - Claude Code slash commands for GEDCOM management
Use Claude Code slash commands to manage the flock:
/add-chicken Buttercup Sunshine # Add new chicken
/update-chicken Henrietta # Update existing chicken
/add-family Duke, Ruby # Create family relationships
/mark-deceased Nugget # Mark chicken as deceased
/list-chickens # List all chickens
/validate-flock # Validate GEDCOM fileSee frontend/data/README.md for complete GEDCOM management documentation.
coopcast.tv/
├── .claude/ # Claude Code tooling (agents & slash commands)
├── frontend/ # Gatsby application
│ ├── data/ # GEDCOM family tree data
│ ├── src/
│ │ ├── components/ # React components (layout, FamilyTree)
│ │ ├── pages/ # Gatsby pages (index, family-tree, 404)
│ │ ├── utils/ # Shared utilities (gedcom-validator)
│ │ └── __tests__/ # Jest tests
│ ├── gatsby-config.js # Gatsby configuration
│ └── gatsby-node.js # Build-time GEDCOM parsing
├── scripts/ # Utility scripts (validate-gedcom.js)
└── .github/workflows/ # CI/CD (ESLint, tests)
- Frontend: Gatsby v5, React 18
- Video: react-youtube
- Family Tree: d3-org-chart
- GEDCOM Parser: read-gedcom
- Testing: Jest, React Testing Library
- CI/CD: GitHub Actions
All commands run from frontend/ directory:
npm run develop # Start dev server (http://localhost:8000)
npm run build # Build for production
npm run serve # Serve production build locally
npm test # Run Jest tests
npm run lint # Run ESLint
npm run clean # Clean Gatsby cachecd frontend
npm test # Run all tests
node ../scripts/validate-gedcom.js data/chickens.ged # Validate GEDCOMWhen dev server is running: http://localhost:8000/___graphql
Query chicken data:
{
allChicken {
nodes {
fullName
breed
birthDate
isDeceased
notes
}
}
}The chicken family tree is stored in frontend/data/chickens.ged using the GEDCOM 5.5.1 format.
- Custom
_BREEDTag: Tracks chicken breeds (e.g., "Blue Cochin", "Rhode Island Red") - Human-Friendly Notes: NOTE fields use chicken names, not internal @ID@ references
- Cross-Reference Validation: Automatic validation of family relationships
- Statistics Tracking: Living vs deceased counts, family structure
The family tree displays:
- 🐓 Roosters / 🐔 Hens / 🥚 Unknown gender
- 🏆 Breed information
- 🎂 Birth dates
- 🪦 Deceased markers with dates
- 📝 Notes (truncated on mobile)
Fully expanded by default with touch gestures on mobile (pinch to zoom, swipe to pan).
- Make changes to chicken records using slash commands or manual GEDCOM editing
- Validate:
node scripts/validate-gedcom.js frontend/data/chickens.ged - Test:
npm testfromfrontend/ - Build:
npm run buildfromfrontend/
This project combines experimentation with GatsbyJS and the desire to watch chickens from anywhere. 🐔❤️