Skip to content

rintathomas2027/Task-Manager

Repository files navigation

TaskFlow – Collaborative Task Manager

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.


🚀 Key Features

  • 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.

🛠️ Technology Stack

  • 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

📂 Project Structure

├── 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

⚙️ Local Development Setup

Prerequisites

  • Python 3.8+
  • MySQL Server 8.0+

Step-by-Step Installation

  1. Clone the Repository:

    git clone https://github.com/rintathomas2027/Task-Manager.git
    cd Task-Manager
  2. Create and Activate a Virtual Environment:

    python -m venv venv
    
    # On Windows:
    venv\Scripts\activate
    
    # On Linux/macOS:
    source venv/bin/activate
  3. Install Dependencies:

    pip install -r requirements.txt
    pip install pymysql
  4. 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
  5. Run Migrations:

    python manage.py migrate
  6. Create a Superuser (Admin):

    python manage.py createsuperuser
  7. Start Development Server:

    python manage.py runserver

    Access the application at http://127.0.0.1:8000/.


☁️ Deployment on AWS EC2

This repository includes a production-ready deployment script (setup_ec2.sh) to automate server provisioning on a fresh Ubuntu EC2 instance.

What setup_ec2.sh Does:

  1. Updates the system and installs system-level dependencies (Nginx, MySQL, python3-venv, UFW, etc.).
  2. Creates the MySQL database and sets up default permissions.
  3. Clones the project code, sets up the virtual environment, and runs Django migrations & static files collection.
  4. Generates and enables a systemd service (gunicorn.service) to run Gunicorn as a background daemon.
  5. Configures Nginx as a reverse proxy passing requests to Gunicorn's Unix socket.
  6. Configures the system firewall (UFW) to allow Nginx traffic.

How to Run:

# Upload setup_ec2.sh to your EC2 instance and run:
chmod +x setup_ec2.sh
./setup_ec2.sh

🛠️ Utility Scripts

Database Export (export_db.bat)

A Windows-specific batch script to automate database backups.

  • Finds mysqldump.exe in 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.

Backup Explorer (get_my_data.py)

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

About

Task Manager is a web app that helps users organize and track tasks with ease. It supports CRUD operations, deadlines, and status updates (Pending, In Progress, Completed). Built with PHP, MySQL, HTML, CSS, and Bootstrap, it offers responsive design, search, and categorization to boost productivity.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors