MVP web app for managers to see team capacity and workload, detect overloaded employees, and get task reassignment suggestions based on skills and availability.
- Frontend: Next.js (App Router) + TypeScript + Tailwind
- Backend: Next.js API routes
- Database: PostgreSQL via Prisma ORM
- Auth: NextAuth with Credentials provider (email + password)
availability-task-hub/
├── components/
│ ├── SessionProvider.tsx
│ ├── TeamDashboard.tsx
│ ├── UserDetailClient.tsx
│ └── TaskDetailClient.tsx
├── lib/
│ ├── auth.ts
│ ├── matching.ts
│ ├── matching.test.ts
│ ├── prisma.ts
│ ├── workload.ts
│ └── workload.test.ts
├── prisma/
│ ├── schema.prisma
│ └── seed.ts
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── auth/[...nextauth]/route.ts
│ │ │ ├── auth/register/route.ts
│ │ │ ├── availability/route.ts
│ │ │ ├── availability/[id]/route.ts
│ │ │ ├── skills/route.ts
│ │ │ ├── skills/[id]/route.ts
│ │ │ ├── tasks/route.ts
│ │ │ ├── tasks/[id]/route.ts
│ │ │ ├── tasks/[id]/reassign/route.ts
│ │ │ ├── tasks/[id]/suggestions/route.ts
│ │ │ ├── team/summary/route.ts
│ │ │ ├── users/route.ts
│ │ │ └── users/[id]/route.ts
│ │ ├── dashboard/page.tsx
│ │ ├── login/page.tsx
│ │ ├── tasks/[id]/page.tsx
│ │ ├── users/[id]/page.tsx
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ └── globals.css
│ └── middleware.ts
├── types/
│ └── next-auth.d.ts
├── package.json
├── tsconfig.json
├── tailwind.config.ts
├── vitest.config.ts
└── .env.example
# 1. Install dependencies
npm install
# 2. Copy env and configure (edit DATABASE_URL, NEXTAUTH_SECRET)
cp .env.example .env
# 3. Create database and run migrations
npx prisma migrate dev
# 4. Seed the database
npm run db:seed
# 5. Start the dev server
npm run devOpen http://localhost:3000.
- Manager: manager@example.com / password123
- Members: bob@example.com, carol@example.com, dave@example.com, eve@example.com, frank@example.com (all use password123)
npm test