Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ Project Management Platform

A full-stack Project Management Application (similar to Trello/Jira) with a React + Vite frontend and a Node.js + Express + MongoDB backend, built with a clean, modular architecture.


πŸš€ Features

🏒 Organization & Workspace

  • Create and manage organizations
  • Switch between organizations after login
  • Multiple workspaces per organization
  • Role-based access (Owner, Admin, Member)
  • Invite members, change roles, transfer ownership, remove members

πŸ“‹ Boards

  • Create boards inside workspaces
  • View boards in a Kanban-style layout
  • Update, archive, and delete boards
  • Unique board names per workspace

βœ… Tasks

  • Create, update, delete tasks
  • Assign tasks to users
  • Set priority (low, medium, high)
  • Track status (todo, in_progress, done)
  • Due date support
  • Task detail panel on the frontend

πŸ’¬ Comments

  • Add comments on tasks
  • Reply to comments (threaded system)
  • Delete comments (soft delete)
  • View comments from the task detail panel

πŸ“Š Activity Logs

  • Tracks all major actions:

    • Workspace creation
    • Board updates
    • Task actions
    • Comments
  • Activity feed page for audit & tracking

πŸ” Authentication & Authorization

  • JWT-based authentication
  • Access Token + Refresh Token system
  • Organization-level context validation
  • Role-based access control (backend + UI)
  • Protected frontend routes
  • Automatic token refresh on the client

πŸ”‘ Authentication Flow

🟒 Login / Register

  • User registers or logs in via the frontend

  • Backend returns:

    • accessToken (short-lived)
    • refreshToken (long-lived)
  • Frontend stores tokens in localStorage

🏒 Organization Switch

  • After login, user selects or creates an organization
  • Backend returns an org-scoped access token with orgId and orgRole
  • Frontend stores the active organization context

πŸ”„ Refresh Token

  • When the access token expires:

    • Frontend calls the refresh endpoint automatically
    • Backend returns a new access token
    • Original API request is retried

πŸšͺ Logout

  • Frontend calls logout API
  • Backend invalidates refresh token
  • Client clears tokens and active organization

πŸ“‘ Auth Endpoints & Pages

Register User

Page

/register

API

POST /auth/register

Login User

Page

/login

API

POST /auth/login

Response:

{
  "accessToken": "...",
  "refreshToken": "..."
}

Refresh Token

API

POST /auth/refresh

Request:

{
  "refreshToken": "...",
  "organizationId": "<active org id>"
}

Logout

API

POST /auth/logout

πŸ“„ Pagination

  • Implemented for task listing

  • Supports:

    • page
    • limit

πŸ—οΈ Tech Stack

Backend

  • Node.js
  • Express.js
  • MongoDB + Mongoose
  • JWT (Authentication)
  • Custom Middleware Architecture

Frontend

  • React 19
  • Vite
  • Redux Toolkit
  • React Router
  • Tailwind CSS
  • Fetch API (custom API client with auth refresh)

πŸ“ Project Structure

ProjectManagementPlatform/
  backend/
    config/
    middleware/
    modules/
      auth/
      organization/
      membership/
      workspace/
      boards/
      tasks/
      comments/
      activity/
      users/
    routes/
    utils/
    index.js
    readMe.md

  frontend/
    src/
      app/
      features/
        auth/
        organizations/
        members/
        workspaces/
        boards/
        tasks/
        comments/
        activity/
        dashboard/
        health/
      shared/
        api/
        config/
        lib/
        ui/
      widgets/
        layout/
      App.jsx
      main.jsx
      index.css
    readMe.md

πŸ“‘ API Base URL

Local URL

http://localhost:8080/api/v1

Deployed URL

https://flow-board-project-management-platform.onrender.com/api/v1

Frontend Environment

Create frontend/.env:

VITE_API_BASE_URL=http://localhost:8080/api/v1

πŸ§ͺ Sample Endpoints & Routes

πŸ“‘ Auth

API

POST   /auth/register
POST   /auth/login
POST   /auth/refresh
POST   /auth/logout

Pages

/login
/register

🏒 Organization

API

POST   /organizations
GET    /organizations
POST   /organizations/switch
GET    /organizations/:id

Pages

/organizations
/dashboard

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

API

GET    /members
POST   /members/invite
PATCH  /members/role
POST   /members/transfer-ownership
DELETE /members/:userId

Pages

/members

🏒 Workspace

API

POST   /workspaces
GET    /workspaces
GET    /workspaces/:workspaceId
PATCH  /workspaces/update/:workspaceId
PATCH  /workspaces/archive/:workspaceId
DELETE /workspaces/:workspaceId

Pages

/workspaces
/workspaces/:workspaceId
/workspaces/:workspaceId/boards/:boardId

πŸ“‹ Boards

API

POST   /boards
GET    /boards/workspace/:workspaceId
GET    /boards/workspace/:workspaceId/:boardId
PATCH  /boards/workspace/:workspaceId/:boardId
PATCH  /boards/workspace/:workspaceId/archive/:boardId
DELETE /boards/workspace/:workspaceId/:boardId

βœ… Tasks

API

POST   /tasks
GET    /tasks/board/:workspaceId/:boardId
GET    /tasks/board/:workspaceId/:boardId/:taskId
PATCH  /tasks/board/:workspaceId/:boardId/:taskId
DELETE /tasks/board/:workspaceId/:boardId/:taskId

πŸ’¬ Comments

API

POST   /comments
GET    /comments/task/:taskId
DELETE /comments/:commentId

πŸ“Š Activity Logs

API

GET /activity

Pages

/activity

πŸ“¦ Pagination Example

GET /tasks/board/:workspaceId/:boardId?page=1&limit=5

Response:

{
  "tasks": [...],
  "pagination": {
    "total": 25,
    "page": 1,
    "limit": 5,
    "totalPages": 5
  }
}

πŸ›‘οΈ Security Features

  • JWT Authentication (Access + Refresh tokens)
  • Role-based authorization on backend routes
  • Organization-level data isolation
  • Protected frontend routes and org context guard
  • Automatic access token refresh on the client
  • Bearer token attached to authenticated API requests
  • Input validation checks

🧠 Architecture

This project follows:

Backend

  • Controller β†’ Service β†’ Repository pattern
  • Separation of concerns
  • Scalable and maintainable structure

Frontend

  • Feature-based folder structure (features/<domain>/api, components, store)
  • Shared UI components and utilities in shared/
  • Central API client with intercept-style refresh retry
  • Redux Toolkit for auth and organization state
  • React Router for nested layouts and protected navigation

πŸ”₯ Future Improvements

  • Notifications system
  • File uploads (attachments)
  • Real-time updates (Socket.io)
  • Search & filtering
  • API documentation (Swagger)
  • Dark/light theme toggle
  • End-to-end tests (Playwright / Cypress)

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

Varun Jain


⭐ Final Note

This platform is:

  • βœ” Fully functional (frontend + backend)
  • βœ” Scalable and modular
  • βœ” Production-ready (core level)
  • βœ” Connected end-to-end with JWT auth and org context
  • βœ” Ready for deployment

πŸ‘‰ See backend/readMe.md and frontend/readMe.md for module-specific details πŸš€