A Django REST Framework-based backend for managing employees, departments, and tasks within an organization.
Managers can assign tasks, upload related files, mark tasks as complete, and employees can view their assigned tasks, as well as upload files related to each task which managers can then download.
This project includes role-based permissions, caching, file uploads, and asynchronous email notifications using Django Q2.
I've created a basic frontend UI using React.js styled with TailwindCSS, just to test out different features of the application. The backend application is fully customizable, scalable, and can be integrated with any kind of frontend UI.
- JWT-based authentication (
djangorestframework-simplejwt) - Custom
Usermodel integrated withEmployeeandDepartmentmodels - Role-based permissions (Manager vs Employee)
- Managers can:
- Assign tasks to employees
- Upload/delete files for tasks
- Mark tasks as complete/incomplete
- Employees can view their tasks and files
- Custom reusable decorator
@cache_response("cache_key") - Automatic cache invalidation on
post_save,post_delete, andm2m_changed - File upload/delete triggers cache invalidation (via signals)
- Automatic email sent to new employees with username and password
- Powered by Django Q2 for background processing
- Supports
console,SMTP, or any email backend
- Three-tier configuration using:
base.py(shared)dev.pyprod.py
- Environment variables loaded from
.env
- File uploads linked to tasks
- Secure permission checks (employees can delete only their own files)
| Component | Technology |
|---|---|
| Backend Framework | Django 5.x |
| API Framework | Django REST Framework |
| Auth | SimpleJWT |
| Caching | Redis / LocMemCache |
| Async Tasks | Django Q2 |
| Database | SQLite (Dev) / PostgreSQL (Prod) |
| Environment Config | python-dotenv |
| File Storage | Django File Storage API |