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
- ๐๏ธ Project Architecture
- ๐ฅ๏ธ System Architecture Diagram
- ๐๏ธ Database Structure
- ๐ Authentication Flow Diagram
- ๐ก Real-time Pipeline Diagram
- โจ Features
- ๐ ๏ธ Tech Stack
- ๐ Project Structure
- ๐ Quick Start
- ๐ก API Endpoints
- ๐ณ Docker Deployment
- ๐ค Contributing
Diagram shows the overall architecture of the ProjectFlow application including frontend, backend, database, and external services.
Complete system architecture showing all components and their interactions.
Complete database schema showing all tables and their relationships.
Detailed view of all database tables with column names and data types.
Sequence diagram showing the complete authentication process including login, registration, and password reset.
Event-driven architecture showing Kafka pipeline for real-time metrics processing.
| 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 |
- AI-powered assistant for project management
- Intelligent task recommendations
- Automated responses and smart suggestions
- 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
- 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
- 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)
- Create and manage teams
- Add/remove team members
- Team profile pictures
- Real-time team chat with WebSocket
- Create, update, delete projects
- Project status tracking (PLANNED, IN_PROGRESS, COMPLETED)
- Assign projects to teams
- Project-level task organization
- Task assignment with priorities (HIGH, MEDIUM, LOW)
- Due date tracking
- Task status (TODO, IN_PROGRESS, DONE)
- Real-time task updates via WebSocket
- Visual timeline of tasks and events
- Drag-and-drop event creation
- Color-coded event types
- Real-time metrics dashboard
- Kafka event streaming for user activities
- Spring Batch daily metrics calculation
- Team velocity and productivity scores
- WebSocket chat between team members
- Live notifications for task assignments
- Activity feed
- Unread message indicators
- Dark/Light mode toggle
- Fully responsive design
- Profile picture upload
- Global search (projects, tasks, teams, users)
- Toast notifications
| 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 |
| 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 |
- Docker & Docker Compose
- GitHub Actions / GitLab CI
- Jenkins pipeline
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
- Java 21+
- Node.js 18+
- MySQL 8.0+
- Maven 3.8+
git clone https://github.com/mahmoudnajmeh/project-management-app.git
cd project-management-app
mysql -u root -p
CREATE DATABASE project_management_app;spring.datasource.url=jdbc:mysql://localhost:3306/project_management_app
spring.datasource.username=root
spring.datasource.password=yourpassword
jwt.secret=your_jwt_secret_key_heremvn clean install
mvn spring-boot:run
# Backend: http://localhost:8080cd frontend
npm install
npm run dev
# Frontend: http://localhost:3000| 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 |
# Build and run
docker-compose up -d
# Stop containers
docker-compose down
# View logs
docker-compose logs -fWhen 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 |
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push branch (
git push origin feature/amazing) - Open Pull Request
This project is licensed under the MIT License.
Built with โค๏ธ using Spring Boot, React, and TypeScript