A baby care tracking web application for monitoring feeding, diapers, and sleep patterns. Built with Django 6.0 (backend) and Angular 21 (frontend).
Features
- Multi-child support: Track multiple children from one account
- Child sharing: Share access with co-parents and caregivers
- Tracking: Monitor feedings (bottle/breast), diaper changes, and naps
- Role-based access: Owner, co-parent, and caregiver roles
- REST API: Token-authenticated API for frontend and mobile apps
- PWA ready: Progressive Web App capabilities
- Analytics: Visualize feeding, diaper, and sleep trends
- Data Export: Export data as CSV or PDF
Screenshots
See docs/SCREENSHOTS.md for app screenshots (sign up, dashboard, analytics, and more).
Quick Start
Prerequisites
- Podman (recommended) or Docker
- Make
- Git
To use Docker instead of Podman, set RUNTIME=docker in the root Makefile or use Docker Compose directly.
Installation
# Clone repository with submodules git clone https://github.com/DavidMiserak/poopyfeed.git cd poopyfeed git submodule update --init --recursive # First-time setup (install hooks, build images) make setup # Start all services (frontend, backend, database, Redis, Celery worker) make run
Access
- Frontend: http://localhost:4200
- Backend API: http://localhost:8000/api/v1/
- Django Admin: http://localhost:8000/admin/
Initial Setup
With make run already running:
# Run database migrations make migrate # Create an admin user make createsuperuser
Project Structure
poopyfeed/
├── front-end/ # Angular 21 frontend (submodule)
│ ├── poopyfeed/ # Angular application
│ ├── Containerfile # Multi-stage Docker build
│ └── Makefile # Frontend commands
├── back-end/ # Django 6.0 backend (submodule)
│ ├── django_project/ # Django settings
│ ├── accounts/ # User management
│ ├── children/ # Child profiles & sharing
│ ├── diapers/ # Diaper tracking
│ ├── feedings/ # Feeding tracking
│ ├── naps/ # Nap tracking
│ ├── Containerfile # Django container
│ └── Makefile # Backend commands
├── android/ # Android app (Kotlin)
├── docs/ # Design and persona documentation
├── podman-compose.yaml # Orchestration (frontend, backend, db, Redis, Celery)
├── Makefile # Root commands
├── DEPLOYMENT.md # Full deployment guide
└── README.md # This file
Development
Common Commands
make run # Start all services make stop # Stop all services make restart # Stop and start make logs # View all logs make logs-backend # Backend logs only make logs-frontend # Frontend logs only make migrate # Run database migrations make test-backend # Run Django tests (with coverage) make test-frontend # Run Vitest tests make clean # Stop and remove volumes
Optional: make redis-cli, make celery-worker, make celery-beat for Redis/Celery inspection or running the scheduler.
Android
Build and test the Android app (requires make run for backend):
make build-android # Build debug APK make test-android # Run unit tests make lint-android # Run lint checks
See DEPLOYMENT.md for complete documentation.
Architecture
- Frontend: Angular 21 (standalone components, signals, SSR)
- Backend: Django 6.0 + Django REST Framework
- Database: PostgreSQL 14
- Redis: Cache, sessions, Celery broker (started with
make run) - Celery: Background tasks (e.g. PDF export); worker runs with
make run - Authentication: django-allauth (email-based) + Token auth (API)
- Styling: Tailwind CSS v4
- Testing: Vitest (frontend), Django TestCase (backend)
Hot Reload
Both frontend and backend support hot reload during development:
- Edit files in
front-end/poopyfeed/orback-end/ - Changes automatically reload in containers
- No rebuild needed!
API Integration
The frontend connects to the backend API via a proxy configuration:
// Frontend makes requests to /api/v1/* this.http.get("/api/v1/children/"); // Proxy forwards to http://backend:8000/api/v1/children/
See front-end/docs/API.md for complete API documentation.
Deployment
Local Development
make run # Uses podman-compose.yamlProduction
- Backend: Deploy to Render (see DEPLOYMENT.md)
- Frontend: Build production image with nginx (see
front-end/Containerfile)
Testing
# Backend tests (98%+ coverage, 280+ tests) make test-backend # Frontend tests (Vitest) make test-frontend
Code Quality
Pre-commit hooks enforce:
- Conventional commit messages
- Code formatting (Black, Prettier)
- Linting (Bandit, ESLint)
- Spell checking (codespell)
make pre-commit-setup # Install hooksDocumentation
- DEPLOYMENT.md - Full deployment guide
- back-end/README.md - Backend (Django) documentation and commands
- front-end/README.md - Frontend (Angular) documentation and commands
- front-end/docs/API.md - REST API reference
- docs/DESIGN_SYSTEM.md - Design system
- docs/SCREENSHOTS.md - All app screenshots
- docs/personas/ - User personas (mom, dad, caretaker)
Technology Stack
Backend:
- Django 6.0
- Django REST Framework
- Djoser (API auth)
- django-allauth (web auth)
- PostgreSQL 14
- Redis (cache, sessions, Celery broker)
- Celery (background tasks)
- Python 3.13
Frontend:
- Angular 21
- TypeScript 5.9 (strict mode)
- Tailwind CSS v4
- Vitest (testing)
- Server-Side Rendering (SSR)
DevOps:
- Podman (default) or Docker
- Compose orchestration
- Multi-stage containers
- Pre-commit hooks
- Make automation
License
See the LICENSE file for details.