A full-stack Task Management Web Application for small teams built with React and Django REST Framework, featuring Role-Based Access Control (RBAC), JWT Authentication, and a modern UI.
- Role-Based Access Control (RBAC):
- Admin: Full system access, User Management, Activity Logs.
- Manager: Task creation/assignment, Team Performance analytics.
- Member: Personal task management (view/update assigned tasks).
- Task Management: Create, update, delete, and assign tasks with status tracking (Todo, In Progress, Done).
- User Management: Admin interface to create, edit, deactivate, and manage users.
- Projects: Organize tasks into projects.
- JWT Authentication: Secure stateless authentication with automatic token refresh.
- Password Management: Reset requesting with Admin approval workflow.
- Secure Handling: HTTPOnly cookies (optional config), granular permissions.
- Admin Dashboard: System health (CPU/RAM/Disk), user stats, activity logs (audit trail).
- Team Performance: Leaderboards, completion rates, productivity trends (Manager view).
- Personal Metrics: Individual task completion tracking (Member view).
- Modern Interface: Custom CSS theme (Purple/Blue gradients), responsive design (Mobile/Tablet/Desktop).
- Feedback: Toast notifications, loading spinners, glassmorphism effects.
- Password Visibility: Toggle show/hide on inputs.
| Layer | Technology |
|---|---|
| Frontend | React 18+, React Router 6, Axios, Custom CSS (No heavy UI libs) |
| Backend | Django 5.1, Django REST Framework 3.15, SimpleJWT |
| Database | PostgreSQL (Production), SQLite (Dev) |
| Utilities | Gunicorn, Whitenoise, psutil |
- Python 3.11+
- Node.js 18+
cd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Setup Environment
cp .env.example .env
# Edit .env if using PostgreSQL, otherwise defaults to SQLite
# Initialize DB
python manage.py migrate
python manage.py init_roles
python manage.py createsuperuser
# Run Server
python manage.py runserverBackend available at: http://localhost:8000
cd frontend
npm install
# Build & Run
npm startFrontend available at: http://localhost:3000
This project is configured for easy deployment on Vercel (Frontend) and Render (Backend).
- Fork this repo.
- New Blueprint on Render.
- Connect repo ->
Apply. - Copy Service URL (e.g.,
https://ttms-backend.onrender.com).- Note: Includes
render.yamlfor auto-config of Python + Postgres.
- Note: Includes
- New Project on Vercel.
- Import repo -> Root Directory:
frontend. - Env Var:
REACT_APP_API_BASE_URL=https://YOUR-RENDER-BACKEND.onrender.com/api. - Deploy.
- On Render Dashboard -> Environment.
- Add
CORS_ALLOWED_ORIGINS=https://your-frontend.vercel.app.
For full control, deploy on a VPS using Nginx + Gunicorn.
- System Config:
sudo apt update && sudo apt install -y python3-venv postgresql nginx git - Database:
CREATE DATABASE ttms_db; CREATE USER ttms_user WITH PASSWORD 'strong_pass'; GRANT ALL PRIVILEGES ON DATABASE ttms_db TO ttms_user;
- App Setup:
- Clone repo to
/var/www/ttms. - Setup venv & install reqs.
- Run
gunicornwith systemd.
- Clone repo to
- Nginx:
- Proxy
/apito Gunicorn (localhost:8000or socket). - Serve Frontend static build (
npm run build) on root/.
- Proxy
cd frontend
npm test
# Coverage
npm test -- --coverageIncludes tests for: Auth flows, Dashboard rendering, Notification logic.
cd backend
python manage.py testIncludes tests for: RBAC permissions, Models, API Endpoints.
| Role | Password | Permissions | |
|---|---|---|---|
| Admin | admin@ttms.com |
admin123 |
Full Access, User Mgmt |
| Manager | manager@ttms.com |
manager123 |
Task Assign, Team Stats |
| Member | member@ttms.com |
member123 |
My Tasks, My Stats |
Note: New registered users are "Member" by default. Admin must upgrade them.
- Separation of Concerns: Decoupled Frontend (React) and Backend (Django) allow independent scaling.
- RESTful API: Standardized endpoints for all resources.
- Service Layer: Frontend
api/directory centralizes all HTTP calls. - Performance:
select_relatedon backend queries.- Indexed DB fields (status, assignee).
- React Memoization where appropriate.