Skip to content

Latest commit

ย 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“‹ CodeAlpha Project Management Tool

A full-stack Project Management Tool built as Task 3 for the CodeAlpha Full Stack Development Internship.

The application provides a collaborative workspace where users can create and manage projects, add team members, assign tasks, organize work through a Kanban board, communicate through task comments, receive in-app notifications, and monitor project progress through reports.


โœจ Features

๐Ÿ” Authentication

  • User registration
  • User login
  • JWT-based authentication
  • Password hashing using PHP password_hash()
  • Protected API endpoints
  • Authentication state management
  • Automatic session expiration through JWT

๐Ÿ“Š Project Management

  • Create projects
  • Edit projects
  • Delete projects
  • Project descriptions
  • Project status management
  • Project priority management
  • Project due dates
  • Project ownership
  • Project-level authorization

๐Ÿ‘ฅ Team Collaboration

  • Add members to projects
  • Remove project members
  • View project members
  • Assign tasks to project members
  • Owner/member roles
  • Collaborative project workspace
  • Member authorization

โœ… Task Management

  • Create tasks
  • Edit tasks
  • Delete tasks
  • Assign tasks to users
  • Task descriptions
  • Task priorities
  • Task due dates
  • Task status management
  • Kanban board
  • Drag-and-drop task organization

๐Ÿ’ฌ Task Collaboration

  • Add comments to tasks
  • View task comments
  • Delete your own comments
  • Task-based communication
  • Comment ownership

๐Ÿ”” Notifications

  • Task assignment notifications
  • Project membership notifications
  • Comment notifications
  • Notification center
  • Read/unread notification state
  • Direct navigation from notifications to related project boards

๐Ÿ“ˆ Reports

  • Project status breakdown
  • Task status breakdown
  • Overall task completion rate
  • Personal assigned-task summary
  • Project progress monitoring

๐Ÿ› ๏ธ Tech Stack

Layer Technology
Frontend React 18
Frontend Routing React Router
Build Tool Vite
Styling CSS
Backend PHP 8
API REST API
Database MySQL / MariaDB
Database Access PDO
Authentication Custom JWT (HS256)
Password Security PHP password_hash()
Web Server Apache
Local Environment XAMPP
Package Manager npm

๐Ÿ—๏ธ Application Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              React Frontend              โ”‚
โ”‚                                          โ”‚
โ”‚ Dashboard โ”‚ Board โ”‚ Reports             โ”‚
โ”‚ Projects  โ”‚ Tasks โ”‚ Comments             โ”‚
โ”‚ Notifications โ”‚ Authentication           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ”‚ HTTP / REST API
                     โ”‚ JSON + JWT
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚               PHP Backend                โ”‚
โ”‚                                          โ”‚
โ”‚ Authentication โ”‚ Projects               โ”‚
โ”‚ Tasks โ”‚ Comments โ”‚ Notifications         โ”‚
โ”‚ Reports โ”‚ Authorization                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ”‚ PDO
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚             MySQL / MariaDB              โ”‚
โ”‚                                          โ”‚
โ”‚ Users                                    โ”‚
โ”‚ Projects                                 โ”‚
โ”‚ Project Members                          โ”‚
โ”‚ Tasks                                    โ”‚
โ”‚ Comments                                 โ”‚
โ”‚ Notifications                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Project Structure

CodeAlpha_ProjectManagementTool/
โ”‚
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ auth/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ login.php
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ register.php
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ me.php
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ comments/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.php
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ delete.php
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ notifications/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.php
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ projects/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.php
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ detail.php
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ update.php
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ members.php
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ reports/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.php
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ””โ”€โ”€ tasks/
โ”‚   โ”‚       โ”œโ”€โ”€ index.php
โ”‚   โ”‚       โ”œโ”€โ”€ update.php
โ”‚   โ”‚       โ””โ”€โ”€ delete.php
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”‚   โ”œโ”€โ”€ cors.php
โ”‚   โ”‚   โ””โ”€โ”€ database.php
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ database/
โ”‚   โ”‚   โ””โ”€โ”€ schema.sql
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ”œโ”€โ”€ Jwt.php
โ”‚   โ”‚   โ””โ”€โ”€ authorize.php
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ .htaccess
โ”‚
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ QA_CHECKLIST.md
โ”‚   โ””โ”€โ”€ screenshots/
โ”‚       โ”œโ”€โ”€ login.png
โ”‚       โ”œโ”€โ”€ register.png
โ”‚       โ”œโ”€โ”€ dashboard.png
โ”‚       โ”œโ”€โ”€ create-project.png
โ”‚       โ”œโ”€โ”€ project-members.png
โ”‚       โ”œโ”€โ”€ kanban-board.png
โ”‚       โ”œโ”€โ”€ task-details.png
โ”‚       โ”œโ”€โ”€ comments.png
โ”‚       โ”œโ”€โ”€ notifications.png
โ”‚       โ””โ”€โ”€ reports.png
โ”‚
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ client.js
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”œโ”€โ”€ styles/
โ”‚   โ”‚   โ””โ”€โ”€ utils.js
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”œโ”€โ”€ package.json
โ”‚   โ”œโ”€โ”€ package-lock.json
โ”‚   โ””โ”€โ”€ vite.config.js
โ”‚
โ”œโ”€โ”€ .gitignore
โ””โ”€โ”€ README.md

