Skip to content

StickyDice/venus

Repository files navigation

Jira Clone - Project Management Application

A full-stack Jira-like project management application built with Java Spring Boot backend and Next.js frontend.

Features

Backend (Java Spring Boot)

  • ✅ 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

Frontend (Next.js)

  • ✅ 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

Technology Stack

Backend

  • 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

Frontend

  • Next.js 15 - React framework
  • TypeScript - Type safety
  • Tailwind CSS - Styling
  • Axios - HTTP client
  • React Hook Form - Form handling
  • js-cookie - Cookie management

Getting Started

Option 1: Docker Compose (Recommended)

Prerequisites

  • Docker and Docker Compose installed

Quick Start

  1. Clone the repository and navigate to the project directory
  2. Run the startup script:
./start.sh

Or manually with Docker Compose:

docker-compose up --build

This 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

Access the Application

Docker Commands

# Start services
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

# Rebuild and restart
docker-compose up --build

Option 2: Local Development

Prerequisites

  • Java 21 or higher
  • Node.js 18 or higher
  • PostgreSQL database
  • Maven (for backend)
  • pnpm (for frontend)

Database Setup

  1. Install PostgreSQL and create a database:
CREATE DATABASE jira_clone;
  1. 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

Backend Setup

  1. Navigate to the backend directory:
cd backend
  1. Install dependencies and run the application:
./mvnw clean install
./mvnw spring-boot:run

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

Frontend Setup

  1. Navigate to the frontend directory:
cd frontend
  1. Install dependencies:
pnpm install
  1. Start the development server:
pnpm dev

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

API Endpoints

Authentication

  • POST /api/auth/register - Register a new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user

Projects

  • GET /api/projects - Get user's projects
  • POST /api/projects - Create new project
  • GET /api/projects/{id} - Get project details
  • PUT /api/projects/{id} - Update project
  • DELETE /api/projects/{id} - Delete project
  • POST /api/projects/{id}/members/{userId} - Add member to project
  • DELETE /api/projects/{id}/members/{userId} - Remove member from project

Tasks

  • GET /api/tasks/project/{projectId} - Get project tasks
  • POST /api/tasks/project/{projectId} - Create new task
  • GET /api/tasks/{id} - Get task details
  • PUT /api/tasks/{id} - Update task
  • DELETE /api/tasks/{id} - Delete task
  • GET /api/tasks/my - Get user's assigned tasks

Users

  • GET /api/users - Get all users
  • GET /api/users/search?query={query} - Search users

Usage

  1. Registration/Login: Create an account or login with existing credentials
  2. Dashboard: Overview of your projects and assigned tasks
  3. Projects: Create and manage projects, add team members
  4. Tasks: Create tasks within projects, assign to team members
  5. Kanban Board: Drag and drop tasks between different status columns (TODO, IN_PROGRESS, IN_REVIEW, DONE)

Project Structure

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

Security Features

  • JWT-based authentication
  • Password encryption with BCrypt
  • Protected API endpoints
  • Role-based access control
  • CORS configuration for frontend integration
  • Secure cookie handling

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is open source and available under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors