A baby care tracking web application for monitoring feeding, diapers, and sleep patterns. Built with Django 6.0 (backend) and Angular 21 (frontend).
- 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
See docs/SCREENSHOTS.md for app screenshots (sign up, dashboard, analytics, and more).
- Podman (recommended) or Docker
- Make
- Git
To use Docker instead of Podman, set RUNTIME=docker in the root Makefile or use Docker Compose directly.
# 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- Frontend: http://localhost:4200
- Backend API: http://localhost:8000/api/v1/
- Django Admin: http://localhost:8000/admin/
With make run already running:
# Run database migrations
make migrate
# Create an admin user
make createsuperuserpoopyfeed/
├── 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
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 volumesOptional: make redis-cli, make celery-worker, make celery-beat for Redis/Celery inspection or running the scheduler.
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 checksSee DEPLOYMENT.md for complete documentation.
- 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)
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!
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.
make run # Uses podman-compose.yaml- Backend: Deploy to Render (see DEPLOYMENT.md)
- Frontend: Build production image with nginx (see
front-end/Containerfile)
# Backend tests (98%+ coverage, 280+ tests)
make test-backend
# Frontend tests (Vitest)
make test-frontendPre-commit hooks enforce:
- Conventional commit messages
- Code formatting (Black, Prettier)
- Linting (Bandit, ESLint)
- Spell checking (codespell)
make pre-commit-setup # Install hooks- 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)
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
See the LICENSE file for details.