A stunning, modern Kanban board with glassmorphism design and smooth drag-and-drop
Features β’ Tech Stack β’ Quick Start β’ API β’ Contributing
- Kanban Board β Organize tasks across 5 status columns: Todo, In Progress, Done, Blocked, Deferred
- Swimlanes β Group tasks by project, sprint, or any category
- Drag-and-Drop β Intuitive task management powered by Sortable.js
- Real-Time Sync β Server-Sent Events (SSE) for live updates across tabs/devices
- Glassmorphism Design β Modern frosted-glass aesthetic with depth effects
- Dark Theme β Easy on the eyes with carefully crafted color palette
- Smooth Animations β GSAP-powered transitions and micro-interactions
- Mobile Responsive β Touch-optimized layout with vertical stacking
- Task Filters β Hide Done tasks or show only Blocked items with one click
- Progress Pills β Visual status distribution in swimlane headers
- Collapse/Expand β Focus on what matters with lane toggling
- Tags β Categorize tasks with color-coded labels
- Async Write-Behind β Optimistic UI updates with background persistence
- Incremental Loading β Lanes load first, then tasks stream in per-lane
- Parallel Tests β 103 tests run with unlimited thread parallelism
| Technology | Version | Purpose |
|---|---|---|
| Java | 21 | Language |
| Spring Boot | 3.3.0 | Framework |
| Spring Data JPA | - | ORM |
| PostgreSQL | 15+ | Database |
| Log4j2 | - | Logging |
| Maven | - | Build tool |
| Technology | Version | Purpose |
|---|---|---|
| Alpine.js | 3.x | Reactivity |
| Bootstrap | 5.3 | Layout & components |
| Sortable.js | 1.15 | Drag-and-drop |
| Axios | - | HTTP client |
| Font Awesome | 6.4 | Icons |
- Java 21 or higher
- Maven 3.8+
- PostgreSQL 15+ (or Docker)
git clone https://github.com/shhrohan/tasks.git
cd tasks/todo-appCreate a PostgreSQL database:
CREATE DATABASE todo_db;Update src/main/resources/application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/todo_db
spring.datasource.username=your_username
spring.datasource.password=your_passwordmvn spring-boot:runNavigate to http://localhost:8080 π
# Start PostgreSQL
docker run -d --name todo-db \
-e POSTGRES_DB=todo_db \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
postgres:15
# Run the app
mvn spring-boot:run| Method | Endpoint | Description |
|---|---|---|
GET |
/api/swimlanes |
Get all swimlanes |
GET |
/api/swimlanes/active |
Get active swimlanes |
GET |
/api/swimlanes/completed |
Get completed swimlanes |
POST |
/api/swimlanes |
Create swimlane |
PATCH |
/api/swimlanes/{id}/complete |
Mark as complete |
PATCH |
/api/swimlanes/{id}/uncomplete |
Reactivate |
PATCH |
/api/swimlanes/reorder |
Reorder swimlanes |
DELETE |
/api/swimlanes/{id} |
Delete (soft) |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tasks |
Get all tasks |
GET |
/api/tasks/swimlane/{id} |
Get tasks by lane |
GET |
/api/tasks/{id} |
Get specific task |
POST |
/api/tasks |
Create task |
PUT |
/api/tasks/{id} |
Update task |
DELETE |
/api/tasks/{id} |
Delete task |
PATCH |
/api/tasks/{id}/move |
Move task |
| Endpoint | Description |
|---|---|
GET /api/sse/stream |
SSE subscription |
Event Types:
initβ Connection establishedtask-updatedβ Task created/modifiedtask-deletedβ Task removedlane-updatedβ Lane modifiedheartbeatβ Keep-alive ping
# Run all tests
mvn test
# Run with coverage report
mvn test jacoco:report
# Report: target/site/jacoco/index.htmlTest Summary:
- β 103 tests passing
- π 93% instruction coverage
- β‘ Parallel execution enabled
todo-app/
βββ src/
β βββ main/
β β βββ java/com/example/todo/
β β β βββ controller/ # REST endpoints
β β β βββ service/ # Business logic
β β β βββ dao/ # Data access layer
β β β βββ repository/ # JPA repositories
β β β βββ model/ # Entities
β β βββ resources/
β β βββ static/
β β β βββ css/ # Glassmorphism styles
β β β βββ js/ # Alpine.js modules
β β βββ templates/ # Thymeleaf templates
β βββ test/ # Unit & integration tests
βββ CHANGELOG.md # Version history
βββ GEMINI.md # AI assistant rules
βββ pom.xml # Maven config
| Variable | Default | Description |
|---|---|---|
SERVER_PORT |
8080 |
Application port |
SPRING_PROFILES_ACTIVE |
default |
Profile (dev/prod) |
SPRING_DATASOURCE_URL |
- | Database URL |
SPRING_DATASOURCE_USERNAME |
- | DB username |
SPRING_DATASOURCE_PASSWORD |
- | DB password |
| Profile | Description |
|---|---|
default |
Local development with PostgreSQL |
prod |
Production with Azure PostgreSQL |
test |
H2 in-memory for tests |
- Fork the repository
- Create a feature branch:
git checkout -b feat/amazing-feature - Commit your changes:
git commit -m 'feat: Add amazing feature' - Push to the branch:
git push origin feat/amazing-feature - Open a Pull Request
feat:New featurefix:Bug fixdocs:Documentationrefactor:Code refactoringtest:Adding testschore:Maintenance
This project is licensed under the MIT License β see the LICENSE file for details.
- Alpine.js β Lightweight reactivity
- Sortable.js β Drag-and-drop
- Spring Boot β Backend framework
- Bootstrap β UI components
Made with β€οΈ by @shhrohan