PoopyFeed
A baby care tracking web application built with Django. PoopyFeed helps parents and caregivers monitor feeding, diaper changes, and sleep patterns for infants.
Features
Tracking
- Feedings: Track bottle (amount in oz) and breast (duration, side) feedings
- Diapers: Log wet, dirty, or both diaper changes
- Naps: Track sleep times
Child Sharing
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
Other Features
- Multi-Child Support: Manage multiple children per account
- *…
PoopyFeed
A baby care tracking web application built with Django. PoopyFeed helps parents and caregivers monitor feeding, diaper changes, and sleep patterns for infants.
Features
Tracking
- Feedings: Track bottle (amount in oz) and breast (duration, side) feedings
- Diapers: Log wet, dirty, or both diaper changes
- Naps: Track sleep times
Child Sharing
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
Other Features
- Multi-Child Support: Manage multiple children per account
- Email Authentication: Secure email-based login via django-allauth
Planned
- 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
Technology Stack
- 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)
Requirements
System Dependencies
- Python 3.13+ (3.14 recommended)
- PostgreSQL 14+ (for container/production deployment)
- Podman or Docker with compose support (for local container development)
Python Dependencies
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)
Installation
Container-Based Development (Recommended)
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
Local Development (without 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
Usage
- 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
Sharing Access with Others
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.
Admin Panel
Access the admin panel at http://localhost:8000/admin/ (requires superuser).
To create a superuser in containers:
podman compose exec web python manage.py createsuperuser
Deployment
Render (Recommended)
Deploy to Render using the included render.yaml Blueprint:
Fork this repository to your GitHub account 1.
Create a new Render account and connect your GitHub 1.
Click "New" > "Blueprint" and select your forked repository 1.
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.
Self-Hosting
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
Contributing
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.