In-house goal setting, achievement tracking, and performance management portal.
Built for AtomQuest Hackathon 1.0.
| Role | Password | |
|---|---|---|
| Admin | admin@demo.com | admin123 |
| Manager | manager@demo.com | manager123 |
| Employee | employee@demo.com | employee123 |
┌─────────────────────────────────────────────────────────┐
│ VERCEL (CDN) │
│ Next.js 14 Frontend │
│ Employee UI │ Manager UI │ Admin UI │ Analytics │
└────────────────────────┬────────────────────────────────┘
│ HTTPS REST
┌────────────────────────▼────────────────────────────────┐
│ RAILWAY / RENDER │
│ Express.js REST API │
│ Auth │ Goals │ CheckIns │ Reports │ Notifications │
└────────────────────────┬────────────────────────────────┘
│ Prisma ORM
┌────────────────────────▼────────────────────────────────┐
│ PostgreSQL Database │
│ Users │ Goals │ CheckIns │ AuditLogs │ Cycles │
└─────────────────────────────────────────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 (App Router) + MUI v5 + Recharts |
| Backend | Express.js (REST API) |
| Database | PostgreSQL + Prisma ORM |
| Auth | JWT + Azure AD SSO |
| Container | Docker + Docker Compose |
- Node.js 20+
- PostgreSQL (or use Docker)
docker-compose up --build
# Frontend: http://localhost:3000
# Backend: http://localhost:5000
# DB: localhost:5432# 1. Start PostgreSQL and create database 'atomquest'
# 2. Backend
cd backend
cp .env.example .env # Edit DATABASE_URL
npm install
npx prisma migrate dev --name init
npx prisma generate
npx prisma db seed
npm run dev
# 3. Frontend
cd frontend
npm install
npm run dev- ✅ Employee goal sheet creation and submission
- ✅ Thrust Area selection with goal title and description
- ✅ UoM support: Numeric, %, Timeline, Zero-based
- ✅ Targets and weightage per goal
- ✅ Validation rules: 100% total weightage, min 10% per goal, max 8 goals
- ✅ Manager (L1) approval with inline edits and return for rework
- ✅ Goal lock on approval, admin unlock only
- ✅ Shared Goals: manager/admin KPI push with weightage-only edits
- ✅ Primary owner achievement updates sync across linked goal sheets
- ✅ Quarterly updates: Planned vs Actual Achievement
- ✅ Per-goal status: Not Started, On Track, Completed
- ✅ Manager check-in view and structured comments
- ✅ Progress score logic by UoM type
- Phase 1: Goal Setting (window opens 1st May)
- Q1 Check-in (July)
- Q2 Check-in (October)
- Q3 Check-in (January)
- Q4 / Annual (March / April)
- ✅ Microsoft Entra ID (Azure AD) SSO and org sync
- ✅ Email notifications and Microsoft Teams deep-links
- ✅ Escalation module (rule-based, multi-step)
- ✅ Analytics: QoQ trends, heatmaps, and completion rates
atomquest/
├── frontend/ # Next.js 14 App
│ ├── src/
│ │ ├── app/ # Pages (login, employee, manager, admin)
│ │ ├── components/# Shared components
│ │ └── lib/ # API client, auth, theme
│ └── Dockerfile
│
├── backend/ # Express.js API
│ ├── src/
│ │ ├── controllers/
│ │ ├── routes/
│ │ ├── services/
│ │ ├── middleware/
│ │ └── utils/
│ ├── prisma/
│ │ ├── schema.prisma
│ │ └── seed.ts
│ └── Dockerfile
│
├── docker-compose.yml
└── README.md
POST /api/auth/login— JWT loginPOST /api/auth/refresh— Token refreshGET /api/auth/me— Current userGET /api/auth/azure/login— SSO redirectGET /api/auth/azure/callback— SSO callback
GET /api/goals/my-sheet— Employee's goal sheetPOST /api/goals/sheet/:id/goal— Add goalPUT /api/goals/:id— Edit goalDELETE /api/goals/:id— Delete goalPOST /api/goals/sheet/:id/submit— SubmitPUT /api/goals/sheet/:id/approve— ApprovePUT /api/goals/sheet/:id/return— ReturnPUT /api/goals/sheet/:id/unlock— Admin unlock
GET /api/checkins/achievements/:sheetId/:periodPUT /api/checkins/achievements/:goalId/:periodGET /api/checkins/team/:periodPOST /api/checkins
GET/POST /api/admin/cyclesGET/POST /api/admin/usersGET /api/admin/audit-logsGET/POST /api/admin/escalations/rules
GET /api/reports/analytics/*GET /api/reports/export
Built with ❤️ for AtomQuest Hackathon 1.0