Skip to content
This repository was archived by the owner on Jul 15, 2025. It is now read-only.

Repository files navigation

Project Management App

A modern, full-stack project management application built with Spring Boot and Next.js. This application provides comprehensive project and task management capabilities with a beautiful, responsive UI and robust backend API.

πŸš€ Features

Core Functionality

  • Project Management: Create, update, and manage projects with different statuses (Planned, In Progress, Completed, On Hold, Cancelled)
  • Task Management: Comprehensive task tracking with priorities, due dates, and status management
  • User Authentication: Secure JWT-based authentication with registration and login
  • Statistics Dashboard: Real-time insights into projects and tasks with visual analytics
  • Role-based Access: User and admin role support

Technical Features

  • RESTful API: Well-documented API with Swagger/OpenAPI integration
  • Database Management: H2 in-memory database with JPA/Hibernate
  • Security: Spring Security with JWT tokens and CORS configuration
  • Validation: Comprehensive input validation with custom error handling
  • Modern UI: Responsive design with Tailwind CSS and smooth animations

πŸ›  Tech Stack

Backend

  • Java 23 - Latest Java LTS features
  • Spring Boot 3.2.3 - Main framework
  • Spring Security - Authentication and authorization
  • Spring Data JPA - Database abstraction layer
  • H2 Database - In-memory database for development
  • JWT (JSON Web Tokens) - Stateless authentication
  • MapStruct - Object mapping
  • Lombok - Boilerplate code reduction
  • SpringDoc OpenAPI - API documentation

Frontend

  • Next.js 15 - React framework with App Router
  • React 19 - Latest React features
  • TypeScript - Type safety
  • Tailwind CSS - Utility-first CSS framework
  • Framer Motion - Smooth animations
  • Lucide React - Beautiful icons
  • Axios - HTTP client
  • Tremor - Data visualization components

πŸ“‹ Prerequisites

Before running this application, make sure you have:

  • Java 23 or later
  • Node.js 18 or later
  • npm or yarn
  • Maven 3.6+

πŸš€ Quick Start

1. Clone the Repository

git clone <repository-url>
cd project-management-app

2. Backend Setup

# Run the Spring Boot application
./mvnw spring-boot:run

# Or with Maven wrapper on Windows
mvnw.cmd spring-boot:run

# The backend will start on http://localhost:8080

3. Frontend Setup

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Run the development server
npm run dev

# The frontend will start on http://localhost:3000

4. Access the Application

πŸ“š API Documentation

The API is fully documented using OpenAPI/Swagger. Once the backend is running, visit:

Key API Endpoints

Authentication

  • POST /api/auth/register - User registration
  • POST /api/auth/login - User login
  • GET /api/auth/validate - Token validation

Projects

  • GET /api/projects - List all projects (with pagination)
  • POST /api/projects - Create new project
  • GET /api/projects/{id} - Get project by ID
  • PUT /api/projects/{id} - Update project
  • DELETE /api/projects/{id} - Delete project

Tasks

  • GET /api/tasks - List all tasks (with pagination)
  • 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 task

Statistics

  • GET /api/stats - Get dashboard statistics

πŸ—„ Database

The application uses H2 in-memory database for development. The database schema includes:

  • Users: User accounts with authentication
  • Projects: Project management with status and priority
  • Tasks: Task tracking with relationships to projects

H2 Console Access

  • URL: jdbc:h2:mem:testdb
  • Username: sa
  • Password: (empty)

πŸ” Security

  • JWT-based authentication with 1-hour token expiration
  • Password encryption using BCrypt
  • CORS configuration for frontend integration
  • Role-based access control (USER, ADMIN)

πŸ— Project Structure

project-management-app/
β”œβ”€β”€ src/main/java/com/project/projectmanagementapp/
β”‚   β”œβ”€β”€ config/          # Configuration classes
β”‚   β”œβ”€β”€ controller/      # REST controllers
β”‚   β”œβ”€β”€ dto/             # Data Transfer Objects
β”‚   β”œβ”€β”€ entity/          # JPA entities
β”‚   β”œβ”€β”€ exception/       # Exception handling
β”‚   β”œβ”€β”€ mapper/          # MapStruct mappers
β”‚   β”œβ”€β”€ repository/      # Data repositories
β”‚   β”œβ”€β”€ security/        # Security configuration
β”‚   └── service/         # Business logic
β”œβ”€β”€ src/main/resources/
β”‚   β”œβ”€β”€ application.properties
β”‚   └── db/migration/    # Database migrations
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/         # Next.js App Router pages
β”‚   β”‚   β”œβ”€β”€ components/  # Reusable UI components
β”‚   β”‚   └── lib/         # Utilities and services
β”‚   └── public/          # Static assets
└── pom.xml             # Maven configuration

πŸ§ͺ Testing

Backend Tests

# Run all tests
./mvnw test

# Run with coverage
./mvnw test jacoco:report

Frontend Tests

cd frontend
npm test

πŸ“¦ Building for Production

Backend

# Create executable JAR
./mvnw clean package

# Run the JAR
java -jar target/project-management-app-0.0.1-SNAPSHOT.jar

Frontend

cd frontend

# Build for production
npm run build

# Start production server
npm start

🌐 Deployment

Docker Deployment (Recommended)

# Build Docker image
docker build -t project-management-app .

# Run container
docker run -p 8080:8080 project-management-app

Environment Variables

For production deployment, configure these environment variables:

  • JWT_SECRET: Strong secret key for JWT signing
  • JWT_EXPIRATION: Token expiration time in milliseconds
  • DATABASE_URL: Production database URL
  • DATABASE_USERNAME: Database username
  • DATABASE_PASSWORD: Database password

🀝 Contributing

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

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Happy Project Managing! 🎯

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages