Skip to content

danielrudzinski/KanbanProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

KanbanProject Logo

KanbanProject

Version 1.0.0 License MIT Java 23 React Build Status

A flexible Kanban board application designed to help teams visualize and manage their workflow efficiently. This project provides an interactive drag-and-drop interface for task management with support for multiple views, columns, rows, and WIP limits.

πŸ“˜ User Guide

πŸ“‹ Table of Contents

πŸ“‹ Overview

KanbanProject is a web-based task management system implementing Kanban methodology. It enables effective task visualization, workflow management, and productivity tracking through an intuitive drag-and-drop interface.

✨ Features

  • πŸ”„ Interactive Kanban board with drag-and-drop functionality
  • πŸ“Š Column and row-based work organization
  • ✏️ Task creation, editing, and deletion
  • πŸ“‹ Subtask support for breaking down complex tasks
  • ⚠️ Work In Progress (WIP) limits for columns, rows, and users
  • πŸ‘€ User assignments to tasks
  • 🏷️ Labels for task categorization
  • πŸŒ™ Dark mode support

πŸ› οΈ Technologies

  • Backend: Java 23 with Spring Boot
  • Frontend: React.js
  • Database: PostgreSQL
  • Containerization: Docker
  • Testing: JUnit, Mockito, JaCoCo for test coverage

πŸ“¦ Prerequisites

πŸ’» Installation

  1. Clone the repository:
git clone https://github.com/danielrudzinski/KanbanProject.git
cd KanbanProject

πŸš€ Running the Application

🐳 Using Docker

The easiest way to run the application is using Docker, which handles all dependencies:

  1. Make sure Docker and Docker Compose are installed on your system
  2. From the project root directory, run:
docker-compose up -d
  1. The application will be available at http://localhost:8080
  2. To stop the application:
docker-compose down

πŸ’» Running Locally

Backend

  1. Navigate to the backend directory (from root folder):
cd backend
  1. Configure the database and secrets:
    • Update src/main/resources/application.properties with your PostgreSQL connection settings Mainly these lines:
      • spring.datasource.url= (leave this as it is, except SPRING_DATASOURCE_DB:kanban <- edit this with your db's name)
      • server.port= (leave as is)
      • spring.datasource.username= (your login username for postgresql)
      • spring.datasource.password= (your passowrd for postgresql)
      • SPRING_MAIL_USERNAME = (your smtp mail login)
      • SPRING_MAIL_PASSWORD = (your mail's password or more likely auth token)
      • security.jwt.secret-key = (random jwt key, generate it online)

OR

Create .env file with these values in root folder AND /backend folder and leave application.properties as is.

  1. Build and run the backend:
./mvnw clean package
./mvnw spring-boot:run

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

Frontend

  1. Navigate to the frontend directory (from root folder):
cd frontend
  1. Install dependencies:
npm install
  1. Start the frontend application:
npm run dev

The frontend will be available at http://localhost:5173

πŸ“ Usage

  1. Create columns representing your workflow stages (e.g., "To Do", "In Progress", "Done")
  2. Add rows for categorizing work types or projects
  3. Create tasks by clicking the "Add Task" button
  4. Drag and drop tasks between columns to update their status
  5. Click on a task to view details, add subtasks, or assign team members
  6. Configure WIP limits for columns to prevent overloading stages

πŸ—οΈ Project Structure

The project is organized into two main directories:

  • /backend - Java Spring Boot application
    • /src/main/java - Java source code
    • /src/main/resources - config files
    • /src/test - test classes
  • /frontend - React.js web application
    • /src/components - React components
    • /src/services - API services
    • /src/styles - CSS and styling

πŸ§ͺ Testing

The project uses JUnit, Mockito, Jest, Eslint and Cypress for linting checks, unit, integration and e2e testing. Test coverage is monitored with JaCoCo.

All tests are automatically run on pull requests and pushes to the main branch through GitHub Actions workflows. See the workflows directory for configuration details.

Running Backend Tests

To run backend tests (from root folder):

cd backend
./mvn test

To generate a test coverage report:

./mvn clean test jacoco:report

The coverage report will be available at site>jacoco>index.html

Running Frontend Tests

To run frontend tests (from root folder):

cd frontend
npm test                  # Run Jest unit tests
npm run test:coverage     # Generate Jest test coverage report
npm run lint              # Run ESLint code quality checks
npm run cypress           # Open Cypress test runner for E2E tests
npm run cypress:headless  # Run Cypress tests in headless mode

The Jest coverage report will be available in the coverage directory.

πŸ‘₯ Contributing

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

πŸ‘¨β€πŸ’» Authors

Want to be added to this list? Check the Contributing section!

πŸ“„ License

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

About

Kanban Board

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •