Skip to content

AkashMs24/collabboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CollabBoard

Real-time collaborative project management β€” built for teams, engineered for production.

Node.js React PostgreSQL Socket.io Groq Vercel


Live Demo API Health

What It Does

CollabBoard is a full-stack, production-grade collaborative task management platform. Multiple users can work on the same Kanban board simultaneously β€” tasks move, update, and appear in real time across every connected session without a page refresh.

Think Linear or Jira, but built from scratch with a focus on engineering fundamentals: event-driven architecture, transactional database operations, secure token-based authentication, and an integrated AI layer powered by LLaMA 3.1 via Groq.


Live Features

  • Real-time board sync β€” changes appear instantly across all connected clients via WebSocket rooms scoped to board ID
  • Kanban task management β€” create, move, and delete tasks across columns (Backlog β†’ In Progress β†’ Review β†’ Done)
  • Priority & tagging β€” tasks support priority levels (High / Med / Low) and category tags (feat, bug, infra, docs, design...)
  • Online presence β€” see who's viewing the same board in real time
  • Activity log β€” live feed of all board actions
  • JWT authentication β€” access tokens (15min) + refresh tokens (7d) with single-use rotation
  • Workspace organization β€” group boards into workspaces
  • AI Assistant β€” three LLM-powered tools built into the sidebar (see below)
  • Admin Panel β€” real-time platform analytics, user management, and CSV export (owner-only)

🧠 AI Assistant

Powered by LLaMA 3.1 via Groq β€” free, fast, no credit card required.

Three tools are available directly from the sidebar:

✨ AI Task Generator

Describe your project in plain English β€” the AI builds a full, structured task breakdown across Backlog, In Progress, Review, and Done columns. Ideal for kicking off a new board without manually creating every card.

Input: project name + optional description β†’ Output: complete task plan ready to populate your board

✍️ Smart Task Writer

Give it a task title and optional project context β€” the AI writes a professional task description with acceptance criteria, edge cases, and definition of done. Turns a one-liner into a properly scoped ticket.

Input: task title + project name β†’ Output: description with acceptance criteria, auto-filled into the task form

πŸ“‹ AI Standup Bot

Paste your board ID (from the URL: /board/YOUR-ID-HERE) β€” the bot reads the last 24 hours of board activity and generates a daily standup report in the standard format: what was done, what's in progress, any blockers.

Input: board ID β†’ Output: formatted standup report based on real board activity

All three tools run on LLaMA 3.1-8B-Instant served via the Groq API. Latency is typically under 1 second.


βš™οΈ Admin Panel

Visible only to the platform owner. Accessible from the sidebar when logged in as the admin account.

  • Platform stats β€” total users, workspaces, boards, tasks, and new signups today
  • Signup chart β€” bar chart of new user registrations over the last 7 days
  • User directory β€” searchable list of all users with online/offline status and role badges
  • CSV export β€” one-click export of all user data
  • Auto-refresh β€” stats update every 30 seconds automatically; manual refresh also available

Tech Stack

Layer Technology Why
Frontend React 18, Zustand, Vite Fast SPA with lightweight global state
Styling Tailwind CSS Utility-first, consistent design system
Real-time Socket.io client/server Bidirectional event-driven communication
Backend Node.js, Express Lightweight, non-blocking I/O
Database PostgreSQL + pg pool ACID transactions, connection pooling
Auth JWT (access + refresh) Stateless auth with secure rotation
AI LLaMA 3.1 via Groq API Fast LLM inference, free tier, no GPU needed
Logging Winston + Morgan Structured production logging
Deployment Vercel (frontend), Render (backend + DB) Zero-cost production infrastructure

Architecture

Client (React + Zustand)
        β”‚
        β”œβ”€β”€ REST API (Express) ──────────── PostgreSQL
        β”‚         β”‚                         (connection pool)
        β”œβ”€β”€ WebSocket (Socket.io) ────────── Board rooms
        β”‚                                    (scoped broadcast)
        └── AI Routes (Express) ─────────── Groq API
                                             (LLaMA 3.1)

Key Engineering Decisions

Event-driven real-time sync β€” Socket.io rooms are scoped to boardId. When a task is created or moved, the server broadcasts only to clients in that board's room β€” not all connected users.

Optimistic UI updates β€” task moves update the local state immediately before the server confirms, giving instant feedback. If the server call fails, a toast error is shown.

JWT refresh token rotation β€” refresh tokens are single-use and stored in the database. On each refresh, the old token is invalidated and a new one is issued, preventing replay attacks.

Idempotency keys β€” task creation requests include a client-generated UUID. If the same request is retried (e.g., on network failure), the server deduplicates it β€” no duplicate tasks created.

DB transactions with row locking β€” task move operations use SELECT ... FOR UPDATE to prevent race conditions when multiple users move the same task simultaneously.

AI via Groq, not OpenAI β€” Groq's inference API serves LLaMA 3.1 at near-instant speeds with a generous free tier. No credit card, no cold starts, no per-token billing anxiety during demos.

Admin gate at the component level β€” the Admin Panel nav item and route are conditionally rendered based on the authenticated user's email, keeping the surface area minimal. No separate role column needed in the DB for a single-owner platform.


API Reference

Method Endpoint Auth Description
POST /api/auth/register β€” Create account
POST /api/auth/login β€” Login, receive tokens
POST /api/auth/refresh β€” Rotate access token
POST /api/auth/logout βœ“ Invalidate refresh token
GET /api/auth/me βœ“ Current user info
GET /api/workspaces βœ“ List workspaces
POST /api/workspaces βœ“ Create workspace
GET /api/workspaces/:id/boards βœ“ List boards in workspace
POST /api/workspaces/:id/boards βœ“ Create board (auto-creates 4 columns)
GET /api/boards/:id βœ“ Board + columns + tasks
POST /api/boards/:id/columns/:colId/tasks βœ“ Create task (idempotent)
PATCH /api/tasks/:id/move βœ“ Move task (transactional)
DELETE /api/tasks/:id βœ“ Delete task
GET /api/boards/:id/activity βœ“ Activity log
POST /api/ai/generate-tasks βœ“ AI task plan from description
POST /api/ai/write-description βœ“ AI task description + criteria
POST /api/ai/standup βœ“ AI standup from board activity
GET /api/admin/stats βœ“ Admin Platform stats
GET /api/admin/users βœ“ Admin All users
GET /api/admin/export βœ“ Admin CSV user export
GET /health β€” Health check

WebSocket Events

Event Direction Description
board:join Client β†’ Server Join a board's socket room
board:online_users Server β†’ Client Current viewers on join
user:joined Server β†’ Client Another user joined
user:left Server β†’ Client A user disconnected
task:created Bidirectional New task broadcast to room
task:moved Bidirectional Task column change
task:updated Bidirectional Task field update
task:deleted Bidirectional Task removal

Local Setup

Prerequisites: Node.js 18+, PostgreSQL 14+, Groq API key (free at console.groq.com)

# Clone
git clone https://github.com/AkashMs24/collabboard
cd collabboard

# Backend
cd server
npm install
cp .env.example .env
# Fill in: DATABASE_URL, JWT_SECRET, JWT_REFRESH_SECRET, CLIENT_URL, GROQ_API_KEY
npm run migrate
npm run dev

# Frontend (new terminal)
cd client
npm install
cp .env.example .env
# Set VITE_API_URL=http://localhost:4000
npm run dev

Open http://localhost:5173


Deployment

Backend β†’ Render

  1. New Web Service β†’ connect GitHub repo β†’ root: server/
  2. Add PostgreSQL plugin
  3. Set env vars: DATABASE_URL, JWT_SECRET, JWT_REFRESH_SECRET, CLIENT_URL, GROQ_API_KEY, NODE_ENV=production
  4. Shell β†’ npm run migrate

Frontend β†’ Vercel

  1. Import repo β†’ root: client/
  2. Set VITE_API_URL β†’ your Render backend URL
  3. Deploy

Groq API key β€” get yours free at console.groq.com β†’ API Keys β†’ Create. No credit card required. Add it as GROQ_API_KEY in both your .env and Render environment variables.


Project Structure

collabboard/
β”œβ”€β”€ server/
β”‚   └── src/
β”‚       β”œβ”€β”€ config/        # DB pool, logger, migrations
β”‚       β”œβ”€β”€ controllers/   # Auth, board, task, AI, admin logic
β”‚       β”œβ”€β”€ middleware/    # JWT auth, rate limiting, error handler
β”‚       β”œβ”€β”€ routes/        # API route definitions
β”‚       β”œβ”€β”€ socket/        # WebSocket event handlers
β”‚       └── index.js       # Server entry point
└── client/
    └── src/
        β”œβ”€β”€ components/    # Layout, UI components
        β”œβ”€β”€ context/       # Auth store (Zustand), Socket context
        β”œβ”€β”€ lib/           # Axios instance with auto token refresh
        β”œβ”€β”€ pages/         # Login, Register, Dashboard, Board, AI, Admin
        └── App.jsx

Author

Akash M S β€” GitHub

Built as a demonstration of production software engineering: real-time systems, event-driven architecture, secure JWT auth patterns, transactional database design, scalable backend architecture, and LLM integration without infrastructure overhead.

This is not a tutorial clone. Every architectural decision β€” from idempotency keys to optimistic UI to refresh token rotation to Groq-powered AI tooling β€” was made deliberately to reflect how production systems are actually built.

About

CollabBoard πŸ“‹ is a full-stack, production-grade collaborative task management platform. Multiple users can work on the same Kanban board simultaneously β€” tasks move, update, and appear in real time across every connected session without a page refresh

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages