A comprehensive full-stack task management application with microservices architecture featuring MERN Stack + Java Spring Boot microservice for report generation.
Frontend: React + Vite + TailwindCSS + Framer Motion
Backend: Node.js + Express + MongoDB
Microservice: Java 21 + Spring Boot + Maven (PDF/Excel Report Generation)
Authentication: JWT-based with role-based access control
- β User authentication & authorization (Admin, Manager, Member roles)
- β Task creation, assignment, and tracking
- β Real-time dashboard with KPIs and analytics
- β Kanban board and table views
- β Priority-based task filtering
- β User management (Admin only)
- β PDF Reports - Generated using OpenPDF library
- β Excel Reports - Generated using Apache POI
- β Color-coded priorities and status indicators
- β Filtered exports (by status, priority, date range)
- β Professional formatting with headers and metadata
- Node.js 18+ and npm
- Java JDK 21 (Eclipse Temurin recommended)
- Maven 3.6+
- MongoDB (Atlas or local)
1. Clone the repository
git clone https://github.com/Kamakshi0101/TaskFlow_Pro.git
cd TaskFlowPro2. Backend Setup
cd backend-node
npm installCreate .env file in backend-node/:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
NODE_ENV=development
JAVA_REPORT_SERVICE_URL=http://localhost:80853. Frontend Setup
cd frontend
npm install4. Java Report Service Setup
cd report-service
# Windows PowerShell - Set JAVA_HOME
$env:JAVA_HOME = "C:\Program Files\Eclipse Adoptium\jdk-21.0.9.10-hotspot"
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
# Verify Java version
java -version # Should show Java 21.\start-all-services.ps1Terminal 1 - Node Backend:
cd backend-node
npm start
# Runs on http://localhost:5000Terminal 2 - Java Microservice:
cd report-service
mvn spring-boot:run
# Runs on http://localhost:8085Terminal 3 - React Frontend:
cd frontend
npm run dev
# Runs on http://localhost:5173.\check-services.ps1Expected Output:
β Java Service (8085) - RUNNING
β Node Backend (5000) - RUNNING
β React Frontend (5173) - RUNNING
TaskFlowPro/
β
βββ backend-node/ # Node.js Express Backend
β βββ config/ # Database configuration
β βββ controllers/ # Route controllers
β βββ middleware/ # Auth & validation
β βββ models/ # MongoDB schemas (User, Task)
β βββ routes/ # API routes
β βββ services/ # Java microservice integration
β βββ .env # Environment variables
β βββ index.js # Entry point
β
βββ frontend/ # React Frontend
β βββ src/
β β βββ components/ # Reusable components
β β β βββ layout/ # Sidebar, DashboardLayout
β β β βββ ui/ # Buttons, Cards, Modals
β β βββ pages/ # Page components
β β β βββ admin/ # AdminDashboard, AllTasks, Reports
β β β βββ manager/ # Manager views
β β β βββ member/ # Member views
β β βββ store/ # Redux state management
β β βββ utils/ # Helpers & utilities
β β βββ main.jsx # Entry point
β βββ package.json
β
βββ report-service/ # Java Spring Boot Microservice
β βββ src/
β β βββ main/
β β βββ java/com/taskflowpro/reportservice/
β β β βββ controller/ # ReportController (REST API)
β β β βββ dto/ # TaskReportDTO, UserSummaryDTO
β β β βββ service/ # PdfService, ExcelService
β β β βββ ReportServiceApplication.java
β β βββ resources/
β β βββ application.properties
β βββ pom.xml # Maven dependencies
β
βββ start-all-services.ps1 # Automation script
βββ check-services.ps1 # Service health check
βββ README.md # This file
| Technology | Purpose |
|---|---|
| React 18 | UI framework |
| Vite | Build tool |
| Redux Toolkit | State management |
| TailwindCSS | Styling |
| Framer Motion | Animations |
| Axios | HTTP client |
| React Router | Navigation |
| React Icons | Icon library |
| Technology | Purpose |
|---|---|
| Express | Web framework |
| Mongoose | MongoDB ODM |
| JWT | Authentication |
| Bcrypt | Password hashing |
| Axios | Java service calls |
| Technology | Purpose |
|---|---|
| Java 21 | Programming language |
| Spring Boot 3.2.1 | Framework |
| Maven | Build & dependency management |
| OpenPDF 1.3.34 | PDF generation |
| Apache POI 5.2.5 | Excel generation |
| Jakarta Validation | Input validation |
| Lombok | Reduce boilerplate |
POST /api/auth/register # Register new user
POST /api/auth/login # Login user
GET /api/auth/me # Get current userGET /api/tasks # Get all tasks (with filters)
POST /api/tasks # Create new task
GET /api/tasks/:id # Get task by ID
PUT /api/tasks/:id # Update task
DELETE /api/tasks/:id # Delete taskGET /api/reports/health # Check Java service status
GET /api/reports/tasks/pdf # Generate PDF report
GET /api/reports/tasks/excel # Generate Excel report
GET /api/reports/users/summary # Generate user summary PDF
Query Parameters:
- status: filter by status (todo, in-progress, completed)
- priority: filter by priority (low, medium, high, urgent)
- dateFrom: start date (YYYY-MM-DD)
- dateTo: end date (YYYY-MM-DD)GET /api/users # Get all users
PUT /api/users/:id/role # Update user role
DELETE /api/users/:id # Delete user- Login as admin user
- Navigate to Dashboard
- Click "Export PDF" or "Export Excel" buttons (top-right corner)
- Report downloads automatically with all tasks
- Navigate to All Tasks
- Apply filters if needed:
- Status: todo, in-progress, completed
- Priority: low, medium, high, urgent
- Click "PDF" or "Excel" button next to "Create Task"
- Filtered report downloads instantly
- Click "Reports" in the admin sidebar
- View Java integration architecture
- Read about features and technologies
- See instructions on where to use export buttons
- β Full system access
- β User management (create, edit, delete users)
- β All task operations
- β Generate reports
- β View analytics & KPIs
- β Access all pages
- β Create and assign tasks
- β View team tasks
- β Update task status
- β Generate reports
- β View dashboard
- β View assigned tasks only
- β Update own task status
- β Mark tasks as complete
- β View personal dashboard
npm start # Start server (production mode)
npm run dev # Start with nodemon (development)npm run dev # Development server with hot reload
npm run build # Production build
npm run preview # Preview production buildmvn clean install # Build project & install dependencies
mvn spring-boot:run # Run Spring Boot application
mvn test # Run unit tests
mvn clean # Clean target directory.\check-services.ps1# Health check
Invoke-RestMethod -Uri "http://localhost:8085/api/report/health"
# Test PDF generation (requires request body)
.\test-report-service.ps1# Get current user
curl http://localhost:5000/api/auth/me -H "Authorization: Bearer YOUR_JWT_TOKEN"
# Get all tasks
curl http://localhost:5000/api/tasks -H "Authorization: Bearer YOUR_JWT_TOKEN"{
"dependencies": {
"express": "^4.18.2",
"mongoose": "^8.0.3",
"jsonwebtoken": "^9.0.2",
"bcryptjs": "^2.4.3",
"axios": "^1.6.2",
"cors": "^2.8.5",
"dotenv": "^16.3.1"
}
}{
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.20.1",
"@reduxjs/toolkit": "^2.0.1",
"react-redux": "^9.0.4",
"axios": "^1.6.2",
"framer-motion": "^10.16.16",
"date-fns": "^3.0.6",
"react-icons": "^4.12.0"
}
}<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>1.3.34</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>Problem: Blank screen or "Connection refused"
# Solution 1: Check if frontend is running
cd frontend
npm run dev
# Solution 2: Clear cache and reinstall
rm -rf node_modules package-lock.json
npm installProblem: Port 5173 already in use
# Kill process on port 5173
Get-NetTCPConnection -LocalPort 5173 | Select -ExpandProperty OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }Problem: MongoDB connection error
# Check .env file exists and has correct MONGO_URI
cd backend-node
cat .env
# Verify MongoDB Atlas IP whitelist (0.0.0.0/0 for testing)Problem: Port 5000 already in use
# Kill process on port 5000
Get-NetTCPConnection -LocalPort 5000 | Select -ExpandProperty OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }Problem: "Java version mismatch" or compilation errors
# Set JAVA_HOME to Java 21
$env:JAVA_HOME = "C:\Program Files\Eclipse Adoptium\jdk-21.0.9.10-hotspot"
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
java -version # Verify shows Java 21
# Clean and rebuild
cd report-service
mvn clean installProblem: Maven build fails
# Update Maven
mvn --version
# Force update dependencies
mvn clean install -UProblem: Port 8085 already in use
# Find and kill process
Get-NetTCPConnection -LocalPort 8085 | Select -ExpandProperty OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force }Problem: Reports show 0 tasks
# 1. Verify all services are running
.\check-services.ps1
# 2. Check tasks exist in database (login and create tasks in UI)
# 3. Check backend logs for errors
# 4. Test without filters first (from Dashboard)Problem: "Failed to generate report" error
# 1. Check Java service is running
curl http://localhost:8085/api/report/health
# 2. Check backend can reach Java service
# Verify JAVA_REPORT_SERVICE_URL in backend .env
# 3. Check backend terminal for error detailsEmail: [email protected]
Password: admin123
Role: Admin
Email: [email protected]
Password: manager123
Role: Manager
Email: [email protected]
Password: member123
Role: Member
# Server Configuration
PORT=5000
NODE_ENV=development
# Database
MONGO_URI=mongodb+srv://username:[email protected]/taskflowpro?retryWrites=true&w=majority
# Authentication
JWT_SECRET=your_super_secret_jwt_key_minimum_32_characters
JWT_EXPIRE=7d
# Java Microservice
JAVA_REPORT_SERVICE_URL=http://localhost:8085
# CORS (optional)
FRONTEND_URL=http://localhost:5173# Server Configuration
server.port=8085
spring.application.name=TaskFlowPro Report Service
# Logging
logging.level.root=INFO
logging.level.com.taskflowpro=DEBUG
# File Upload (optional)
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB- Build the application:
cd frontend npm run build - Deploy the
dist/folder - Set environment variable:
VITE_API_URL=https://your-backend-url.com
- Push code to Git repository
- Set environment variables in hosting platform
- Use start script:
npm start - Ensure MongoDB Atlas IP whitelist includes hosting platform
Create Dockerfile in report-service/:
FROM eclipse-temurin:21-jdk
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "app.jar"]Build and run:
docker build -t taskflowpro-reports .
docker run -p 8085:8085 taskflowpro-reports1. User clicks "Export PDF" in React UI
β
2. Frontend sends GET request to Node backend
GET /api/reports/tasks/pdf
β
3. Node backend (reportRoutes.js):
- Authenticates user (JWT middleware)
- Fetches tasks from MongoDB
- Transforms data to Java DTO format
β
4. Node calls Java microservice:
POST http://localhost:8085/api/report/tasks/pdf
Body: { title, filters, tasks[] }
β
5. Java Spring Boot service (ReportController):
- Validates request (@Valid annotation)
- Calls PdfService to generate PDF
- OpenPDF creates formatted document
- Returns binary stream
β
6. Node streams PDF binary back to React
β
7. React creates Blob and download link
β
8. Browser triggers file download
β
9. User gets professionally formatted PDF! β
- Real-time KPIs (total, completed, in-progress, overdue tasks)
- Task distribution pie chart
- Priority breakdown bar chart
- 7-day productivity trend
- Recent activity timeline
- Quick actions (Create Task, View Reports)
- Table and Kanban board views
- Multi-filter system (status, priority, assignee)
- Search functionality
- Bulk actions
- Export to PDF/Excel with current filters
- Drag-and-drop (Kanban view)
- Java integration documentation
- Architecture visualization
- Technology showcase
- Feature highlights
- Quick links to export buttons
This project is licensed under the MIT License - feel free to use it for learning, academic purposes, or commercial projects.
Kamakshi Aggarwal
- GitHub: @Kamakshi0101
- Repository: TaskFlow_Pro
- OpenPDF - PDF generation library
- Apache POI - Excel generation library
- Spring Boot - Java microservices framework
- React Team - Amazing frontend library
- MongoDB - NoSQL database
- TailwindCSS - Utility-first CSS framework
If you encounter any issues:
- Check the Troubleshooting section
- Ensure all prerequisites are installed correctly
- Verify all three services are running:
.\check-services.ps1 - Check console logs in browser (F12) and terminal windows
This project demonstrates:
- β Full-stack development with MERN
- β Microservices architecture (Node + Java)
- β RESTful API design
- β JWT authentication & authorization
- β Role-based access control
- β Real-time data visualization
- β PDF/Excel generation in Java
- β Service-to-service communication
- β Professional UI/UX design
- β State management with Redux
- β Responsive design principles
Built with β€οΈ for academic demonstration of MERN + Java microservices integration
β Star this repo if you found it helpful!