A full-stack, real-time collaborative task management app for teams and individualsβdesigned for productivity, reliability, and instant feedback.
Visit Now π
- Secure Registration/Login: Passwords are hashed with bcrypt before storage.
- Session Management: Uses JWT stored in HttpOnly cookiesβprotecting against XSS.
- User Profiles: Users can view and update their name/profile.
- Full CRUD: Create, update, assign, and delete tasks.
- Task Model:
title(max 100 chars)description(multi-line)dueDate(date/time)priority(Low, Medium, High, Urgent)status(To Do, In Progress, Review, Completed)creatorId(user who created the task)assignedToId(user responsible for task)
- Live Updates via Socket.io:
All users on the dashboard see changes to any task (status, priority, assignee) in real-time. - Assignment Notifications:
Instantly notifies users (in-app and persistently) when theyβre assigned a task.
- Dashboard:
Organized views for: your assigned tasks, tasks you created, and overdue tasks. - Notifications Page:
See all recent eventsβmark as read, clear all. - (Planned) Filtering & Sorting:
Extensible frontend and backend for custom queries.
| Endpoint | Method | Description |
|---|---|---|
/api/auth/signup |
POST | Register new user |
/api/auth/login |
POST | Login and receive JWT cookie |
/api/auth/logout |
POST | Logout and clear JWT cookie |
/api/auth/profile |
PATCH | Update profile name |
/api/auth/users |
GET | List all users |
/api/auth/me |
GET | Get current authenticated user info |
| Endpoint | Method | Description |
|---|---|---|
/api/tasks |
POST | Create a new task |
/api/tasks/:id |
PATCH | Update an existing task |
/api/tasks/:id |
DELETE | Delete a task |
/api/tasks/me |
GET | Get all tasks for the current user |
| Endpoint | Method | Description |
|---|---|---|
/api/notifications |
GET | List user notifications |
/api/notifications/:id/read |
PATCH | Mark a notification as read |
/api/notifications/read-all |
PATCH | Mark all notifications as read |
- MongoDB with Prisma ORM
- Chosen for NoSQL scalability, flexible relations, ease of development, and rapid prototyping.
- JWT-based authentication
- Tokens stored in HttpOnly, Secure cookies to prevent XSS attacks.
- Passwords are securely hashed using bcrypt
- Plain-text passwords are never stored or exposed.
- Socket.io used for bi-directional real-time updates.
- Backend emits events such as:
task:assignedtask:updated
- Notification events are:
- Stored persistently in the database
- Displayed instantly in the UI
- Clear separation of concerns:
- Routes β Services β Repositories
- Improves testability, scalability, and maintainability.
- React Context used for authentication and task state.
- Socket subscriptions enable instant UI updates without polling.
- Models, APIs, and UI are designed for easy extension.
- Future additions may include:
- Advanced filtering
- Roles and permissions
- Additional notification channels
- When a task is updated or assigned, the backend emits corresponding Socket.io events.
- Users currently on dashboards or notification pages see updates instantly.
- No page refresh required.
- Assignment toasts appear in real time.
- Notifications are stored persistently so no updates are missed.
- All users can create, assign, edit, and delete tasks they created.
- No admin or moderator roles implemented in v1.
Before you begin, ensure you have the following installed on your local machine:
task-management-system/ βββ frontend/ # React + Vite app βββ backend/ # Node.js API with Prisma βββ README.md
Follow these steps to run the Next.js project on your local machine:
-
Clone the Repository:
git clone https://github.com/Zivanika/Task-Management-System.git cd Task-Management-System -
Install Dependencies:
Frontend and Backend using npm:
npm install
-
Run the Development Server:
Frontend and Backend using npm:
npm run dev
-
Open Your Browser:
Open your browser and navigate to http://localhost:5173. You should see the Vite application running!
Create a .env file inside the backend directory:
DATABASE_URL="your_database_connection_string" FRONTEND_URL=http://localhost:5173 JWT_SECRET="your_jwt_secret"
Generate Prisma client:
```sh
npx prisma generate
```
Run database migrations (if applicable):
```sh
npx prisma migrate
## Running Both Frontend - Backend Together
Open two terminals:
Terminal 1 (Backend):
```sh
cd backend
npm run dev
Terminal 2 (Frontend):
```sh
cd frontend
npm run dev
```
This project is licensed under the MIT License.
If you want to contact me, you can reach me through below handles.
Β© 2025 Harshita Barnwal




