A full-stack Jira-like project management application built with Java Spring Boot backend and Next.js frontend.
- ✅ JWT Authentication & Authorization
- ✅ User Management (Register/Login)
- ✅ Project Management (CRUD operations)
- ✅ Task Management with Kanban board support
- ✅ User-Project relationship management
- ✅ PostgreSQL database integration
- ✅ RESTful API design
- ✅ Security with Spring Security
- ✅ Modern React with TypeScript
- ✅ Authentication system with protected routes
- ✅ Responsive design with Tailwind CSS
- ✅ Dashboard with project and task overview
- ✅ Project management interface
- ✅ Kanban board for task management
- ✅ User management and project collaboration
- ✅ Real-time task status updates
- Java 21
- Spring Boot 3.5.5
- Spring Security - Authentication & Authorization
- Spring Data JPA - Database operations
- PostgreSQL - Database
- JWT - Token-based authentication
- Lombok - Reduce boilerplate code
- Maven - Build tool
- Next.js 15 - React framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- Axios - HTTP client
- React Hook Form - Form handling
- js-cookie - Cookie management
- Docker and Docker Compose installed
- Clone the repository and navigate to the project directory
- Run the startup script:
./start.shOr manually with Docker Compose:
docker-compose up --buildThis will start all services with proper health checks:
- Database (PostgreSQL) - starts first
- Backend (Spring Boot) - waits for database to be healthy
- Frontend (Next.js) - waits for backend to be healthy
- 🌐 Frontend: http://localhost:3000
- 🔧 Backend API: http://localhost:8080/api
- 🗄️ Database: localhost:5432 (postgres/postgres)
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild and restart
docker-compose up --build- Java 21 or higher
- Node.js 18 or higher
- PostgreSQL database
- Maven (for backend)
- pnpm (for frontend)
- Install PostgreSQL and create a database:
CREATE DATABASE jira_clone;- Update the database credentials in
backend/src/main/resources/application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/jira_clone
spring.datasource.username=your_username
spring.datasource.password=your_password- Navigate to the backend directory:
cd backend- Install dependencies and run the application:
./mvnw clean install
./mvnw spring-boot:runThe backend will start on http://localhost:8080
- Navigate to the frontend directory:
cd frontend- Install dependencies:
pnpm install- Start the development server:
pnpm devThe frontend will start on http://localhost:3000
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/projects- Get user's projectsPOST /api/projects- Create new projectGET /api/projects/{id}- Get project detailsPUT /api/projects/{id}- Update projectDELETE /api/projects/{id}- Delete projectPOST /api/projects/{id}/members/{userId}- Add member to projectDELETE /api/projects/{id}/members/{userId}- Remove member from project
GET /api/tasks/project/{projectId}- Get project tasksPOST /api/tasks/project/{projectId}- Create new taskGET /api/tasks/{id}- Get task detailsPUT /api/tasks/{id}- Update taskDELETE /api/tasks/{id}- Delete taskGET /api/tasks/my- Get user's assigned tasks
GET /api/users- Get all usersGET /api/users/search?query={query}- Search users
- Registration/Login: Create an account or login with existing credentials
- Dashboard: Overview of your projects and assigned tasks
- Projects: Create and manage projects, add team members
- Tasks: Create tasks within projects, assign to team members
- Kanban Board: Drag and drop tasks between different status columns (TODO, IN_PROGRESS, IN_REVIEW, DONE)
venus/
├── backend/ # Spring Boot backend
│ ├── src/main/java/
│ │ └── com/backend/backend/
│ │ ├── config/ # Security configuration
│ │ ├── controller/ # REST controllers
│ │ ├── dto/ # Data transfer objects
│ │ ├── model/ # JPA entities
│ │ ├── repository/ # Data repositories
│ │ ├── security/ # JWT utilities
│ │ └── service/ # Business logic
│ └── src/main/resources/
│ └── application.properties
├── frontend/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # Next.js app router
│ │ ├── components/ # React components
│ │ ├── contexts/ # React contexts
│ │ └── lib/ # API services and utilities
│ └── package.json
└── README.md
- JWT-based authentication
- Password encryption with BCrypt
- Protected API endpoints
- Role-based access control
- CORS configuration for frontend integration
- Secure cookie handling
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.