A baby care tracking web application built with Django. PoopyFeed helps parents and caregivers monitor feeding, diaper changes, and sleep patterns for infants.
- Feedings: Track bottle (amount in oz) and breast (duration, side) feedings
- Diapers: Log wet, dirty, or both diaper changes
- Naps: Track sleep times
Share access to children with other accounts via invite links:
- Co-parent role: Full access to view, add, edit, and delete entries
- Caregiver role: Limited access to view and add entries only
- Invite links are reusable and can be deactivated/reactivated
- Only the child's owner can manage sharing settings
- Multi-Child Support: Manage multiple children per account
- Email Authentication: Secure email-based login via django-allauth
- REST API: Mobile app support via Django REST Framework + Djoser
- Pumping: Record pumping sessions and milk output
- Temperature: Record body temperature
- Weight: Monitor growth measurements
- Medication: Log medication administration
- Backend: Django 6.0 (Python web framework)
- Database: PostgreSQL (containers) or SQLite (local dev)
- Frontend: Django Templates with Bootstrap 5 (via crispy-forms)
- Authentication: django-allauth with email-based login
- Containers: Podman (or Docker)
- Python 3.13+ (3.14 recommended)
- PostgreSQL 14+ (for container/production deployment)
- Podman or Docker with compose support (for local container development)
See requirements.txt for full list. Key packages:
- Django 6.0
- django-allauth (authentication)
- django-crispy-forms + crispy-bootstrap5 (forms)
- djangorestframework + djoser (REST API)
- psycopg2-binary (PostgreSQL)
- whitenoise (static files)
- gunicorn (production server)
-
Clone the repository:
git clone <repository-url> cd poopyfeed
-
Set up pre-commit hooks:
make pre-commit-setup
-
Start the containers (web + PostgreSQL):
make run
-
Run migrations:
make migrate
-
Access the application at
http://localhost:8000
Other useful commands:
make test # Run tests
make logs # View container logs
make stop # Stop containers-
Create and activate virtual environment:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt -
Run migrations and start server (uses SQLite):
python manage.py migrate python manage.py runserver
-
Run a single test:
python manage.py test accounts.tests.CustomUserTests.test_create_user
- Access the application at
http://localhost:8000 - Create an account or log in
- Add a child from the main page
- Start logging feedings, diapers, and naps
To share a child's profile with a partner, family member, or caregiver:
- From the child list, click Share on the child you want to share
- Select a role:
- Co-parent: Full access (view, add, edit, delete)
- Caregiver: Limited access (view, add only)
- Click Create Invite Link
- Copy the link and send it to the person you want to share with
- They click the link while logged into their account to gain access
To revoke access, return to the Share page and click Remove next to the user.
Access the admin panel at http://localhost:8000/admin/ (requires superuser).
To create a superuser in containers:
podman compose exec web python manage.py createsuperuserDeploy to Render using the included render.yaml Blueprint:
-
Fork this repository to your GitHub account
-
Create a new Render account and connect your GitHub
-
Click "New" > "Blueprint" and select your forked repository
-
Render will automatically provision:
- A PostgreSQL database (free tier)
- A Python web service running gunicorn
- Auto-generated
DJANGO_SECRET_KEY
-
After deployment, create a superuser via the Render shell:
python manage.py createsuperuser
Required environment variables are configured automatically by the Blueprint.
For self-hosting on your own infrastructure:
- Configure HTTPS for production deployment
- Set up proper backup procedures for PostgreSQL database
- Configure reverse proxy (nginx/Apache) for production deployment
- Set environment variables for secrets (see
podman-compose.yamlfor reference)
Required environment variables:
DATABASE_URL: PostgreSQL connection stringDJANGO_SECRET_KEY: Secret key for cryptographic signingDJANGO_DEBUG: Set tofalsein productionDJANGO_ALLOWED_HOSTS: Comma-separated list of allowed hosts
When contributing to PoopyFeed:
- Run
make pre-commit-setupto install pre-commit hooks - Follow conventional commit format for all commits (enforced by hooks)
- Run
pre-commit run --all-filesbefore committing - Ensure tests pass with
make test
Built with ❤️ for keeping track of the little ones.







