A production-ready task management system built with Django — featuring authentication, task organization, REST API, JWT security, automated testing, Docker support, and cloud deployment.
- Overview
- Live Demo
- Features
- Technology Stack
- Production Architecture
- Installation & Usage
- Environment Variables
- API Documentation
- Testing
- Project Structure
- Development Workflow
- Contributing
- License
- Author
Django Task Manager is a full-featured production-ready task management web application built with Django.
The project provides a modern productivity platform where users can:
- Create and manage tasks
- Organize tasks using categories
- Track deadlines
- Filter and search tasks
- Manage user accounts
- Access REST API endpoints
- Authenticate using JWT tokens
The interface provides visual deadline indicators:
- 🔴 Overdue tasks
- 🟡 Tasks approaching deadline
- 🟢 Future tasks
This project was designed as both a real-world application and a professional Django portfolio project.
Production deployment:
🌐 https://django-tasks-mh.up.railway.app
Hosted with:
- Railway
- Gunicorn
- WhiteNoise
- Django production configuration
| Feature | Description |
|---|---|
| 🔐 Authentication | Complete registration, login, logout system using Django authentication |
| 📝 Task Management | Full CRUD operations for tasks |
| 🏷️ Categories | User-specific task categories |
| ⏰ Deadline Tracking | Smart deadline status indicators |
| 🔍 Search & Filtering | Search tasks and filter by status, priority, category and dates |
| 📊 Dashboard Statistics | Task overview and productivity statistics |
| 🌍 Internationalization | English and Persian language support |
| 📱 Responsive UI | Bootstrap 5 responsive interface |
| 🔌 REST API | API powered by Django REST Framework |
| 🔑 JWT Authentication | Secure token-based API authentication |
| 📘 Swagger Documentation | OpenAPI API documentation |
| 🧪 100% Test Coverage | Comprehensive automated testing |
| ⚡ CI/CD Pipeline | GitHub Actions automated workflow |
| 🐳 Docker Support | Containerized development and deployment |
| ☁️ Cloud Deployment | Production deployment with Railway |
| Category | Technologies |
|---|---|
| Backend | Python 3.10+, Django 6.0 |
| API | Django REST Framework, Simple JWT |
| API Documentation | drf-spectacular / OpenAPI |
| Frontend | HTML5, CSS3, Bootstrap 5, Font Awesome |
| Database | SQLite (development), PostgreSQL ready |
| Deployment | Railway, Gunicorn |
| Static Files | WhiteNoise |
| Testing | pytest, pytest-django, pytest-cov |
| CI/CD | GitHub Actions, Codecov |
| Code Quality | Black, Ruff, MyPy, Pre-commit |
| Containerization | Docker, Docker Compose |
| Development OS | Arch Linux |
User
|
v
Railway
|
v
Gunicorn
|
v
Django Application
|
+---- Django Templates
|
+---- Django REST API
|
+---- JWT Authentication
|
+---- SQLite/PostgreSQL Database
|
+---- WhiteNoise Static Files
git clone https://github.com/mohammad-hussein-dev/django-task-manager.git
cd django-task-manager
docker-compose up -d
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuserOpen:
http://localhost:8000
Clone repository:
git clone https://github.com/mohammad-hussein-dev/django-task-manager.git
cd django-task-managerCreate virtual environment:
python -m venv .venv
source .venv/bin/activateInstall dependencies:
pip install -r requirements.txtRun migrations:
python manage.py migrateCreate admin user:
python manage.py createsuperuserRun server:
python manage.py runserverProduction settings use environment variables.
Example:
DJANGO_SECRET_KEY=your-secret-key
DJANGO_DEBUG=False
DJANGO_ALLOWED_HOSTS=your-domain.com
DATABASE_URL=postgresql://user:password@host/databaseThe project includes REST API support.
Technologies:
- Django REST Framework
- Simple JWT
- drf-spectacular
Available documentation:
/api/schema/
/api/docs/
Authentication:
JWT Access Token
JWT Refresh Token
The project uses pytest.
Current coverage:
100%
Run tests:
pytestCoverage report:
pytest \
--cov=accounts \
--cov=tasks \
--cov=task_manager \
--cov-report=htmlOpen:
htmlcov/index.html
django-task-manager/
├── accounts/
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ └── tests.py
├── tasks/
│ ├── models.py
│ ├── forms.py
│ ├── views.py
│ ├── admin.py
│ └── tests.py
├── api/
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
├── task_manager/
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── templates/
├── static/
├── tests/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── pyproject.toml
└── README.md
| Branch | Purpose |
|---|---|
| main | Production branch |
| develop | Integration branch |
| feature/* | New features |
| fix/* | Bug fixes |
| hotfix/* | Emergency fixes |
Following Conventional Commits:
feat(tasks): add filtering system
fix(api): resolve authentication issue
refactor(settings): improve production config
docs(readme): update documentation
test(tasks): add coverage tests| Tool | Purpose |
|---|---|
| Black | Code formatting |
| Ruff | Linting |
| MyPy | Type checking |
| Pre-commit | Automated checks |
Install:
pre-commit installRun:
pre-commit run --all-filesContributions are welcome.
Steps:
- Fork repository
- Create feature branch
- Commit changes
- Push branch
- Open Pull Request
Before submitting:
- ✅ Tests pass
- ✅ Code formatted
- ✅ Lint passes
- ✅ Documentation updated
Distributed under the MIT License.
See:
LICENSE
Mohammad Hussein
GitHub:
https://github.com/mohammad-hussein-dev
Telegram:
https://t.me/mohammad_hussein_dev
Email:
"I don't just write code — I simulate the universe."
If you find this project useful, consider giving it a star ⭐
It helps others discover the project.
Built with 🐧💻 in Arch Linux