Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ AtomQuest Portal — Goal Setting & Tracking

In-house goal setting, achievement tracking, and performance management portal.
Built for AtomQuest Hackathon 1.0.


🚀 Demo Credentials

Role Email Password
Admin admin@demo.com admin123
Manager manager@demo.com manager123
Employee employee@demo.com employee123

🏗 Architecture

┌─────────────────────────────────────────────────────────┐
│                    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           │
└─────────────────────────────────────────────────────────┘

📦 Tech Stack

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

🔧 Run Locally

Prerequisites

  • Node.js 20+
  • PostgreSQL (or use Docker)

Option 1: Docker Compose (Recommended)

docker-compose up --build
# Frontend: http://localhost:3000
# Backend:  http://localhost:5000
# DB:       localhost:5432

Option 2: Manual Setup

# 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

📋 Features

Phase 1: Goal Creation & Approval (Must-Have)

  • ✅ 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

Phase 2: Achievement Tracking & Quarterly Check-ins (Must-Have)

  • ✅ 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

Check-in Schedule

  • Phase 1: Goal Setting (window opens 1st May)
  • Q1 Check-in (July)
  • Q2 Check-in (October)
  • Q3 Check-in (January)
  • Q4 / Annual (March / April)

Good-to-Have Features (Bonus)

  • ✅ 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

📁 Project Structure

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

🔑 API Endpoints

Auth

  • POST /api/auth/login — JWT login
  • POST /api/auth/refresh — Token refresh
  • GET /api/auth/me — Current user
  • GET /api/auth/azure/login — SSO redirect
  • GET /api/auth/azure/callback — SSO callback

Goals

  • GET /api/goals/my-sheet — Employee's goal sheet
  • POST /api/goals/sheet/:id/goal — Add goal
  • PUT /api/goals/:id — Edit goal
  • DELETE /api/goals/:id — Delete goal
  • POST /api/goals/sheet/:id/submit — Submit
  • PUT /api/goals/sheet/:id/approve — Approve
  • PUT /api/goals/sheet/:id/return — Return
  • PUT /api/goals/sheet/:id/unlock — Admin unlock

Check-ins

  • GET /api/checkins/achievements/:sheetId/:period
  • PUT /api/checkins/achievements/:goalId/:period
  • GET /api/checkins/team/:period
  • POST /api/checkins

Admin

  • GET/POST /api/admin/cycles
  • GET/POST /api/admin/users
  • GET /api/admin/audit-logs
  • GET/POST /api/admin/escalations/rules

Reports

  • GET /api/reports/analytics/*
  • GET /api/reports/export

Built with ❤️ for AtomQuest Hackathon 1.0

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages