A Dockerized version of the Taski task-planning application—a full-stack web app featuring a React frontend, a Django REST backend, PostgreSQL, an Nginx reverse proxy, and Gunicorn.
Taski is an organizer app that allows users to create, update, and manage tasks—marking them as completed or pending. This Docker-based version simplifies deployment and environment setup via containers.
- Fully containerized backend and frontend using Docker
- API built with Django and Django REST Framework
- Modern frontend with React SPA
- PostgreSQL database management
- Gunicorn application server
- Nginx for reverse proxy and static file serving
- Streamlined with Docker Compose for easy orchestration
[User] ←→ Nginx ←→ React Frontend (SPA) ↓ Gunicorn ←→ Django REST API ←→ PostgreSQL
Containers:
- frontend (React SPA)
- backend (Django + REST API served by Gunicorn)
- db (PostgreSQL)
- nginx (Reverse proxy / static files)
- Docker
- Docker Compose
-
Clone the repository:
git clone https://github.com/salahamran/taski-docker.git cd taski-docker -
Build and start containers:
docker-compose up --build- Access the application:
- Frontend: http://localhost:3000
- API: http://localhost:8000/api/- Stop services with Ctrl+C, or run:
docker-compose down- Production Deployment
docker-compose -f docker-compose.production.yml up -d --buildEnsure environment variables are securely configured (e.g., in .env.production), and that PostgreSQL volumes and Nginx settings align with your production environment.
Customize these configurations:
Environment Variables:
DJANGO_SETTINGS_MODULE, DATABASE_URL, SECRET_KEY, etc.
Ports: Default ports are 3000 (frontend), 8000 (backend), and 80 (Nginx). Change as needed.
Static Files: The React build outputs and Django static files are managed by Nginx. Modify Nginx config if structure changes.
Volumes: Persisting data (e.g., for PostgreSQL) requires appropriate Docker volumes.
This project is licensed under the MIT License. See the LICENSE file for details.
Forked and maintained by salahamran. Original project by yandex-praktikum.