30+ Pages 15 Missing Features 5 Roles · 3 Plans Design System v1 DM Sans + Inter
❌ Completely Missing — Must Build
Notification Engine
notifications table (tenant_id, user_id, type, read)MISSING
Notification Bell UI componentMISSING
Real-time WebSocket pushMISSING
Event triggers (leave, payroll, expense)MISSING
Performance Management
OKR / KPI tracking moduleMISSING
Performance Review pagesMISSING
360° feedback systemMISSING
Rating & scoring engineMISSING
Timesheet System
Project hours trackingMISSING
Task-based time loggingMISSING
Weekly timesheet UIMISSING
Manager approval flowMISSING
HR Ticket / Helpdesk
Ticket raise page (salary issue, correction)MISSING
Ticket list & status trackingMISSING
HR resolution workflowMISSING
Auto-close & escalationMISSING
Document Vault
PAN / Aadhaar / Offer letter storageMISSING
Document upload & tagging UIMISSING
Expiry tracking & alertsMISSING
Secure signed URL downloadMISSING
Org Chart Visualization
Hierarchy tree with D3.jsMISSING
Zoom/pan interactive org chartMISSING
Click → employee detailMISSING
Export as PNG/PDFMISSING
Custom Workflow Builder
Visual workflow designerMISSING
Multi-step approval chainsMISSING
IF/THEN rule engineMISSING
Per-module workflow configMISSING
Global Search
/api/search?q= endpointMISSING
Search across employee/expense/leave/payrollMISSING
Cmd+K / search modal UIMISSING
Instant results with type filterMISSING
🟠 Partially Done — Needs Enhancement
Audit Log System
old_data / new_data JSONB columnsPARTIAL
Device info trackingMISSING
Salary change diff viewer UIMISSING
Filter by module/action/userPARTIAL
Analytics Performance
analytics_snapshots precomputed tableMISSING
Nightly cron job to rebuildMISSING
WebSocket live KPI updatesMISSING
Predictive attrition ML signalsMISSING
Leave Calendar
Team calendar view (who's on leave)MISSING
Holiday calendar integrationMISSING
Leave encashment flowPARTIAL
Comp-off trackingMISSING
ATS Enhancements
AI CV scoringMISSING
candidate_score columnMISSING
Offer Letter PDF generatorMISSING
time_to_hire / conversion_ratePARTIAL
Expense OCR
tesseract.js integrationMISSING
Auto-extract amount/vendor/dateMISSING
OCR result edit UIMISSING
Confidence score displayPARTIAL
Multi-Office GPS
offices table (lat, lng, radius per office)MISSING
Employee → office_id assignmentMISSING
Multi-office settings UIMISSING
Client visit trackingMISSING
Background Job Queue
BullMQ + Redis queue setupMISSING
Job dashboard UIMISSING
Payslip PDF gen → queuePARTIAL
Analytics rebuild → queueMISSING
🔐 Auth Pages
📊 Dashboard Pages (Role-Based)
👤 Employee Module
📅 Attendance & GPS
🏖️ Leave Management
💰 Payroll & Advances
🧾 Expenses
🎯 ATS & Recruitment
📊 Analytics & Reports
⚙️ Admin & Settings
🆕 New Modules (To Build)
👆 Click any page card above to see full UI specification
🔐 Login → Dashboard Flow
User visits /login
Enter email + password
POST /api/auth/login
Check tenant status
Suspended → 403 error page
or
Active → JWT + tenant_features
Load role-specific dashboard
GET /api/auth/me
Load: user + tenant_features + user_permissions
Render sidebar nav (enabled modules only)
💰 Payroll Run Flow
Admin → Payroll Page
Select month + year
Preview payroll (dry-run)
Review LOP / advances
Confirm & Run
calcPayroll() engine
Gross = basic + HRA + DA + allowances
LOP = absent × (basic/26)
Deductions: PF+ESI+PT+TDS+advance
Net = Gross − LOP − Deductions
Payroll finalized
BullMQ → PDF payslip queue
Email dispatch (all employees)
Compliance data ready (PF/ESI/TDS)
Analytics snapshot updated
🏖️ Leave Application → LOP Flow
Employee → Apply Leave
Check leave balance
POST /api/leaves (status=pending)
Email → Manager notified
Manager reviews
Approved → attendance=on_leave → NO LOP
or
Rejected → employee notified → LOP if absent
Notification pushed to employee
leave_balance updated
🧾 Expense Claim Flow (with OCR)
Employee uploads receipt
tesseract.js OCR scan
Auto-fill: amount, vendor, date
Employee confirms / edits
POST /api/expenses (status=pending)
Manager → Approve
HR → Reimburse
Payroll includes expense_reimbursement
Audit log created
🎯 ATS: Apply → Hire Flow
Job Posting created
Candidate applies (CV upload)
AI CV Score (82% match)
Kanban: Applied → Screening
Interviews → Scored rounds
Offer stage → PDF offer letter
Hired → employees row created
User account created → Welcome email
🏢 Tenant Registration → Live Flow (SaaS)
Company registers → /register
Create tenant record
Select plan (Starter/Growth/Enterprise)
Create Company Admin user
Load features based on plan
tenant_features table populated
Admin onboarding wizard (Step 1-5)
ERP is LIVE for that company
🔔 Notification Event System
Any module event fires
EventEmitter / Redis publish
Listeners: notify, audit, analytics
INSERT notifications table
WebSocket push to frontend
Bell icon badge increments
Email/Slack alert (optional)
User reads → mark as read
🎨 Color Palette
Foundation (Sidebar)
Sidebar BG
Deep
#0D1F35
--sb-bg
Main sidebar
Primary (Sky Blue)
Primary
Mid
Light
Tint
#0EA5E9
--primary
Buttons, active states
Success (Emerald)
500
400
200
50
#10B981
--success
Active, approved, present
Warning (Amber)
500
300
200
50
#F59E0B
--warning
Pending, late, caution
Danger (Red)
500
300
100
50
#EF4444
--danger
Absent, rejected, error
AI / New (Violet)
500
400
200
50
#8B5CF6
--ai
AI features, new/premium
Neutral Slate
700
500
200
50
Slate Scale
--text-body / --border
Text, borders, surfaces
🔤 Typography Scale — DM Sans + Inter
DM Sans · 26px · 700 · -1pxEmployee Management
DM Sans · 20px · 700 · -.5pxPayroll Overview — March 2026
DM Sans · 36px · 700 · -1.5px₹48.2L
Inter · 14px · 600 · 0Pending Leave Approvals
Inter · 13px · 400 · 0Employee submitted leave request from 18–20 March for personal reasons.
Inter · 11px · 700 · .6px · CAPSDepartment · Designation · Status
JetBrains Mono · 11px · 400GET /api/payroll/run · 200 OK · 142ms
🧩 Buttons, Badges & Inputs
Buttons
Status Badges
Active Approved Present Pending On Leave Late Rejected Absent In Review AI Scored GPS Live Draft
🔔 Notifications
Leave approved
Your leave for 18–20 Mar 2026 has been approved by Ramesh Kumar
2m ago
Payslip ready
February 2026 payslip generated. Net salary: ₹82,450
1h ago
Attendance late
Priya Shah checked in 42 minutes late today. 3rd time this month.
3h ago
📐 Spacing & Radius
2px
4px
6px
8px
12px
16px
24px
32px
4px
8px
12px
16px
full
📱 App Shell Wireframe — 220px sidebar + topbar + content
App Shell — 220px sidebar + topbar + content area
MAIN
🧭 Sidebar — All Role Variants
HR Manager — Dashboard active
HR ERP
InfiKuber Technologies
MAIN
Dashboard
Employees
Attendance
Payroll
Leaves5
Expenses3
HR TOOLS
Recruitment
Compliance
Analytics
ADMIN
Settings
RK
Ramesh Kumar
HR Manager
Admin — Payroll active
HR ERP
Acme Corp Pvt Ltd
MAIN
Dashboard
Employees
Attendance
Payroll
Leaves
Expenses
HR TOOLS
Recruitment
Analytics
Audit Logs
AS
Anjali Singh
Admin
Employee — Self-service only
HR ERP
InfiKuber Technologies
MY WORKSPACE
Dashboard
My Attendance
My Leaves1
My Payslips
Expenses
GPS Check-in
HR Helpdesk
PS
Priya Shah
Employee · EMP-001
Sidebar Color Tokens — Refined (WCAG AA Compliant)
TokenColorValueContrastUse
--sb-bg#0D1F35Sidebar background
--sb-item-text#B8D0E84.6:1 ✓ AAInactive menu items (was broken #64748B = 1.8:1 ✗)
--sb-section-text#4A6FA53.2:1 ✓MAIN / HR TOOLS labels + icons
--sb-active-text#7DD3FC5.8:1 ✓ AAActive menu item text
--sb-company-name#F1F5F912.1:1 ✓ AAALogo title, user name
--sb-tenant-name#64A0C83.6:1 ✓Company subtitle, user role
FeatureStarterGrowthEnterpriseStatusPriority
Development Roadmap — Based on ODT requirements + existing codebase
DB Schema — New Tables Needed
-- Notification Engine CREATE TABLE notifications ( id UUID PRIMARY KEY, tenant_id UUID NOT NULL, user_id UUID NOT NULL, type VARCHAR(50), title VARCHAR(200), message TEXT, is_read BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT NOW() ); -- Analytics Snapshots (precomputed) CREATE TABLE analytics_snapshots ( id UUID PRIMARY KEY, tenant_id UUID NOT NULL, month INT, year INT, headcount INT, attendance_rate DECIMAL(5,2), total_payroll DECIMAL(14,2), attrition_rate DECIMAL(5,2), updated_at TIMESTAMP );
-- Multi-Office GPS CREATE TABLE offices ( id UUID PRIMARY KEY, tenant_id UUID NOT NULL, name VARCHAR(100), lat DECIMAL(10,8), lng DECIMAL(11,8), radius INT DEFAULT 100 ); -- Add to employees: ALTER TABLE employees ADD COLUMN office_id UUID REFERENCES offices(id); -- Performance Management CREATE TABLE performance_reviews ( id UUID PRIMARY KEY, employee_id UUID NOT NULL, reviewer_id UUID NOT NULL, period VARCHAR(20), okr_score DECIMAL(4,2), kpi_score DECIMAL(4,2), rating INT CHECK(rating BETWEEN 1 AND 5), notes TEXT, created_at TIMESTAMP );
-- Timesheet CREATE TABLE timesheets ( id UUID PRIMARY KEY, employee_id UUID NOT NULL, tenant_id UUID NOT NULL, project VARCHAR(100), task VARCHAR(200), hours DECIMAL(4,2), date DATE, status VARCHAR(20) DEFAULT 'draft' ); -- HR Tickets CREATE TABLE hr_tickets ( id UUID PRIMARY KEY, tenant_id UUID NOT NULL, employee_id UUID NOT NULL, category VARCHAR(50), subject VARCHAR(200), description TEXT, status VARCHAR(20) DEFAULT 'open', assigned_to UUID, resolved_at TIMESTAMP, created_at TIMESTAMP );
API Endpoints — New Routes to Add
// NEW ROUTES GET /api/notifications → list for current user PATCH /api/notifications/:id/read → mark read GET /api/search?q=&type= → global search GET /api/org-chart → hierarchy tree data GET /api/offices → multi-office list POST /api/offices → create office GET /api/timesheets → list timesheets POST /api/timesheets → submit timesheet GET /api/performance → review list POST /api/performance → create review GET /api/tickets → HR ticket list POST /api/tickets → raise ticket PUT /api/tickets/:id/resolve → resolve ticket GET /api/documents → document vault list POST /api/documents → upload document GET /api/leave-calendar → team calendar data
// ENHANCED ROUTES GET /api/analytics/overview → add snapshots table POST /api/expenses/ocr-scan → tesseract.js extract GET /api/ats/:id/offer-letter → PDF offer letter gen POST /api/ats/:id/ai-score → AI CV scoring GET /api/audit-logs → add old_data/new_data GET /api/leaves/calendar → team leave calendar // WEBSOCKET EVENTS ws: attendance.marked ws: leave.approved ws: expense.submitted ws: payroll.generated ws: notification.new // BACKGROUND JOBS (BullMQ) queue: payslip-pdf-gen queue: email-dispatch queue: analytics-rebuild queue: compliance-report