๐Ÿ—„๏ธ Database

The application uses a relational MySQL/MariaDB database.

Main Tables

Table Purpose
users User accounts and authentication data
projects Project information and ownership
project_members Project/user membership and roles
tasks Project tasks and assignments
comments Task-based communication
notifications User notifications

Relationships

Users
 โ”‚
 โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
 โ”‚              โ”‚
 โ–ผ              โ–ผ
Projects    Notifications
 โ”‚
 โ–ผ
Project Members
 โ”‚
 โ–ผ
Tasks
 โ”‚
 โ–ผ
Comments

The database schema is provided in:

backend/database/schema.sql

The schema contains the required database tables and relationships.

It does not include demo accounts or test data.


๐Ÿš€ Getting Started

1. Prerequisites

Make sure the following are installed:

  • PHP 8.x
  • XAMPP
  • Apache
  • MySQL / MariaDB
  • Node.js
  • npm
  • Git

Check the installed versions:

php --version
node --version
npm --version

2. Clone the Repository

git clone https://github.com/MBen213/CodeAlpha_ProjectManagementTool.git
cd CodeAlpha_ProjectManagementTool

3. Start XAMPP

Open the XAMPP Control Panel and start:

Apache
MySQL

4. Place the Project in XAMPP

The project should be located inside the Apache document root.

For a standard XAMPP installation:

C:\xampp\htdocs\CodeAlpha_ProjectManagementTool

5. Create the Database

Open phpMyAdmin:

http://localhost/phpmyadmin

Create a database named:

codealpha_pmt

Then import:

backend/database/schema.sql

The schema creates the required tables and relationships.


6. Configure the Backend

The backend supports local configuration through:

backend/config/config.local.php

This file is intentionally not committed to Git because it may contain local credentials and secrets.

The default XAMPP database configuration is:

Host: localhost
Database: codealpha_pmt
Username: root
Password: empty

If your MySQL credentials are different, configure them in your local configuration file.

Important

Do not commit:

backend/config/config.local.php

This file is ignored by .gitignore.


7. Configure CORS

The backend currently allows the Vite development server:

http://localhost:5173

The configuration is located in:

backend/config/cors.php

If you use a different frontend origin, update the allowed origin accordingly.


8. Start the Frontend

Open a terminal inside:

frontend/

Install dependencies:

npm install

Start the development server:

npm run dev

The frontend will normally be available at:

http://localhost:5173

9. Backend API

The PHP backend is served through Apache.

The API base URL used by the frontend is configured in:

frontend/src/api/client.js

Default API base URL:

http://localhost/CodeAlpha_ProjectManagementTool/backend/api

If the project is installed under a different directory, update API_BASE accordingly.


๐Ÿญ Production Build

The frontend can be built using:

npm run build

The production build is generated in:

frontend/dist/

The production build has been successfully verified with Vite.

Example build result:

vite v5.4.21 building for production...
โœ“ 51 modules transformed.
โœ“ built successfully

The dist/ directory is excluded from Git through .gitignore.


๐Ÿ” Authentication Flow

Register
   โ†“
Password Hashing
   โ†“
User Account
   โ†“
Login
   โ†“
JWT Token
   โ†“
Authorization Header
   โ†“
Protected REST API
   โ†“
Authorized Resources

JWT tokens are signed using HS256 and include an expiration time.

Passwords are hashed using PHP's built-in password hashing functionality.


๐Ÿ“ก REST API

Authentication

Method Endpoint Description Access
POST /api/auth/register.php Register a user Public
POST /api/auth/login.php Authenticate a user Public
GET /api/auth/me.php Get current user Authenticated

Projects

Method Endpoint Description Access
GET /api/projects/index.php Get projects Authenticated
POST /api/projects/index.php Create project Authenticated
GET /api/projects/detail.php?id={id} Get project details Authorized
PUT /api/projects/update.php?id={id} Update project Authorized
DELETE /api/projects/update.php?id={id} Delete project Owner
POST /api/projects/members.php Add project member Owner
DELETE /api/projects/members.php?project_id={id}&user_id={id} Remove member Owner

Tasks

Method Endpoint Description Access
POST /api/tasks/index.php Create task Authorized
PUT /api/tasks/update.php?id={id} Update task Authorized
DELETE /api/tasks/delete.php?id={id} Delete task Authorized

Comments

Method Endpoint Description Access
GET /api/comments/index.php?task_id={id} Get task comments Authorized
POST /api/comments/index.php Add comment Authorized
DELETE /api/comments/delete.php?id={id} Delete comment Comment Owner

Notifications

Method Endpoint Description Access
GET /api/notifications/index.php Get notifications Authenticated
PUT /api/notifications/index.php Mark notifications as read Authenticated

Reports

Method Endpoint Description Access
GET /api/reports/index.php Get project/task reports Authenticated

๐Ÿ”„ Project Workflow

Create Account
      โ†“
Login
      โ†“
Create Project
      โ†“
Add Team Members
      โ†“
Create Tasks
      โ†“
Assign Tasks
      โ†“
Manage Tasks
      โ†“
Kanban Board
      โ†“
Drag & Drop
      โ†“
Task Comments
      โ†“
Notifications
      โ†“
Project Reports

๐Ÿ“‹ Kanban Board

The application includes a Kanban-style board with four task statuses:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    TO DO    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   Task 1    โ”‚
โ”‚   Task 2    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ IN PROGRESS โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   Task 3    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    REVIEW   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   Task 4    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     DONE    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   Task 5    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Tasks can be moved between columns using drag and drop, allowing users to visually track project progress.


๐Ÿงช Testing & QA

A dedicated QA checklist is included in:

docs/QA_CHECKLIST.md

Authentication

  • User registration
  • User login
  • Invalid login rejection
  • JWT authentication
  • Protected routes
  • Logout

Projects

  • Create project
  • Edit project
  • Delete project
  • Project status
  • Project priority
  • Project due date

Team Management

  • Add project member
  • Remove project member
  • View project members
  • Assign tasks to members
  • Owner/member authorization

Tasks

  • Create task
  • Edit task
  • Delete task
  • Assign task
  • Change priority
  • Change due date
  • Change status
  • Kanban drag & drop

Comments

  • Add comment
  • View comments
  • Delete own comment
  • Unauthorized comment deletion rejected

Notifications

  • Task assignment notification
  • Project membership notification
  • Comment notification
  • Read/unread state
  • Notification navigation

Reports

  • Project statistics
  • Task statistics
  • Status breakdown
  • Completion rate
  • Personal task summary

๐Ÿ“ธ Screenshots

The following screenshots demonstrate the main application workflow and user interface.

๐Ÿ” Login

Login


๐Ÿ“ Register

Register


๐Ÿ“Š Dashboard

Dashboard


โž• Create Project

Create Project


๐Ÿ‘ฅ Project Members

Project Members


๐Ÿ“‹ Kanban Board

Kanban Board


๐Ÿ“ Task Details

Task Details


๐Ÿ’ฌ Task Comments

Comments


๐Ÿ”” Notifications

Notifications


๐Ÿ“ˆ Reports

Reports


๐Ÿ”’ Security

The project implements several security practices:

  • Password hashing using PHP password_hash()
  • JWT-based authentication
  • Protected REST API endpoints
  • Authorization middleware
  • Project-level access control
  • Owner/member roles
  • Comment ownership checks
  • PDO prepared statements
  • CORS configuration
  • Apache authorization-header forwarding

โš ๏ธ Production Security

The current project is configured for local development and internship demonstration.

Before production deployment:

  • Set a strong CODEALPHA_JWT_SECRET
  • Keep config.local.php outside version control
  • Change database credentials
  • Restrict CORS to the production frontend origin
  • Review Apache and PHP production configuration
  • Use HTTPS in production
  • Store secrets using environment variables or a secure server-side configuration

The JWT secret is loaded through the application's configuration layer and is not hardcoded in Jwt.php.

Local secrets can be stored in:

backend/config/config.local.php

This file is excluded from Git.


๐Ÿ”ฎ Future Improvements

The following features can be added in future versions:

  • Real-time updates using WebSockets
  • Email notifications
  • File attachments
  • Advanced project permissions
  • Activity timeline
  • Search and advanced filtering
  • Team productivity analytics
  • Production deployment
  • Automated tests
  • CI/CD pipeline

๐ŸŽ“ CodeAlpha Internship

This project was developed as part of the:

CodeAlpha Full Stack Development Internship

Task 3 โ€” Project Management Tool

Requirements Covered

  • โœ… Create group projects
  • โœ… Assign tasks
  • โœ… Comment and communicate within tasks
  • โœ… Authentication system
  • โœ… Project boards
  • โœ… Task cards
  • โœ… Backend API
  • โœ… Database integration
  • โœ… Project management
  • โœ… Team collaboration
  • โœ… Notifications
  • โœ… Reports

Bonus

  • โณ Real-time WebSocket updates

Real-time WebSocket functionality is not included in the current version.


๐Ÿ“Œ Project Notes

  • Built for the CodeAlpha Full Stack Development Internship.
  • Frontend built with React and Vite.
  • Backend implemented using plain PHP REST APIs.
  • MySQL/MariaDB is used for persistent data storage.
  • JWT is used for authentication.
  • Passwords are securely hashed before storage.
  • PDO is used for database access.
  • The application is designed for local development using XAMPP.
  • Notifications currently use application-level refresh/polling rather than WebSockets.
  • The production frontend build has been successfully verified with Vite.
  • Local configuration files containing credentials or secrets are excluded from Git.

๐Ÿ‘จโ€๐Ÿ’ป Author

Mohamed Ben

Full Stack Web Developer | Software Engineer


๐Ÿ“„ License

This project was created for educational and internship purposes as part of the CodeAlpha Full Stack Development Internship.

About

Full-stack collaborative project management tool built with React, PHP REST API, MySQL, JWT authentication, Kanban board, task collaboration, notifications, and reports.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages