Skip to content

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Trellis — Project Management Tool

A full-stack, Trello-style project management tool built for CodeAlpha's Full Stack Development Internship — Task 3.

Features:

  • User registration & login (JWT auth, hashed passwords)
  • Create projects and add members by email
  • Kanban board with three lanes: To Do / In Progress / Done
  • Create, update, assign, and delete tasks
  • Comment threads on each task
  • Real-time updates via WebSockets (Socket.io) — the bonus feature: when anyone on the project creates a task, moves it, or comments, every other connected member sees it update live, no refresh needed

Tech Stack

LayerTechnology
FrontendHTML, CSS, vanilla JavaScript
BackendNode.js, Express.js
Real-timeSocket.io (WebSockets)
AuthJWT (jsonwebtoken) + bcryptjs password hashing
DatabaseJSON file store (backend/data/db.json)

Like the e-commerce project, this uses a small file-based JSON store instead of MongoDB/Postgres, so it runs with zero external services — just npm install and go.

Project Structure

CodeAlpha_ProjectManagementTool/
├── backend/
│ ├── data/db.json
│ ├── middleware/auth.js
│ ├── routes/
│ │ ├── auth.js # register, login, email lookup
│ │ ├── projects.js # create/list projects, add members
│ │ ├── tasks.js # create/update/delete tasks
│ │ └── comments.js # task comment threads
│ ├── db.js
│ ├── seed.js
│ ├── server.js # Express + Socket.io server
│ └── package.json
└── frontend/
├── index.html # project dashboard
├── board.html # kanban board
├── login.html / register.html
├── css/styles.css
└── js/ # api.js, auth.js, dashboard.js, board.js

Running Locally

1. Backend

cd backend
npm install
cp .env.example .env # then edit JWT_SECRET to any long random string
npm start

The API + WebSocket server runs at http://localhost:5001. Health check: GET /api/health.

2. Frontend

Static, no build step:

cd frontend
npx serve .

Visit the printed local URL. The frontend talks to the API at http://localhost:5001/api and the WebSocket server at http://localhost:5001 (both set in frontend/js/api.js — update API_BASE/SOCKET_URL if you deploy the backend elsewhere).

Trying the Real-Time Feature

Open the same board in two browser tabs (or two devices), logged in as different project members. Create or move a task in one tab — it appears instantly in the other, no refresh.

API Reference

MethodRouteAuthDescription
POST/api/auth/registerCreate an account
POST/api/auth/loginLog in, returns a JWT
GET/api/auth/lookup?email=Find a user by email (for adding members)
GET/api/projectsList projects you own or belong to
POST/api/projectsCreate a project { name, description }
GET/api/projects/:idProject detail with member list
POST/api/projects/:id/membersAdd a member { email }
GET/api/tasks?projectId=List tasks for a project
POST/api/tasksCreate a task
PATCH/api/tasks/:idUpdate title/description/status/assignee
DELETE/api/tasks/:idDelete a task
GET/api/comments?taskId=List comments on a task
POST/api/commentsAdd a comment { taskId, text }

Authenticated routes expect Authorization: Bearer <token>. The WebSocket connection authenticates the same way, passing the token via io(url, { auth: { token } }).

Resetting Sample Data

cd backend
npm run seed

Notes for Submission

  • Push this folder to a GitHub repo named CodeAlpha_ProjectManagementTool.
  • .env is gitignored — don't commit real secrets.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages