A full-stack, production-ready task management platform built with a 3-tier role hierarchy (Super Admin β Admin β Tasker). Features real-time analytics, role-scoped data isolation, and a modern glassmorphism UI.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SUPER ADMIN β
β (1 per system β seeded in DB) β
β Sees ALL data Β· Creates/Manages Admins β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ€
β ADMIN #1 β ADMIN #2 β
β (max 5 taskers) β (max 5 taskers) β
β Sees only their β Sees only their β
β team's data β team's data β
βββββ¬ββββ¬ββββ¬ββββ¬βββββββΌββββ¬ββββ¬ββββ¬ββββ¬βββββββββββββββ€
β T1β T2β T3β T4β T5 β T1β T2β T3β T4β T5 β
β Taskers see only β Taskers see only β
β their own tasks β their own tasks β
βββββ΄ββββ΄ββββ΄ββββ΄βββββββ΄ββββ΄ββββ΄ββββ΄ββββ΄βββββββββββββββ
- Super Admin β Global dashboard, create/deactivate admins, view all analytics across every admin and tasker
- Admin β Manage up to 5 taskers, create projects/tasks, review submissions, scoped analytics
- Tasker β View assigned tasks, update status, submit for review, add comments
ASSIGNED β IN_PROGRESS β IN_REVIEW β COMPLETED β
β
FLAGGED π© β (revision) β IN_REVIEW
- Quality scores and time scores on review
- Status history audit trail
- Overdue task tracking
- Comment threads on tasks
- Completion trends (30-day line charts)
- Status distribution (pie charts)
- Per-project progress bars
- Per-tasker performance comparison
- Review metrics (approval rate, most flagged)
- Productivity tracking
- JWT access + refresh token rotation
- HTTP-only cookie authentication
- bcrypt password hashing (12 rounds)
- Role-based middleware guards (
superAdminOnly,adminOrAbove,scopeGuard) - Email normalization on all auth flows
- No self-registration β invite-only system
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, TailwindCSS, Zustand, React Hook Form, Recharts |
| Backend | Node.js, Express.js, Prisma ORM |
| Database | PostgreSQL (Railway) |
| Auth | JWT (access + refresh), bcryptjs, HTTP-only cookies |
| Deployment | Railway (auto-deploy from GitHub) |
- Node.js β₯ 20.x
- PostgreSQL database
- npm
git clone https://github.com/devashish588/Taskerzzz.git
cd Taskerzzz
npm run install:allCreate backend/.env:
DATABASE_URL="postgresql://user:password@localhost:5432/taskerzz"
JWT_SECRET="your-secret-key-min-32-chars"
JWT_REFRESH_SECRET="another-secret-key-min-32-chars"
FRONTEND_URL="http://localhost:5173"
PORT=5000
NODE_ENV=developmentcd backend
npx prisma generate
npx prisma db push
node prisma/seed.js# From root directory
npm run devThis starts both backend (:5000) and frontend (:5173) concurrently.
| Role | Password | |
|---|---|---|
| Super Admin | superadmin@taskflow.com |
SuperAdmin@123 |
| Admin 1 | admin@taskerzz.com |
admin123 |
| Admin 2 | priya.admin@taskerzz.com |
admin123 |
| Tasker | alice@taskerzz.com |
tasker123 |
All 10 taskers use password
tasker123. Emails: alice, bob, charlie, diana, ethan, fiona, george, hannah, ivan, julia@taskerzz.com
Taskerzz/
βββ backend/
β βββ prisma/
β β βββ schema.prisma # Database schema with Role enum
β β βββ seed.js # Seeds 13 users, 5 projects, 32+ tasks
β βββ src/
β βββ app.js # Express server + CORS + routes
β βββ controllers/
β β βββ authController.js # Login, logout, refresh, invite
β β βββ superAdminController.js # CRUD admins, global analytics
β β βββ adminController.js # Invite taskers, scoped analytics
β β βββ taskController.js # Role-scoped CRUD
β β βββ projectController.js # Role-scoped projects
β β βββ analyticsController.js # Role-scoped analytics
β β βββ userController.js # User management
β β βββ commentController.js # Task comments
β βββ middleware/
β β βββ auth.js # authenticate, superAdminOnly, adminOrAbove, scopeGuard
β βββ routes/
β β βββ superAdminRoutes.js # /api/super-admin/*
β β βββ adminRoutes.js # /api/admin/*
β β βββ authRoutes.js # /api/auth/*
β β βββ taskRoutes.js # /api/tasks/*
β β βββ projectRoutes.js # /api/projects/*
β β βββ analyticsRoutes.js # /api/analytics/*
β β βββ userRoutes.js # /api/users/*
β βββ utils/
β βββ prisma.js # Prisma client instance
β βββ jwt.js # Token generation/verification
β βββ email.js # Email utilities
βββ frontend/
β βββ src/
β βββ App.jsx # 3-role routing
β βββ api/
β β βββ axios.js # Axios instance with interceptors
β β βββ modules.js # API modules (superAdminApi, adminApi, etc.)
β βββ components/
β β βββ Layout.jsx # App shell (sidebar + header + content)
β β βββ Sidebar.jsx # Role-based navigation
β β βββ ProtectedRoute.jsx # Route guards
β β βββ Header.jsx # Top bar
β βββ pages/
β β βββ superadmin/ # Super Admin pages
β β β βββ Dashboard.jsx # Global KPIs + admin comparison chart
β β β βββ AdminList.jsx # All admins table
β β β βββ CreateAdmin.jsx # Create admin form
β β β βββ AdminDetail.jsx # Admin detail + tasker table
β β βββ admin/ # Admin pages
β β β βββ Dashboard.jsx # Scoped analytics dashboard
β β β βββ Tasks.jsx # Task management
β β β βββ Projects.jsx # Project management
β β β βββ Team.jsx # Tasker management + invite
β β β βββ Analytics.jsx # Detailed analytics
β β βββ tasker/ # Tasker pages
β β βββ Dashboard.jsx # Personal stats
β β βββ MyTasks.jsx # Assigned tasks
β βββ store/
β βββ authStore.js # Zustand auth state
β βββ themeStore.js # Dark/light theme
βββ package.json # Root scripts (dev, build, start)
| Method | Endpoint | Description |
|---|---|---|
| POST | /login |
Login (all roles) |
| POST | /logout |
Logout + clear tokens |
| POST | /refresh |
Rotate refresh token |
| POST | /forgot-password |
Send reset email |
| POST | /reset-password |
Reset with token |
| POST | /accept-invite |
Accept tasker invite |
| GET | /me |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
| POST | /admins |
Create admin account |
| GET | /admins |
List all admins + stats |
| GET | /admins/:id |
Admin detail + taskers |
| DELETE | /admins/:id |
Deactivate admin |
| GET | /analytics |
Global analytics |
| Method | Endpoint | Description |
|---|---|---|
| POST | /invite-tasker |
Invite tasker (max 5) |
| GET | /taskers |
List managed taskers |
| GET | /taskers/:id |
Tasker detail + stats |
| DELETE | /taskers/:id |
Deactivate tasker |
| GET | /analytics |
Scoped analytics |
| GET | /analytics/tasker/:id |
Tasker timeline |
All endpoints are role-scoped automatically:
- Super Admin β sees everything
- Admin β sees only their managed taskers' data
- Tasker β sees only their own data
| Variable | Value |
|---|---|
DATABASE_URL |
postgresql://...?sslmode=require |
JWT_SECRET |
Random 32+ char string |
JWT_REFRESH_SECRET |
Random 32+ char string |
FRONTEND_URL |
Your Railway app URL |
NODE_ENV |
production |
PORT |
5000 |
- Build:
cd backend && npm install --include=dev && npx prisma generate && cd ../frontend && npm install --include=dev && npm run build - Start:
cd backend && npx prisma generate && npx prisma db push && (node prisma/seed.js || true) && node src/app.js
The seed script creates a complete demo environment:
- 13 users: 1 Super Admin, 2 Admins, 10 Taskers
- 5 projects: Split across both admin teams
- 32+ tasks: All 6 statuses represented with realistic dates
- Status history: Full audit trail for every task
- Comments: Threaded discussions on tasks
- Scores: Quality and time scores on completed tasks
MIT
Built with by Devashish