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.
- 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 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 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
@mentionnotifications, and granular change history. - CSV Data Export: Export filtered work package lists directly to CSV (
/api/tasks/export_csv/) for reporting and data portability.
- Workflow Columns:
To Do,In Progress,In Review, andCompletedcolumns 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.
- Persistent Comments: Chronological discussion thread per work package.
- Mention Parsing: Automatically identifies
@usernamereferences 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.
- 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.
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
- 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.
- Python 3.10 or higher (tested on Python 3.14 on Windows 11 / Linux / macOS)
pip(Python package installer)- Git (optional, for cloning)
cd TaskFlowOn Windows (PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1On Windows (Command Prompt):
python -m venv venv
venv\Scripts\activate.batOn macOS / Linux:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txt# Windows
copy .env.example .env
# macOS / Linux
cp .env.example .envNote: Default settings run out-of-the-box using local SQLite and development keys.
python manage.py migratepython manage.py createsuperuserpython manage.py runserverVisit http://127.0.0.1:8000/ in your browser to access TaskFlow.
TaskFlow includes a comprehensive automated test suite testing model logic, permissions, REST endpoints, mention notifications, and security controls:
python manage.py testAll 14 tests run in an isolated test database and verify permissions, CRUD actions, and data integrity.
python verify_app.pyExecutes 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).
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 |
To run with PostgreSQL instead of SQLite:
- Install
psycopg2-binary:pip install psycopg2-binary
- 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
- Run
python manage.py migrate.
When deploying TaskFlow to production:
- Set
DJANGO_DEBUG=0in.env. - Generate a cryptographically strong secret:
DJANGO_SECRET_KEY="<strong-random-key>". - Configure
DJANGO_ALLOWED_HOSTS="yourdomain.com,www.yourdomain.com". - Serve static files with a production reverse proxy (e.g., Nginx) or WhiteNoise.
- Use Gunicorn or Uvicorn behind Nginx with TLS/SSL encryption enabled.
- 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
@mentionnotifications are delivered through the in-app notification center and bell dropdown rather than external SMTP email dispatch.
Developed for CodeAlpha Full-Stack Web Development Internship — Task 3. OpenProject design concepts adapted under fair-use educational guidelines. All implementation code is original.