A full-stack, role-based task management platform built for teams that ship.
- About
- Key Features
- Tech Stack
- Architecture
- Project Structure
- Getting Started
- Deployment
- Roles & Permissions
- API Reference
- Environment Variables
- Contributing
- License
TaskFlow is a corporate-grade task management system designed for small-to-mid-sized teams. It provides a clean, intuitive interface for managing tasks across projects with real-time Kanban boards, dashboard analytics, and granular role-based access control.
Built as part of an IBM Internship Project, TaskFlow demonstrates enterprise-level full-stack development with modern web technologies — from a responsive Next.js frontend to a secure Express.js REST API backed by MongoDB Atlas.
🔗 Live Demo: taskflow-app-flame-kappa.vercel.app
|
|
|
|
|
|
┌──────────────────────────────────────────────────────────────────┐
│ CLIENT (Browser) │
│ │
│ Next.js 14 (App Router) ── TypeScript ── Tailwind CSS │
│ ┌───────────┬──────────┬──────────┬──────────┬───────────┐ │
│ │ Auth Page │ Dashboard│ Kanban │ Team │ Personal │ │
│ │ │ Stats │ Board │ Manage │ To-Do │ │
│ └───────────┴──────────┴──────────┴──────────┴───────────┘ │
│ │ Axios HTTP │ │
└──────────────────────────┼────────────┼──────────────────────────┘
│ REST API │
┌──────────────────────────┼────────────┼──────────────────────────┐
│ EXPRESS.JS SERVER │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Auth Routes │ │ Task Routes │ │ Upload Routes │ │
│ │ /api/auth │ │ /api/tasks │ │ /api/upload │ │
│ └──────┬───────┘ └──────┬───────┘ └────────┬───────────┘ │
│ │ │ │ │
│ ┌──────▼─────────────────▼────────────────────▼───────────┐ │
│ │ JWT Auth Middleware │ │
│ └──────────────────────┬──────────────────────────────────┘ │
│ │ Mongoose ODM │
└──────────────────────────┼──────────────────────────────────────┘
│
┌────────────▼────────────┐
│ MongoDB Atlas │
│ ┌──────┐ ┌──────────┐ │
│ │Users │ │ Tasks │ │
│ ├──────┤ ├──────────┤ │
│ │Admin │ │ Sessions │ │
│ ├──────┤ └──────────┘ │
│ │Manager│ │
│ └──────┘ │
└─────────────────────────┘
taskflow-app/
│
├── frontend/ # Next.js 14 Application
│ ├── app/ # App Router (pages & layouts)
│ │ ├── dashboard/ # Protected dashboard routes
│ │ ├── layout.tsx # Root layout with providers
│ │ ├── page.tsx # Landing / Auth page
│ │ └── globals.css # Global styles
│ ├── components/ # React components
│ │ ├── ui/ # Reusable UI primitives (shadcn/ui)
│ │ ├── auth-page.tsx # Login & Registration
│ │ ├── dashboard-layout.tsx # Main app shell & navigation
│ │ ├── dashboard-stats.tsx # Analytics cards & charts
│ │ ├── kanban-board.tsx # Drag-and-drop task board
│ │ ├── personal-todo.tsx # Personal task manager
│ │ ├── user-management.tsx # Team member listing
│ │ ├── task-modal.tsx # Task create/edit dialog
│ │ ├── project-modal.tsx # Project create/edit dialog
│ │ ├── project-overview.tsx # Project listing & overview
│ │ └── profile-settings-modal.tsx # User profile editor
│ ├── contexts/ # React Context providers
│ │ └── notification-context.tsx
│ ├── hooks/ # Custom React hooks
│ └── lib/ # Utilities & configuration
│
├── backend/ # Express.js REST API
│ ├── server.js # App entry point & config
│ ├── models/ # Mongoose schemas
│ │ ├── user.js # User model
│ │ ├── Admin.js # Admin model
│ │ ├── Manager.js # Manager model
│ │ ├── Task.js # Task model
│ │ └── activeSession.js # Session tracking
│ ├── routes/ # API route handlers
│ │ ├── authRoutes.js # Auth endpoints
│ │ ├── taskRoutes.js # Task CRUD endpoints
│ │ ├── uploadRoutes.js # File upload endpoints
│ │ └── user.js # User profile endpoints
│ ├── middleware/ # Express middleware
│ │ └── authMiddleware.js # JWT verification
│ └── scripts/ # Utility scripts
│
├── .gitignore
└── README.md
| Tool | Version | Purpose |
|---|---|---|
| Node.js | 18+ | Runtime environment |
| MongoDB | 6+ (or Atlas) | Database |
| Git | Latest | Version control |
git clone https://github.com/Ethical-21/taskflow-app.git
cd taskflow-appcd backend
npm installCreate a .env file in the backend/ directory:
PORT=5000
MONGO_URI=mongodb://localhost:27017/taskmanagement
JWT_SECRET=your_strong_secret_key_hereStart the development server:
npm run dev # Starts on http://localhost:5000cd frontend
npm installCreate a .env.local file in the frontend/ directory:
NEXT_PUBLIC_API_URL=http://localhost:5000Start the development server:
npm run dev # Starts on http://localhost:3000Navigate to http://localhost:3000 in your browser. Create an account to get started!
Frontend → Vercel
- Import the repository on vercel.com
- Set Root Directory to
frontend - Framework Preset will auto-detect as Next.js
- Add environment variable:
NEXT_PUBLIC_API_URL = https://your-backend.onrender.com - Deploy 🚀
Backend → Render
- Create a Web Service on render.com
- Connect your GitHub repository
- Set Root Directory to
backend - Configure:
- Build Command:
npm install - Start Command:
node server.js
- Build Command:
- Add environment variables:
MONGO_URI = your_mongodb_atlas_connection_string JWT_SECRET = your_strong_secret_key PORT = 10000 FRONTEND_URL = https://your-app.vercel.app - Deploy 🚀
Database → MongoDB Atlas
- Create a free cluster on cloud.mongodb.com
- Create a database user with read/write access
- Whitelist
0.0.0.0/0to allow Render access - Copy the connection string and add it as
MONGO_URIin Render env vars
| Feature | 🔴 Admin | 🟡 Manager | 🟢 Team Member |
|---|---|---|---|
| View all tasks | ✅ | ✅ | ❌ (own only) |
| Create tasks | ✅ | ✅ | ❌ |
| Edit / delete tasks | ✅ | ✅ | ❌ |
| Assign tasks to users | ✅ | ✅ | ❌ |
| Kanban drag-and-drop | ✅ | ✅ | ❌ |
| Team management | ✅ | ✅ | ❌ |
| View dashboard analytics | ✅ | ✅ | ✅ (own stats) |
| Personal to-do list | ✅ | ✅ | ✅ |
| Profile management | ✅ | ✅ | ✅ |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
POST |
/api/auth/signup |
Register a new user | ❌ |
POST |
/api/auth/signin |
Login & receive JWT | ❌ |
POST |
/api/auth/logout |
End current session | ✅ |
GET |
/api/auth/users |
List all users | ✅ |
GET |
/api/auth/active-sessions |
Get active sessions | ✅ |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
GET |
/api/tasks |
Get tasks (role-filtered) | ✅ |
POST |
/api/tasks |
Create a new task | ✅ |
PUT |
/api/tasks/:id |
Update a task | ✅ |
DELETE |
/api/tasks/:id |
Delete a task | ✅ |
GET |
/api/tasks/stats/summary |
Dashboard statistics | ✅ |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
GET |
/api/auth/user/profile |
Get user profile | ✅ |
PUT |
/api/auth/user/profile |
Update profile | ✅ |
POST |
/api/upload/avatar |
Upload profile picture | ✅ |
| Variable | Description | Example |
|---|---|---|
PORT |
Server port | 5000 |
MONGO_URI |
MongoDB connection string | mongodb+srv://... |
JWT_SECRET |
Secret key for JWT signing | my_super_secret_key |
FRONTEND_URL |
Allowed CORS origin (optional) | https://your-app.vercel.app |
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_API_URL |
Backend API base URL | http://localhost:5000 |
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ by Jay Tapodhan