A full-stack MERN project management application with role-based access control (Admin/Member), featuring Kanban-style task boards, team management, and a premium dark-mode dashboard.
Live URL: [Paste your Railway URL here]
Demo Credentials:
- Register a new account or use the signup page
- ✅ JWT-based signup & login
- ✅ Persistent sessions with token storage
- ✅ Protected routes with auto-redirect
- ✅ Create, edit, and delete projects
- ✅ Add/remove team members by email
- ✅ Role-based access: Admin (full control) / Member (view + update status)
- ✅ Kanban board (To Do → In Progress → Done)
- ✅ Task creation with title, description, priority, assignee, due date
- ✅ Status updates by any project member
- ✅ Priority levels: Low / Medium / High
- ✅ Overdue task highlighting
- ✅ Total projects, tasks, and assignments overview
- ✅ Task status breakdown with progress bars
- ✅ Overdue task alerts
- ✅ Recent activity feed
| Action | Admin | Member |
|---|---|---|
| Create/edit/delete project | ✅ | ❌ |
| Add/remove members | ✅ | ❌ |
| Create/delete tasks | ✅ | ❌ |
| Edit task (all fields) | ✅ | ❌ |
| Update task status | ✅ | ✅ |
| View project & tasks | ✅ | ✅ |
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, React Router, Axios, Lucide Icons |
| Backend | Node.js, Express.js |
| Database | MongoDB + Mongoose |
| Auth | JWT + bcrypt |
| Deployment | Railway |
├── client/ # React + Vite frontend
│ └── src/
│ ├── api/ # Axios instance
│ ├── context/ # Auth context
│ ├── components/ # Reusable UI components
│ └── pages/ # Page components
├── server/ # Express backend
│ ├── config/ # Database config
│ ├── middleware/ # Auth & RBAC middleware
│ ├── models/ # Mongoose schemas
│ └── routes/ # API routes
└── package.json # Root orchestration
- Node.js 18+
- MongoDB (local or Atlas)
# Clone the repo
git clone <your-repo-url>
cd taskflow
# Install all dependencies
npm run install:all
# Configure environment
cp server/.env.example server/.env
# Edit server/.env with your MONGO_URI and JWT_SECRET
# Run in development
npm run devThe app will be available at http://localhost:5173
| Variable | Description |
|---|---|
MONGO_URI |
MongoDB connection string |
JWT_SECRET |
Secret key for JWT tokens |
NODE_ENV |
development or production |
PORT |
Server port (default: 5000) |
- Push code to GitHub
- Create a new project on Railway
- Deploy from GitHub repo
- Add MongoDB plugin (or set MONGO_URI for Atlas)
- Set environment variables:
MONGO_URI,JWT_SECRET,NODE_ENV=production - Railway auto-detects Node.js and uses root
package.json(usesrailway.jsonif present) - Generate public domain from Settings
- Open the deployed site and confirm login + API works
- No
VITE_API_URLneeded in production: frontend calls same-origin/apiwhen deployed (Express serves the built React app + API).
POST /api/auth/register— Create accountPOST /api/auth/login— LoginGET /api/auth/me— Get current user
GET /api/projects— List user's projectsPOST /api/projects— Create projectGET /api/projects/:id— Get project details + tasksPUT /api/projects/:id— Update project (Admin)DELETE /api/projects/:id— Delete project (Admin)POST /api/projects/:id/members— Add member (Admin)DELETE /api/projects/:id/members/:userId— Remove member (Admin)
POST /api/tasks— Create task (Admin)PUT /api/tasks/:taskId— Update taskDELETE /api/tasks/:taskId— Delete task (Admin)
GET /api/dashboard— Get aggregated stats
MIT