Skip to content

mahmoudnajmeh/project-management-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“Š ProjectFlow - Project Management Application

A full-stack application with Spring AI, Real-time Notification System, Data Engineering pipeline (Kafka + Spring Batch), real-time analytics, team collaboration, OAuth2 (Google/GitHub login), and task tracking.

Built with Spring Boot 3.2.0 and React 18 + TypeScript

Author

Mahmoud Najmeh


๐Ÿ“‹ Table of Contents


๐Ÿ—๏ธ Project Architecture

Image

Diagram shows the overall architecture of the ProjectFlow application including frontend, backend, database, and external services.


๐Ÿ–ฅ๏ธ System Architecture Diagram

Image

Complete system architecture showing all components and their interactions.


๐Ÿ—„๏ธ Database Structure

Image

Complete database schema showing all tables and their relationships.

Entity Relationship Diagram


Database Tables Detail

Image

Detailed view of all database tables with column names and data types.


๐Ÿ” Authentication Flow Diagram

Image

Sequence diagram showing the complete authentication process including login, registration, and password reset.


๐Ÿ“ก Real-time Pipeline Diagram

Image

Event-driven architecture showing Kafka pipeline for real-time metrics processing.


Event Flow Description

Step Component Description
1 ActivityEventPublisher Captures user actions (task creation, completion, login)
2 Kafka Producer Serializes events and sends to Kafka topic
3 Kafka Broker Stores events partitioned by user_id for scalability
4 Kafka Consumer Consumes events in real-time from project-metrics-group
5 RealTimeMetricsService Updates in-memory counters (tasks created/completed today)
6 WebSocket Push Pushes real-time updates to connected clients
7 Metrics Scheduler Triggers daily batch job at 1 AM
8 Spring Batch Calculates and stores daily metrics in database

โœจ Features

๐Ÿค– Spring AI Integration (โญ Core Focus)

  • AI-powered assistant for project management
  • Intelligent task recommendations
  • Automated responses and smart suggestions

๐Ÿ“Š Data Engineering & Analytics (โญ Core Focus)

  • Apache Kafka Event Streaming - Real-time capture and processing of user activities
  • Spring Batch Processing - Daily metrics calculation and trend analysis
  • Real-time Metrics Dashboard - Live task completion rates and team velocity
  • User Activity Pipeline - Event-driven architecture for performance tracking

๐Ÿ”” Real-time Notification System (โญ Core Focus)

  • WebSocket-based notifications - Instant alerts for task assignments and project updates
  • Database-persisted notifications - Never miss important updates
  • Unread count tracking - Bell icon with badge showing pending notifications
  • Read/Unread status - Mark notifications as read individually or all at once
  • Entity-based notifications - Click to navigate directly to tasks, projects, or calendar events
  • Real-time WebSocket push - No page refresh needed for new notifications
  • Notification types: TASK_ASSIGNED, TASK_COMPLETED, PROJECT_CREATED, MESSAGE_RECEIVED, CALENDAR_EVENT

๐Ÿ” Authentication & Security

  • JWT-based authentication with refresh tokens
  • OAuth2 Integration (Google + GitHub) - Single sign-on with social providers
  • Password reset via email
  • Role-based access control (USER, ADMIN)

๐Ÿ‘ฅ Team Collaboration

  • Create and manage teams
  • Add/remove team members
  • Team profile pictures
  • Real-time team chat with WebSocket

๐Ÿ“‹ Project Management

  • Create, update, delete projects
  • Project status tracking (PLANNED, IN_PROGRESS, COMPLETED)
  • Assign projects to teams
  • Project-level task organization

โœ… Task Tracking

  • Task assignment with priorities (HIGH, MEDIUM, LOW)
  • Due date tracking
  • Task status (TODO, IN_PROGRESS, DONE)
  • Real-time task updates via WebSocket

๐Ÿ“… Calendar Integration

  • Visual timeline of tasks and events
  • Drag-and-drop event creation
  • Color-coded event types

๐Ÿ“ˆ Analytics & Reporting

  • Real-time metrics dashboard
  • Kafka event streaming for user activities
  • Spring Batch daily metrics calculation
  • Team velocity and productivity scores

๐Ÿ’ฌ Real-time Features

  • WebSocket chat between team members
  • Live notifications for task assignments
  • Activity feed
  • Unread message indicators

๐ŸŽจ UI/UX

  • Dark/Light mode toggle
  • Fully responsive design
  • Profile picture upload
  • Global search (projects, tasks, teams, users)
  • Toast notifications

๐Ÿ› ๏ธ Tech Stack

Backend

Technology Version Purpose
Spring Boot 3.2.0 Core framework
Spring Security 6.2.0 Authentication & authorization
Spring Data JPA 3.2.0 Database ORM
Spring WebSocket 3.2.0 Real-time communication
Spring Kafka 3.1.0 Event streaming
Spring Batch 5.1.0 Batch processing
MySQL 8.0+ Relational database
JWT 0.11.5 Token-based authentication
Lombok 1.18.30 Boilerplate reduction

Frontend

Technology Version Purpose
React 18.3.1 UI framework
TypeScript 5.6.2 Type safety
Tailwind CSS 3.4.17 Styling
React Router DOM 6.28.0 Routing
React Hook Form 7.54.2 Form management
Zod 3.24.1 Validation
Axios 1.7.9 HTTP client
STOMPjs 2.3.3 WebSocket protocol
SockJS-client 1.5.1 WebSocket fallback
Lucide React 0.468.0 Icons
Vite 5.4.11 Build tool

DevOps

  • Docker & Docker Compose
  • GitHub Actions / GitLab CI
  • Jenkins pipeline

๐Ÿ“ Project Structure

project-management-app/
โ”‚
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ src/main/java/.../project_management_app/
โ”‚   โ”‚   โ”œโ”€โ”€ config/           # Security, WebSocket, Kafka config
โ”‚   โ”‚   โ”œโ”€โ”€ controller/       # REST API controllers
โ”‚   โ”‚   โ”œโ”€โ”€ dto/              # Data Transfer Objects
โ”‚   โ”‚   โ”œโ”€โ”€ entity/           # JPA entities
โ”‚   โ”‚   โ”œโ”€โ”€ pipeline/         # Kafka event pipeline
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ event/        # Event publishers
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ kafka/        # Producers & Consumers
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ model/        # Event models
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ scheduler/    # Batch job scheduler
โ”‚   โ”‚   โ”œโ”€โ”€ repository/       # JPA repositories
โ”‚   โ”‚   โ”œโ”€โ”€ service/          # Business logic
โ”‚   โ”‚   โ””โ”€โ”€ util/             # Utilities (JWT)
โ”‚   โ”œโ”€โ”€ src/main/resources/
โ”‚   โ”‚   โ””โ”€โ”€ application.properties
โ”‚   โ”œโ”€โ”€ uploads/              # File storage
โ”‚   โ”‚   โ”œโ”€โ”€ chat/
โ”‚   โ”‚   โ”œโ”€โ”€ profile-pictures/
โ”‚   โ”‚   โ””โ”€โ”€ team-photos/
โ”‚   โ””โ”€โ”€ pom.xml
โ”‚
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ api/              # API service layer
โ”‚   โ”‚   โ”œโ”€โ”€ assets/           # Static assets
โ”‚   โ”‚   โ”œโ”€โ”€ components/       # React components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ai/           # AI Assistant
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/         # Login/Register
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ calendar/     # Calendar
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ common/       # Reusable UI
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/    # Dashboard
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layout/       # Layout, Header
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ profile/      # Profile settings
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ projects/     # Projects
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ tasks/        # Tasks
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ team/         # Team & chat
โ”‚   โ”‚   โ”œโ”€โ”€ context/          # React Context
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/            # Custom hooks
โ”‚   โ”‚   โ”œโ”€โ”€ pages/            # Page components
โ”‚   โ”‚   โ”œโ”€โ”€ styles/           # Global styles
โ”‚   โ”‚   โ”œโ”€โ”€ types/            # TypeScript definitions
โ”‚   โ”‚   โ”œโ”€โ”€ utils/            # Helper functions
โ”‚   โ”‚   โ”œโ”€โ”€ App.tsx
โ”‚   โ”‚   โ””โ”€โ”€ main.tsx
โ”‚   โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ .env
โ”‚   โ”œโ”€โ”€ package.json
โ”‚   โ”œโ”€โ”€ tailwind.config.js
โ”‚   โ”œโ”€โ”€ tsconfig.json
โ”‚   โ””โ”€โ”€ vite.config.ts
โ”‚
โ”œโ”€โ”€ .github/workflows/
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ Dockerfile
โ””โ”€โ”€ README.md

๐Ÿš€ Quick Start

Prerequisites

  • Java 21+
  • Node.js 18+
  • MySQL 8.0+
  • Maven 3.8+

1. Clone & Setup Backend

git clone https://github.com/mahmoudnajmeh/project-management-app.git
cd project-management-app

mysql -u root -p
CREATE DATABASE project_management_app;

2. Configure application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/project_management_app
spring.datasource.username=root
spring.datasource.password=yourpassword
jwt.secret=your_jwt_secret_key_here

3. Run Backend

mvn clean install
mvn spring-boot:run

# Backend: http://localhost:8080

4. Run Frontend

cd frontend
npm install
npm run dev

# Frontend: http://localhost:3000

๐Ÿ“ก API Endpoints

Category Method Endpoint Description
Auth POST /api/auth/login User login
Auth POST /api/auth/register User registration
Auth POST /api/auth/forgot-password Request password reset
Auth POST /api/auth/reset-password Reset password
Users GET /api/users/me Get current user
Users PUT /api/users/me Update profile
Users POST /api/users/me/profile-picture Upload avatar
Users POST /api/users/me/change-password Change password
Teams GET /api/teams/my-teams Get my teams
Teams POST /api/teams Create team
Teams GET /api/teams/{id}/members Get team members
Projects GET /api/projects/my-projects Get my projects
Projects POST /api/projects Create project
Tasks GET /api/tasks/my-tasks Get my tasks
Tasks POST /api/tasks Create task
Search GET /api/search?q={query} Global search

๐Ÿณ Docker Deployment

# Build and run
docker-compose up -d

# Stop containers
docker-compose down

# View logs
docker-compose logs -f

๐Ÿ“„ Image Placeholders Reference

When adding your images to the documentation, use these exact filenames:

Placeholder Description Recommended Content
./project-architecture.png Project Architecture Diagram High-level architecture overview
./system-architecture.png System Architecture Diagram Detailed component interaction
./database-structure.png Database Structure Complete database schema
./database-tables-detail.png Database Tables Detail All tables with columns
./authentication-flow.png Authentication Flow Diagram Login/register/password reset sequence
./realtime-pipeline.png Real-time Pipeline Diagram Kafka event flow diagram

๐Ÿค Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push branch (git push origin feature/amazing)
  5. Open Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License.


Built with โค๏ธ using Spring Boot, React, and TypeScript

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

โšก