An open API service indexing awesome lists of open source software.

https://github.com/smruthik24/kanban-app

A simplified Trello-like Kanban application built with full-stack web technologies to demonstrate HLD, LLD, and real-time full-stack development capabilities. This project enables users to create workspaces, boards, lists, and cards, collaborate in real-time (via WebSockets), and manage tasks, comments, and activity logs efficiently.
https://github.com/smruthik24/kanban-app

expressjs fastapi mongodb nodejs reactjs swagger-ui

Last synced: 3 months ago
JSON representation

A simplified Trello-like Kanban application built with full-stack web technologies to demonstrate HLD, LLD, and real-time full-stack development capabilities. This project enables users to create workspaces, boards, lists, and cards, collaborate in real-time (via WebSockets), and manage tasks, comments, and activity logs efficiently.

Awesome Lists containing this project

README

          

# ๐Ÿ—‚๏ธ Kanban Board โ€“ Trello-like Real-Time Collaboration App

A simplified **Trello-like Kanban application** built with full-stack web technologies to demonstrate HLD, LLD, and real-time full-stack development capabilities.
This project enables users to create **workspaces, boards, lists, and cards**, collaborate in **real-time** (via WebSockets), and manage **tasks, comments, and activity logs** efficiently.

---

## โš™๏ธ Tech Stack & Rationale

### **Backend**
- **Node.js + Express.js**: Lightweight, scalable, and perfect for REST APIs with async I/O.
- **MongoDB (Mongoose)**: Flexible NoSQL database for nested structures like boards, lists, and cards.
- **JWT Authentication**: Secure token-based auth for stateless API sessions.
- **Socket.IO**: Real-time collaboration for card movements and live comments.
- **bcrypt**: For password hashing and user authentication security.

### **Frontend**
- **React.js (Vite/CRA)**: Modular UI components for a responsive and interactive Kanban board.
- **React DnD / react-beautiful-dnd**: Enables drag-and-drop list and card reordering.
- **Axios + React Query**: Efficient API communication with caching.
- **Tailwind CSS**: Rapid UI styling and responsive design.

The combination ensures a **scalable, maintainable, and real-time interactive** system with minimal latency and high UX responsiveness.

---

## ๐Ÿš€ Setup & Run Instructions

### ๐Ÿงฉ Prerequisites
- Node.js v18+
- MongoDB (local or Atlas)
- npm / yarn

---

### ๐Ÿ—„ Backend Setup

```bash
cd backend
npm install
```
### Create a .env file in the backend/ directory (see .env.example below).
Then run the backend server:

```bash
npm run dev
```

To seed demo data:

```bash
node scripts/seed.js
```

This will populate demo users, workspace, board, lists, and cards.

๐ŸŽจ Frontend Setup
``` bash
cd frontend
npm install
npm run dev
```

### Access the app at:
๐Ÿ‘‰ http://localhost:3000

### ๐Ÿง  Environment Variables Sample

Create a file named .env (or .env.example for reference):

### MongoDB Connection
MONGODB_URI=mongodb://127.0.0.1:27017/kanban_app

### JWT Secret
JWT_SECRET=your_jwt_secret_key

### Database name
DB_NAME=test_database

### CORS ORIGIN
CORS_ORIGINS=http://localhost:3000

## ๐Ÿงฑ Database Schema Overview
### ๐Ÿงฉ Entity Relationship Diagram (ERD)

### ๐Ÿ“˜ Key Collections
| **Collection** | **Description** |
|----------------|-----------------|
| **Users** | Registered users with name, email, avatar, and hashed password. |
| **Workspaces** | Organizational groups containing multiple boards. |
| **Boards** | Contain lists, members, and visibility settings. |
| **Lists** | Columns in a board (Backlog, In Progress, Done, etc.). |
| **Cards** | Tasks within lists, can be moved, labeled, and assigned. |
| **Comments** | User discussions attached to cards. |
| **Activity** | Audit logs of actions (card created, moved, commented). |

### ๐Ÿงฉ Example Document (Cards Collection)
{
"title": "Build Login Page",
"description": "Implement JWT authentication and UI for login/signup.",
"labels": ["frontend", "auth"],
"assignees": ["user123"],
"dueDate": "2025-10-15",
"position": 1024,
"listId": "list_001"
}

### ๐Ÿ”„ Real-Time Server Setup

Real-time events are powered by Socket.IO.

### ๐Ÿ”Œ Real-time Events
Event Description
cardMoved Broadcasts when a card is moved between lists.
commentAdded Sends a live update when a new comment is added.
boardUpdated Notifies connected clients of board updates.

## ๐Ÿ“‚ Project Structure

```plaintext
๐Ÿ“ kanban-app/
โ”œโ”€โ”€ ๐Ÿ“ backend/
โ”‚ โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ package.json
โ”‚ โ”œโ”€โ”€ .env.example
โ”‚
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ frontend/
โ”‚ โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ public/
โ”‚ โ”œโ”€โ”€ package.json
โ”‚ โ”œโ”€โ”€ components.json
โ”‚ โ”œโ”€โ”€ package.json
โ”‚
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ docs/
โ”‚ โ”œโ”€โ”€ HLD.md
โ”‚ โ”œโ”€โ”€ LLD.md
โ”‚ โ”œโ”€โ”€ architecture-diagram.png
โ”‚ โ”œโ”€โ”€ erd.png
โ”‚ โ””โ”€โ”€ api-reference.yaml (Swagger)
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ scripts/
โ”‚ โ””โ”€โ”€ seed.js
โ”‚
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ ๐Ÿ“ demo-screenshots/
โ”œโ”€โ”€ Activity.png
โ”œโ”€โ”€ Card.png
โ”œโ”€โ”€ Dashboard.png
โ”œโ”€โ”€ Newboard.png
โ”œโ”€โ”€ Register.png
โ”œโ”€โ”€ Workspace.png
โ””โ”€โ”€ labels.png

```

### ๐Ÿงช API Testing

Use Postman or curl to test API endpoints.

Example:
``` bash
curl -X POST http://localhost:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"demo@example.com", "password":"123456"}'
```

### ๐Ÿ“ธ Demo Screenshots
Feature Screenshot
Register

Board View

Dashboard

Card Modal

Card

Workspace

Workspace

Real-time comments

labels

### โš–๏ธ Known Limitations

Offline sync not yet supported (planned feature).

Only two roles supported (owner/member).

Activity log limited to 20 most recent events.

Search limited to card title, label, or assignee.

### Next Steps

Add CRDTs or server-side conflict resolution for real-time consistency.

Expand role-based access control.

Add Calendar View and analytics dashboards.

Integrate email notifications for mentions.

Implement offline-first support.