Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

TaskFlow — OpenProject-Inspired Project Management Software

CodeAlpha Full-Stack Internship — Task 3

TaskFlow is an enterprise-grade project management web application inspired by the workflow design, ergonomics, and information architecture of OpenProject. It provides complete multi-user project workspace management, rich work package tracking, interactive drag-and-drop Kanban boards, team discussions with @mention notifications, calendar scheduling, project analytics, and CSV reporting.


1. Key Features

OpenProject-Inspired Application Shell

  • Enterprise Layout: Collapsible sidebar navigation, active project context switcher, breadcrumb hierarchy, and persistent top navigation.
  • Dark & Light Mode: Accessible, high-contrast theme toggle persisting across sessions in localStorage.
  • Global Search (Ctrl+K / /): Instant debounced search querying accessible projects, tasks, descriptions, and tags.
  • In-App Notification Center: Real-time badge counter, dropdown notification tray, and dedicated notification management view.

Project & Team Management

  • Project Workspaces: Create, edit, overview, and archive project workspaces with dates, descriptions, and dynamic progress bars.
  • Role-Based Access Control (RBAC): Three distinct project roles enforced at the database and API levels:
    • Owner: Full project governance, member role modification, project archiving, and permanent deletion.
    • Manager: Member additions/removals, project detail updates, and work package oversight.
    • Member: Collaborative work package execution, status updates, and discussion participation.
  • Project Analytics & Team Workload: Calculated metrics derived directly from the relational database (completion percentage, overdue counts, task status/priority/type distributions, and individual member workload breakdowns).
  • Audit Trails: Automatic chronological activity logging for project creations, member changes, and task progressions.

Work Packages & Task Management

  • Work Package Types: Supports Task, Bug, Feature, and Milestone.
  • Comprehensive Attributes: Unique ID (#101), Subject, Detailed Description, Status, Priority (Low, Medium, High, Critical), Assignee, Creator, Start Date, Due Date, Estimated Effort (hours), Tags/Labels, and Timestamps.
  • Table / List View: Structured OpenProject-style table with sorting across multiple columns, search filtering, and single-click row inspection.
  • Task Detail Slide-over / Modal: Dual-panel modal featuring in-place editing, comment stream with @mention notifications, and granular change history.
  • CSV Data Export: Export filtered work package lists directly to CSV (/api/tasks/export_csv/) for reporting and data portability.

Functional Kanban Board

  • Workflow Columns: To Do, In Progress, In Review, and Completed columns with real-time task count badges.
  • Drag-and-Drop Progression: Native HTML5 drag-and-drop saving new statuses directly to the backend database.
  • Accessible Alternative: Integrated dropdown selector on every card allowing keyboard and screen-reader status updates.
  • Quick Creation: "+ Add Task" shortcut directly inside specific columns.

Team Discussions & Mentions

  • Persistent Comments: Chronological discussion thread per work package.
  • Mention Parsing: Automatically identifies @username references in comments and task descriptions, triggering immediate notifications for project members.
  • Comment Author Controls: Authors can edit or delete their comments; managers/owners can moderate discussions.

Interactive Calendar

  • Monthly Grid: Visual calendar placing scheduled tasks on their due dates with priority and status indicator chips.
  • Month Navigation: Easily navigate previous/next months or jump back to the current date.

2. Architecture & Technology Stack

TaskFlow/
├── core/                       # Core Django Application
│   ├── migrations/             # Database schema migrations
│   ├── models.py               # Relational data models (Project, Task, Membership, Comment, Activity, Notification)
│   ├── serializers.py          # DRF Serializers with field-level & object-level validation
│   ├── views.py                # REST API endpoints, permissions, analytics & search logic
│   ├── urls.py                 # Core routing table
│   └── tests.py                # Automated test suite (14 unit & API tests)
├── taskflow/                   # Django Project Configuration
│   ├── settings.py             # Security, session auth, static files, database configuration
│   ├── urls.py                 # Root URL configuration & static serving
│   └── wsgi.py                 # WSGI entry point
├── templates/
│   └── index.html              # OpenProject-inspired HTML5 application shell & modals
├── static/
│   ├── css/
│   │   └── app.css             # Enterprise stylesheet with light/dark theme, responsive shell
│   └── js/
│       └── app.js              # Vanilla JavaScript application controller (SPA architecture)
├── manage.py                   # Django CLI management script
├── requirements.txt            # Python dependencies (Django, djangorestframework)
├── .env.example                # Configuration template
├── .gitignore                  # Git exclusion rules
├── verify_app.py               # 16-step integration verification test script
└── README.md                   # Project documentation

Technology Matrix

  • Frontend: HTML5, CSS3 (Modern Flexbox/Grid, CSS custom variables for theming), Vanilla ES6+ JavaScript (Fetch API, DOM manipulation, zero frontend framework dependencies).
  • Backend: Python 3.10+ / 3.14+, Django 5.2+, Django REST Framework 3.18+.
  • Database: SQLite (default for development), PostgreSQL-ready via standard environment variables (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_PORT).
  • Security: Django Session Authentication, CSRF token validation (X-CSRFToken), HTTP-only session cookies, parameterized SQL queries via Django ORM, and sanitized text rendering preventing XSS.

3. Prerequisites

  • Python 3.10 or higher (tested on Python 3.14 on Windows 11 / Linux / macOS)
  • pip (Python package installer)
  • Git (optional, for cloning)

4. Installation & Setup Instructions

Step 1: Open Terminal / Shell in the Project Root

cd TaskFlow

Step 2: Create and Activate Virtual Environment

On Windows (PowerShell):

python -m venv venv
.\venv\Scripts\Activate.ps1

On Windows (Command Prompt):

python -m venv venv
venv\Scripts\activate.bat

On macOS / Linux:

python3 -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

pip install -r requirements.txt

Step 4: Environment Configuration (Optional)

# Windows
copy .env.example .env

# macOS / Linux
cp .env.example .env

Note: Default settings run out-of-the-box using local SQLite and development keys.

Step 5: Run Database Migrations

python manage.py migrate

Step 6: Create Superuser (Optional)

python manage.py createsuperuser

Step 7: Start the Development Server

python manage.py runserver

Visit http://127.0.0.1:8000/ in your browser to access TaskFlow.


5. Automated Testing & Verification

TaskFlow includes a comprehensive automated test suite testing model logic, permissions, REST endpoints, mention notifications, and security controls:

Running Django Unit & API Tests

python manage.py test

All 14 tests run in an isolated test database and verify permissions, CRUD actions, and data integrity.

Running the Live Integration Verification Script

python verify_app.py

Executes a 16-step end-to-end integration scenario (user registration, project creation, member promotion, task creation, mention notifications, drag-and-drop status moves, discussions, analytics, global search, CSV export, and password changes).


6. REST API Reference

All API routes require authenticated sessions (except public auth endpoints):

Method Endpoint Description Access
POST /api/auth/register/ Register new user account Public
POST /api/auth/login/ Authenticate user session Public
POST /api/auth/logout/ Terminate session Authenticated
GET/PATCH /api/auth/me/ View / update profile information Authenticated
POST /api/auth/change_password/ Securely update password Authenticated
GET /api/dashboard/ Aggregated personal & project metrics Authenticated
GET /api/search/?q={query} Global search across projects and tasks Authenticated
GET/POST /api/projects/ List user projects / Create project Project Member
GET/PATCH /api/projects/{id}/ Retrieve / Update project details Owner/Manager
DELETE /api/projects/{id}/ Archive project Owner only
POST /api/projects/{id}/unarchive/ Restore archived project Owner only
POST /api/projects/{id}/delete_permanent/ Permanently delete project Owner only
POST /api/projects/{id}/add_member/ Add member with role (manager/member) Owner/Manager
POST /api/projects/{id}/update_member_role/ Modify member role Owner only
POST /api/projects/{id}/remove_member/ Remove member from project Owner/Manager
GET /api/projects/{id}/analytics/ Status/priority/type & workload stats Project Member
GET /api/projects/{id}/activity/ Project activity audit trail Project Member
GET/POST /api/tasks/ Filter work packages / Create work package Project Member
GET/PATCH /api/tasks/{id}/ Retrieve / Update work package Project Member
DELETE /api/tasks/{id}/ Delete work package Creator/Manager/Owner
GET /api/tasks/export_csv/ Download CSV of filtered work packages Project Member
GET/POST /api/tasks/{id}/comments/ List comments / Post new comment Project Member
PATCH/DELETE /api/tasks/{id}/comments/{cid}/ Edit or delete a comment Author (Owner delete)
GET /api/tasks/{id}/history/ View change history for task Project Member
GET /api/notifications/ View in-app notifications Authenticated
POST /api/notifications/{id}/read/ Mark notification as read Recipient
POST /api/notifications/read_all/ Mark all notifications read Recipient

7. PostgreSQL Configuration (Optional Production Deployment)

To run with PostgreSQL instead of SQLite:

  1. Install psycopg2-binary:
    pip install psycopg2-binary
  2. Set the following environment variables in .env:
    DB_NAME=taskflow_production
    DB_USER=postgres
    DB_PASSWORD=your_secure_password
    DB_HOST=localhost
    DB_PORT=5432
  3. Run python manage.py migrate.

8. Deployment Best Practices

When deploying TaskFlow to production:

  1. Set DJANGO_DEBUG=0 in .env.
  2. Generate a cryptographically strong secret: DJANGO_SECRET_KEY="<strong-random-key>".
  3. Configure DJANGO_ALLOWED_HOSTS="yourdomain.com,www.yourdomain.com".
  4. Serve static files with a production reverse proxy (e.g., Nginx) or WhiteNoise.
  5. Use Gunicorn or Uvicorn behind Nginx with TLS/SSL encryption enabled.

9. Known Limitations

  • Real-Time WebSockets: Real-time updates currently utilize reactive polling and event-driven refresh rather than a stateful WebSocket server (e.g. Django Channels + Redis), ensuring zero external daemon dependencies and frictionless setup on student and local developer machines.
  • Automated Email Reminders: Task assignment and @mention notifications are delivered through the in-app notification center and bell dropdown rather than external SMTP email dispatch.

10. License & Submission Details

Developed for CodeAlpha Full-Stack Web Development Internship — Task 3. OpenProject design concepts adapted under fair-use educational guidelines. All implementation code is original.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages