A professional, responsive Django-based task management web application designed for team collaboration, featuring robust Role-Based Access Control (RBAC), live metric tracking, dynamic dashboards, and cloud-ready automated deployment.
- Role-Based Access Control (RBAC): Restrict system actions and dashboards using predefined roles:
- Admin: Full system capabilities including user role modification.
- Manager: Monitor team progress and assign/edit tasks for any user.
- Project Lead & Auditor: Read-only access to all tasks across the system for oversight and audit trails.
- Contributor: View tasks assigned to them and toggle their execution status.
- User: Manage (create, update, delete) their own tasks.
- Dual-Dashboard Ecosystem:
- Admin/Manager Dashboard: Interactive counters (Total Users, Total Tasks, Completed Tasks),
- detailed user list showing task completion counts per user, and a real-time recent activity stream.
- User Dashboard: Clean, intuitive, paginated task list with built-in search functionality and filtering (All, Pending, Completed).
- Database Backup & Diagnostics: Custom scripts to automatically dump the database and inspect active data structures directly from SQL backups.
- Production Deployment Script: Single-command shell script to configure a secure, production-grade stack on AWS EC2.
- Backend: Python, Django 3.2.x
- Database: MySQL (powered by PyMySQL)
- Production Web Server: Nginx + Gunicorn
- Process Manager: Systemd
- Hosting Compatibility: AWS EC2 (Ubuntu 22.04 LTS recommended)
- Security: Ubuntu UFW Firewall integration
├── task_manager_project/ # Core Django configuration (settings, routing, WSGI/ASGI)
├── tasks/ # Django App containing models, forms, URLs, and view logic
├── templates/ # HTML Templates
│ ├── base.html # Global theme layout (navbars, messages, structural styling)
│ └── tasks/ # App-specific views (dashboards, login, forms, confirmation)
├── db_backup.sql # Recent database snapshot
├── export_db.bat # Windows utility script to back up the database
├── get_my_data.py # Python utility to inspect custom users and tasks in the backup file
├── manage.py # Django CLI utility
├── requirements.txt # Project python dependencies
└── setup_ec2.sh # Automated Bash script for AWS EC2 installation
- Python 3.8+
- MySQL Server 8.0+
-
Clone the Repository:
git clone https://github.com/rintathomas2027/Task-Manager.git cd Task-Manager -
Create and Activate a Virtual Environment:
python -m venv venv # On Windows: venv\Scripts\activate # On Linux/macOS: source venv/bin/activate
-
Install Dependencies:
pip install -r requirements.txt pip install pymysql
-
Set Up MySQL Database:
- Log into MySQL:
CREATE DATABASE task_manager_db;
- Adjust Database credentials in
task_manager_project/settings.py(line 81) if your credentials differ from:- Name:
task_manager_db - User:
root - Password:
ajce
- Name:
- Log into MySQL:
-
Run Migrations:
python manage.py migrate
-
Create a Superuser (Admin):
python manage.py createsuperuser
-
Start Development Server:
python manage.py runserver
Access the application at
http://127.0.0.1:8000/.
This repository includes a production-ready deployment script (setup_ec2.sh) to automate server provisioning on a fresh Ubuntu EC2 instance.
- Updates the system and installs system-level dependencies (
Nginx,MySQL,python3-venv,UFW, etc.). - Creates the MySQL database and sets up default permissions.
- Clones the project code, sets up the virtual environment, and runs Django migrations & static files collection.
- Generates and enables a systemd service (
gunicorn.service) to run Gunicorn as a background daemon. - Configures Nginx as a reverse proxy passing requests to Gunicorn's Unix socket.
- Configures the system firewall (UFW) to allow Nginx traffic.
# Upload setup_ec2.sh to your EC2 instance and run:
chmod +x setup_ec2.sh
./setup_ec2.shA Windows-specific batch script to automate database backups.
- Finds
mysqldump.exein the default MySQL installation directory. - Authenticates and dumps database schema & tables into
db_backup.sql. - Double-click the script or execute it via Command Prompt.
A python script designed to inspect the generated database backups without running a database server.
- Parses SQL inserts within
db_backup.sql. - Outputs a human-readable list of created Users, their custom Roles, and registered Tasks.
- Run it using:
python get_my_data.py