Garenne is a modern and comprehensive web application for rabbit breeding management, developed with React 19, TypeScript, and Material-UI v5. It provides breeders with a professional solution to efficiently manage their animals, litters, weighings, treatments and much more, all in offline mode with secure local storage.
- β Full CRUD: Create, view, edit and delete animals
- β Detailed sheets: Comprehensive view with tabs (Overview, Reproduction, Weighings, Health)
- β Advanced search: By name, identifier, breed, status and sex with combined filters
- β Kinship management: Mother/father linking with automatic validation and interactive family tree
- β Multiple statuses: Growth, Breeder, Retired, Deceased, Consumed with automatic transitions
- β Unique identifiers: Support for tattoos, QR codes and custom identifiers
- β Tag system: Custom tags for flexible animal organization
- β Cage management: Assignment and tracking of animal locations
- β Printable sheets: Generation of detailed sheets for each animal with QR code
- β Consumption: Management of slaughtered animals with date and consumption weight
- β Complete weighings: Weight tracking with history, growth charts and quick entry
- β Medical treatments: Care management with automatic withdrawal periods and quick entry
- β Detailed litters: Birth recording, automatic estimated weaning (28 days), mortality
- β Advanced reproduction: Mating tracking, gestation diagnosis, kindling planning
- β KPI statistics: Dashboards with key metrics and population charts
- β Mortality tracking: Death recording with suspected causes and necropsy
- β Performance metrics: Automatic calculation of reproduction and survival performance
- β Export/Import: Data backup and restoration with multiple formats
- β Sample data: Automatic generation for quick discovery
- β Responsive design: Optimized for mobile, tablet and desktop
- β Material Design 3: Modern interface following the latest guidelines
- β Adaptive themes: Light/dark support with automatic system detection
- β Intuitive navigation: Adaptive navigation bar with shortcuts
- β Complete PWA: Installable as native application, works offline
- β Accessibility: Support for screen readers and keyboard navigation
- β Performance dashboards: Real-time KPIs with interactive charts and trend analysis
- β Individual performance reports: Detailed metrics for growth, reproduction, and health
- β Goal tracking system: Set and monitor breeding objectives with automatic progress calculation
- β Configurable alerts: Smart notifications for withdrawal periods, breeding schedules, and anomalies
- β Comparative analytics: Benchmarking against averages and historical data
- β Automated scoring: Performance rankings and recommendations for improvement
- β Quick Actions hub: Centralized page for rapid data entry and common tasks
- β Express entry modals: Quick weight recording, treatment logging, and breeding notes
- β Smart navigation: Breadcrumbs and keyboard shortcuts for efficient workflow
- β Bulk operations: Batch import functionality with validation and preview
- β Intelligent search: Advanced filtering with saved filter sets and fuzzy matching
- β Secure local storage: Encrypted and compressed data
- β Offline mode: Complete functionality without internet connection
- β Optimized performance: Fast loading, automatic code splitting
- β Robust validation: Consistency and data integrity checks
- Node.js 18.0+ (download here)
- npm 8+ or yarn 1.22+
- Git for repository cloning
- Modern browser (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
# 1. Clone the repository
git clone https://github.com/hankerspace/garenne.git
cd garenne
# 2. Install dependencies
npm install
# 3. Start the application in development
npm run dev
# 4. Open in browser
# The application will be accessible at http://localhost:5173# π§ Development
npm run dev # Start development server with hot-reload
npm run test # Run tests in watch mode
npm run test:ui # Graphical interface for tests
# ποΈ Build and Production
npm run build # Build for production (dist/ folder)
npm run preview # Preview production build
npm run test:run # Run all tests once
npm run test:coverage # Test coverage report
# π Code Quality
npm run lint # Analyze code with ESLint
npm run lint:fix # Automatically fix ESLint errors
npm run type-check # TypeScript verification without buildTo deploy the application, check our Deployment Guide which covers:
- GitHub Pages
- Netlify / Vercel
- Docker
- PWA configuration
- Performance optimizations
- Sample data: Click "Load sample data" to discover the application
- First animal: Or directly create your first animal
- Click the "+" button in the bottom right or "Create my first animal"
- Fill in basic information (name, identifier, sex, etc.)
- Define origin (born here/purchased) and kinship if applicable
- Save
The animal list displays all essential information with search and filtering options:
- Click "Details" on an animal card
- Navigate between tabs:
- Overview: General information and kinship
- Reproduction: Mating history (coming soon)
- Weighings: Weight tracking
- Health: Treatments and withdrawal periods
- In animal details, click the "Weighings" tab
- View weight evolution with interactive charts
- Add new weighings with the "New weighing" button
- Check statistics (current weight, total gain, average daily gain)
- Click "Edit" on the card or in details
- Modify desired fields
- Save changes
- In animal details, view the interactive family tree
- Explore family relationships across multiple generations
- Click on an animal in the tree to navigate to its details
- Quick weighing: Floating action button to quickly add a weighing
- Quick treatment: Express entry for medical treatment
- Printable sheets: Instant generation of animal sheet with QR code
- Assign cages to animals during creation/modification
- Track cage occupancy from the dashboard
- Organize your breeding facilities efficiently
- Create custom tags to organize your animals
- Filter by tags for specific groups
- Use colors for quick visual identification
- Search bar: Search by name, identifier or breed
- Status filter: All, Breeders, Growing, Retired
- Sex filter: All, Females, Males
- Frontend: React 19 + TypeScript 5.8+ (strict mode)
- UI Framework: Material-UI v5 with Material Design 3
- Global State: Zustand v5 (simple and performant store)
- Routing: React Router v7 with data loading
- Validation: Zod + React Hook Form for type-safe forms
- Build Tool: Vite 7.0+ with ultra-fast HMR
- PWA: Vite PWA Plugin with Workbox
- Tests: Vitest + Testing Library + jsdom
- Linting: ESLint 9 + TypeScript ESLint
Local Storage (LocalStorage + LZ-String compression)
βββ animals[] # Animal registry with genealogy and tags
βββ weights[] # Weighing history with growth analytics
βββ treatments[] # Treatments and withdrawal periods
βββ litters[] # Litters with automatic estimated weaning
βββ breedings[] # Matings and reproduction planning
βββ mortalities[] # Death tracking and causes
βββ cages[] # Location management and occupancy tracking
βββ tags[] # Custom tag system with colors
βββ goals[] # Breeding objectives and progress tracking
βββ alerts[] # Configurable alerts and notifications
βββ performanceMetrics[] # Reproduction performance metrics
βββ savedFilters[] # User-saved filter configurations
βββ settings # User preferences and customizable durations
src/
βββ π components/ # Reusable components
β βββ charts/ # Charts (Recharts) with PopulationChart
β βββ modals/ # Specialized modals (QuickWeight, QuickTreatment, Breeding, Mortality)
β βββ ErrorBoundary.tsx # Global error handling
β βββ GenealogyTree.tsx # Interactive family tree
β βββ PrintableRabbitSheet.tsx # Printable sheets with QR code
β βββ QRCodeDisplay.tsx # QR code display
βββ π pages/ # Main application pages
β βββ Animals/ # π° Animal management with advanced genealogy
β βββ Litters/ # πΆ Litter management with estimated weaning
β βββ Statistics/ # π Detailed metrics and performance analytics
β βββ Treatments/ # π Treatment management with withdrawal tracking
β βββ QuickActionsPage.tsx # β‘ Quick Actions hub for rapid data entry
β βββ GoalsTrackingPage.tsx # π― Goals and objectives tracking
β βββ DashboardPage.tsx # π Main dashboard with real-time KPIs
β βββ ReproductionPlanningPage.tsx # π
Breeding calendar and planning
β βββ Tags/ # π·οΈ Tag management and organization
β βββ Cages/ # π Cage management and occupancy
β βββ Settings/ # βοΈ Configuration and customizable durations
βββ π services/ # Business services and data generation
β βββ qrcode.service.ts # QR code generation
β βββ statistics.service.ts # Performance calculations
β βββ search.service.ts # Advanced search with fuzzy matching
β βββ export.service.ts # Multi-format export (JSON, CSV, Excel)
β βββ backup.service.ts # Backup and restoration
β βββ i18n.service.ts # Multilingual support
β βββ alerting.service.ts # Smart alerts and notifications
β βββ performance-report.service.ts # Individual performance analysis
β βββ metrics-monitoring.service.ts # Real-time metrics tracking
β βββ genealogy.service.ts # Pedigree and family tree services
β βββ batch-import.service.ts # Bulk data import with validation
β βββ cache.service.ts # Intelligent caching system
β βββ storage-abstraction.service.ts # Storage layer abstraction
β βββ error-interceptor.service.ts # Error handling with retry logic
βββ π state/ # Zustand store and selectors
βββ π utils/ # Utilities (dates, validation, storage)
βββ π models/ # TypeScript types and extended interfaces
βββ π hooks/ # Custom hooks (useTranslation)
βββ π test/ # Unit and integration tests
- LocalStorage with automatic LZ-String compression (~60% reduction)
- Automatic backup on every state change
- Backup and restoration via JSON export/import
- Consistency validation on data loading
- Automatic migration during schema updates
- Automatic code splitting by route
- Lazy loading of heavy components
- Memoization with strategic React.memo and useMemo
- Virtual scrolling for large lists
- Debouncing of searches and filters
{
"recommendations": [
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-typescript-next",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode.vscode-react-javascript-snippets"
]
}- TypeScript strict mode enabled with all checks
- ESLint 9 with modern configuration and React rules
- Path mapping configured for absolute imports
- Auto-fix on save configured
For detailed guidelines, check CONTRIBUTING.md.
- Unit Tests: Utils, services, store actions (95%+ coverage)
- Component Tests: Rendering, interactions, props (85%+ coverage)
- Integration Tests: Complete user flows (75%+ coverage)
- Service Tests: All 14+ services with comprehensive test coverage
npm run test # Watch mode for development
npm run test:ui # Vitest graphical interface
npm run test:run # Complete CI/CD execution
npm run test:coverage # Detailed coverage report- Usage Guide - How to use all features
- Screenshots and Demos - Visual overview of interface
- API Reference - Complete API and data model documentation
- Contribution Guide - Development workflow and standards
- Deployment Guide - Production deployment instructions
// Animal management
const animal = addAnimal({ name: "Fluffy", sex: Sex.Female, status: Status.Grow });
updateAnimal(animal.id, { status: Status.Reproducer, cage: "A1" });
consumeAnimal(animal.id, { consumedDate: "2024-01-01", consumedWeight: 2500 });
deleteAnimal(animal.id);
// Weighings with quick entry
const weight = addWeight({ animalId: animal.id, weight: 1200, date: "2024-01-01" });
quickAddWeight(animal.id, 1300); // Quick entry with current date
// Treatments with quick entry
const treatment = addTreatment({
animalId: animal.id,
product: "RHD Vaccination",
withdrawalUntil: "2024-02-01"
});
quickAddTreatment(animal.id, "Dewormer"); // Quick entry
// Litters with estimated weaning
const litter = addLitter({
motherId: animal.id,
kindlingDate: "2024-01-01",
bornAlive: 8,
estimatedWeaningDate: "2024-01-29" // Calculated automatically
});
// Cage and tag management
const cage = addCage({ name: "A1", capacity: 1, location: "Building A" });
const tag = addTag({ name: "Elite Breeder", color: "#4CAF50" });
addTagToAnimal(animal.id, tag.id);
// Mortality tracking
const mortality = addMortality({
animalId: animal.id,
date: "2024-01-01",
suspectedCause: "Disease",
necropsy: false
});
// Export/Import enhanced
const backup = exportData(); // JSON string
const csvData = exportToCSV(animals); // CSV export
const excelData = exportToExcel(animals); // Excel export
importData(backup); // Restore from backup
// New services - Goals and alerts
const goal = addGoal({
title: "Increase average weight",
type: GoalType.GROWTH,
targetValue: 2500,
period: GoalPeriod.MONTHLY,
deadline: "2024-12-31"
});
// Configurable alerting system
const alert = AlertingService.getInstance().createAlert({
title: "Withdrawal period expired",
message: "Fluffy's treatment is completed",
severity: "medium",
actions: [{ label: "View details", action: () => navigate(`/animals/${animal.id}`) }]
});
// Individual performance reports
const report = PerformanceReportService.generateReport(animal.id);
console.log(report.performance.overallScore); // Score 0-100
console.log(report.performance.recommendations); // Personalized recommendations
// Cache and monitoring services
CacheService.getInstance().set('animals-stats', kpis, 300000); // Cache 5min
const metrics = MetricsMonitoringService.getInstance().getMetrics();// KPIs and statistics
const kpis = getKPIs(state); // Main metrics
const activeAnimals = getActiveAnimals(); // Living animals
const breeders = getBreeders(); // Breeding animals
const consumedAnimals = getConsumedAnimals(); // Consumed animals
// Advanced filters and searches
const females = getAnimalsByStatus(Status.Reproducer);
const recent = getRecentWeights(30); // Last 30 days
const alerts = getActiveAlerts(); // Active withdrawal alerts
const cageOccupancy = getCageOccupancy(); // Cage occupancy
const taggedAnimals = getAnimalsByTag("Elite Breeder");
// Performance metrics
const performanceMetrics = getPerformanceMetrics(animalId);
const populationTrends = getPopulationTrends(); // Population charts
const mortalityStats = getMortalityStatistics(); // Mortality statistics
const weaningProgress = getWeaningProgress(); // Current weaningFor complete documentation, see API.md.
- Local storage only: No data sent to the internet
- No authentication: Single-user local application
- Recommended backup: Regular data export
The application automatically monitors treatment withdrawal periods and displays appropriate alerts.
Automatic deployment to GitHub Pages will be configured via GitHub Actions.
npm run buildFiles will be generated in the dist/ folder.
- Check that the bug is not already reported
- Create an issue with:
- Detailed description
- Reproduction steps
- Screenshots if relevant
- Create an issue with "enhancement" label
- Describe the need and proposed solution
- Wait for feedback before starting development
- Fork the project
- Create a branch for your feature
- Commit your changes
- Create a pull request with detailed description
- π° Complete animal management with CRUD, kinship, statuses and consumption
- π Weighings and growth curves with interactive charts and quick entry
- π Treatments and withdrawal periods with automatic alerts and quick entry
- πΆ Litters and reproduction with automatic estimated weaning and matings
- π·οΈ Custom tag system for flexible organization
- π Cage management with assignment and occupancy tracking
- π Advanced statistics with performance metrics and population charts
- 𧬠Interactive family tree to visualize family relationships
- π Printable sheets with QR codes for each animal
- β°οΈ Mortality tracking with causes and necropsy
- π Multi-format export/import: JSON, CSV, Excel
- π Multilingual support with integrated i18n service
- βοΈ Customization: configurable durations (gestation, weaning, reproduction)
- π¨ Responsive interface Material Design 3 with themes
- πΎ Robust local storage with compression and validation
- π± Complete PWA installable and working offline
- π§ͺ Automated tests with >85% coverage
- π― Goal tracking system with progress monitoring and alerts
- β‘ Quick Actions hub for rapid data entry and workflow optimization
- π Smart alerting system with configurable thresholds and notifications
- π Individual performance reports with detailed analytics and recommendations
- π Advanced export/import: Excel, CSV, breeding standard formats
- π Advanced statistics: Performance charts, comparisons
- π Intelligent search: Complex filters, fuzzy search with saved filter sets
- π·οΈ Tag system: Custom organization with colors and categories
- π― Goal tracking: Breeding objectives with progress monitoring
- β‘ Quick Actions: Rapid data entry and workflow optimization
- π Smart alerts: Configurable notifications and monitoring
- Cage visualization: Graphic representation of facilities with animal locations
- Animal consumption: Management of animals "slaughtered for consumption" with statistics
- Animal performance: Reproduction performance measures, offspring survival rate, performance statistics
- π Internationalization: Multilingual support (FR, EN, ES, DE, PT) for application and readme
- Customization: Precise configuration of gestation duration, weaning duration, reproduction intervals, etc.
- 𧬠Advanced genealogy: Interactive tree with navigation between generations
- π Reproduction planning: Intelligent calendar, reminders
- π― Goals and tracking: Goals tracking, target metrics
- βοΈ Cloud synchronization: Optional automatic backup
- π₯ Multi-users: Family sharing, permissions
- PWA quick actions: Add weighing, add treatment from home screen
- β‘ Performance: Virtual scrolling, improved lazy loading
- π Security: End-to-end encryption, audit trails
- π§ͺ Tests: E2E testing, visual regression testing
- π Monitoring: Usage analytics, error tracking
- π― Accessibility: WCAG 2.1 AAA compliance
- π Eco-responsibility: Carbon optimizations, green coding
- π Translations: Help with internationalization
- π¨ Design: UX/UI improvements, custom icons
- π§ͺ Tests: Real use cases, manual testing
- π Documentation: User guides, tutorial videos
- π Bug hunting: Bug reporting and reproduction
- π‘ Ideas: Feature suggestions, user feedback
To contribute, check CONTRIBUTING.md and join our community!
- First Contentful Paint: < 1.5s
- Largest Contentful Paint: < 2.5s
- First Input Delay: < 100ms
- Cumulative Layout Shift: < 0.1
- Bundle Size: < 1MB (gzipped)
- β‘ Automatic code splitting by route
- π― Lazy loading of heavy components (charts, modals)
- π§ Strategic memoization with React.memo and useMemo
- πΎ LZ-String compression for storage (-60% space)
- π Virtual scrolling for large lists
- β±οΈ Search and filter debouncing (300ms)
- π± Service Worker with intelligent cache
# Check Node.js version
node --version # Must be >= 18
# Clear npm cache
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
# Check ports
lsof -i :5173 # Default Vite port// Check LocalStorage
console.log(localStorage.getItem('garenne-app-state'));
// Check storage quota
navigator.storage.estimate().then(estimate => {
console.log(`Used: ${estimate.usage} / ${estimate.quota}`);
});# Analyze bundle size
npm run build -- --mode analyze
# Profile React components
# Use React DevTools Profiler- β Check that application is served over HTTPS
- β Validate manifest.json in DevTools
- β Confirm Service Worker is active
- β Test PWA installability criteria
Enable debug mode by adding to URL:
http://localhost:5173/?debug=true
This displays:
- π Detailed store logs
- π Performance metrics
- π Debug information in console
- π GitHub Issues: Report a bug
- π¬ Discussions: Questions & Support
- π§ Contact: garenne-support@hankerspace.com
- π Wiki: Extended documentation
This project is under MIT license. See the LICENSE file for more details.
- Material-UI for the UI framework
- React Team for React and development tools
- Zustand for simple and efficient state management
- Vite for fast development tooling
Developed with β€οΈ for the breeding community



