graph TD
Client["Next.js Client Components"] --> API["API Routes"]
API --> Server["Next.js App Router (Server)"]
Server --> Prisma["Prisma ORM"]
Prisma --> DB["PostgreSQL Database"]
Client --> Auth["NextAuth Auth Module"]
Auth --> Credentials["Credentials Provider"]
Credentials --> Server
subgraph Roles
E["Employee"]
M["Manager"]
A["Admin"]
end
Roles --> Client
├── prisma/
│ ├── schema.prisma # Database schema models
│ └── seed.ts # Seed data script
├── src/
│ ├── app/ # Next.js App Router Pages
│ │ ├── api/ # Next.js API Routes (Auth, Data)
│ │ ├── admin/ # Admin Pages
│ │ ├── employee/ # Employee Pages
│ │ ├── manager/ # Manager Pages
│ │ └── login/ # Authentication Page
│ ├── components/ # UI Components (shadcn/ui)
│ ├── lib/ # Utilities (Prisma, Auth Config)
│ └── types/ # TypeScript Types
├── public/ # Static Assets
└── package.json # Dependencies
- Install dependencies:
npm install
- Set up the database:
Update the
.envfile with your PostgreSQL connection URL.DATABASE_URL="postgresql://user:password@localhost:5432/atomquest"
- Run migrations and generate Prisma client:
npx prisma db push
- Seed the database (creates test accounts, cycle, etc.):
(Ensure you have a seed script defined in your package.json, e.g.,
npm run seed
"seed": "npx tsx prisma/seed.ts") - Start the development server:
npm run dev
A role-based performance management system built with Next.js, Prisma, NextAuth, and Tailwind CSS.
🔗 https://atom-quest-asv6.vercel.app
- Employee:
employee@atomquest.com/password123 - Manager:
manager@atomquest.com/password123 - Admin:
admin@atomquest.com/password123
- ✅ Complete End-to-End Authentication and Role-based navigation
- ✅ UI built with shadcn/ui and TailwindCSS for a "clean corporate design"
- ✅ Prisma Schema fulfilling 100% of the PRD requirements (Goals, Approvals, Escalations, Check-ins)
- ✅ Dummy seed script creating sample organization, cycle, shared goal, and initial tracking state
- ✅ Scalable Server Actions / API architecture for fast and optimized loading