A full-stack recipe management application built with Django and React, featuring a modern UI powered by Mantine and comprehensive recipe library management.
- π Recipe library management
- π Search and filter recipes
- π Create and edit recipes with detailed information
- π¨ Modern, responsive UI built with Mantine
- π User authentication and authorization
- π± Mobile-friendly design
- β‘ Fast API built with Django REST Framework
- π Background task processing with Celery
- π Integration with USDA FoodData Central
- Python 3.11+
- Django 5.2 - Web framework
- Django REST Framework - API
- PostgreSQL 17 - Database
- Redis 7 - Cache and message broker
- Celery - Async task processing
- Gunicorn - WSGI server
- React 18 - UI framework
- TypeScript - Type-safe JavaScript
- Mantine 8 - UI component library
- Vite - Build tool
- TanStack Query - Data fetching
- React Router 7 - Navigation
- Python 3.11 or higher
- Node.js 18 or higher
- Docker and Docker Compose (for containerized setup)
- PostgreSQL 17 (if running without Docker)
- Redis 7 (if running without Docker)
-
Clone the repository
git clone https://gitlab.alexfricker.com/external/recipes-app.git cd recipes-app -
Set up environment
make env
This creates a
.envfile from.env.example. Edit.envto configure your environment variables. -
Build the application
make build
-
Run database migrations
make migrate
-
Start the development server
make runserver
This will:
- Start the PostgreSQL database
- Start the Django API on
http://localhost:8000 - Start the Vite dev server on
http://localhost:5173
-
Set up Python environment
make python-env source .venv/bin/activate -
Set up Node environment
make node-env
-
Configure environment variables
cp .env.example .env # Edit .env with your local database and Redis settings -
Run migrations
python manage.py migrate
-
Start services
# Terminal 1: Start Django python manage.py runserver # Terminal 2: Start Vite dev server cd frontend yarn dev # Terminal 3: Start Celery worker celery -A recipes worker -l info # Terminal 4: Start Celery beat celery -A recipes beat -l info
make env- Set up Python and Node environmentsmake python-env- Set up Python virtual environment onlymake node-env- Install Node dependencies onlymake build- Build Docker imagesmake migrate- Run database migrationsmake migrations- Generate new migrationsmake runserver- Start development servermake shell- Open a shell in the API containermake clean- Remove build artifacts and dependencies
cd frontend
# Start dev server
yarn dev
# Run tests
yarn test
# Type checking
yarn typecheck
# Linting
yarn lint
# Format code
yarn prettier:write
# Build for production
yarn build# Create superuser
python manage.py createsuperuser
# Run tests
python manage.py test
# Open Django shell
python manage.py shell
# Collect static files
python manage.py collectstaticrecipes/
βββ frontend/ # React frontend
β βββ src/ # Source files
β βββ package.json # Node dependencies
βββ recipes/ # Django project
β βββ fdc/ # FoodData Central integration
β βββ library/ # Recipe library app
β βββ settings.py # Django settings
β βββ urls.py # URL routing
βββ docker-compose.yaml # Docker services
βββ Dockerfile # API container
βββ Dockerfile.nginx # Frontend container
βββ Makefile # Development commands
βββ pyproject.toml # Python dependencies
The application is designed to be deployed on Kubernetes using the GitOps manifests in the gitops-demo repository.
See LICENSE file for details.
Alex Fricker - alex@alexfricker.com