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.
- π Overview
- β¨ Features
- π οΈ Technologies
- π¦ Prerequisites
- π» Installation
- π Running the Application
- π Usage
- ποΈ Project Structure
- π§ͺ Testing
- β Troubleshooting & FAQ
- π₯ Contributing
- π¨βπ» Authors
- π License
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.
- π 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
- Backend: Java 23 with Spring Boot
- Frontend: React.js
- Database: PostgreSQL
- Containerization: Docker
- Testing: JUnit, Mockito, JaCoCo for test coverage
- Java 23
- Node.js 18 or higher
- npm or Yarn
- PostgreSQL (if running locally)
- Docker and Docker Compose (if using containers)
- Clone the repository:
git clone https://github.com/danielrudzinski/KanbanProject.git
cd KanbanProjectThe easiest way to run the application is using Docker, which handles all dependencies:
- Make sure Docker and Docker Compose are installed on your system
- From the project root directory, run:
docker-compose up -d- The application will be available at http://localhost:8080
- To stop the application:
docker-compose down- Navigate to the backend directory (from root folder):
cd backend- Configure the database and secrets:
- Update
src/main/resources/application.propertieswith 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)
- Update
OR
Create .env file with these values in root folder AND /backend folder and leave application.properties as is.
- Build and run the backend:
./mvnw clean package
./mvnw spring-boot:runThe backend will start on http://localhost:8080
- Navigate to the frontend directory (from root folder):
cd frontend- Install dependencies:
npm install- Start the frontend application:
npm run devThe frontend will be available at http://localhost:5173
- Create columns representing your workflow stages (e.g., "To Do", "In Progress", "Done")
- Add rows for categorizing work types or projects
- Create tasks by clicking the "Add Task" button
- Drag and drop tasks between columns to update their status
- Click on a task to view details, add subtasks, or assign team members
- Configure WIP limits for columns to prevent overloading stages
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
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.
To run backend tests (from root folder):
cd backend
./mvn testTo generate a test coverage report:
./mvn clean test jacoco:report
The coverage report will be available at site>jacoco>index.html
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 modeThe Jest coverage report will be available in the coverage directory.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Daniel RudziΕski - ** - GitHub Profile
- Dominik SmoliΕski - ** - GitHub Profile
Want to be added to this list? Check the Contributing section!
This project is licensed under the MIT License - see the LICENSE file for details.
