Project and task management REST API built with Django REST Framework.
Base URL: https://taskflow-api.onrender.com/api/
- 🔐 Token authentication — register, login, get token
- 📁 Projects — CRUD, archive action, stats summary endpoint
- ✅ Tasks — CRUD, filter by status/priority/project, search, complete/assign actions
- 💬 Comments — nested under tasks
- 📄 Auto-complete tracking —
completed_atset automatically - 9 passing unit tests (service layer + API layer)
- Python 3.12 · Django 4.2 · Django REST Framework
- PostgreSQL (production) · SQLite (development)
- Nginx + Gunicorn (production) · Render.com deployment
- Token auth · WhiteNoise for static files
taskflow-api/
projects/
models.py # Project model
serializers.py # ProjectSerializer
services.py # Business logic (create, archive, summary)
views.py # ProjectViewSet — HTTP only
urls.py # Router registration
tasks/
models.py # Task, Comment models
serializers.py # Task, TaskList, Comment serializers
services.py # Business logic (create, assign, complete, stats)
views.py # TaskViewSet, CommentViewSet
tests.py # 9 unit + API tests
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/token/ | Get auth token |
| GET/POST | /api/projects/ | List / create projects |
| GET/PUT/DELETE | /api/projects/{id}/ | Project detail |
| POST | /api/projects/{id}/archive/ | Archive project |
| GET | /api/projects/{id}/summary/ | Project stats |
| GET/POST | /api/tasks/ | List / create tasks |
| POST | /api/tasks/{id}/complete/ | Mark complete |
| POST | /api/tasks/{id}/assign/ | Assign to user |
| GET | /api/tasks/my_stats/ | Auth user stats |
See render.yaml — one-click deploy with PostgreSQL.
Built by Ajayi Taiwo John