1 services tracked from the deployment snapshot.
Handover workspace
ERS, Todo, OfferReview, and Docu in one view
review.r32a.com
ERS
ERS is an internal renewal workflow system built with Next.js App Router + Prisma + Postgres.
main · a82cd01 (2026-02-20)
6 generated walkthrough docs are included for faster onboarding.
Useful when you need to reason about service ownership and filesystem access.
What this app does
Handover summary
ERS handles employee contract renewal cases from HR preparation through manager justification, CEO decision, and signed documentation.
Who uses it
Core workflows
Create and maintain renewal cases for employees
Collect manager justification and route approvals to leadership
Track documents, signatures, notifications, and audit events
Infra view
Paths and runtime setup
- Code path
- /srv/apps/ers/prod
- Working directory
- /srv/apps/ers/prod
- Env file
- /etc/ers-prod.env
- Framework
- Next.js
- Repo
- git@github.com:rrzli/ers.git
Services
What keeps it running
active: active · enabled: enabled
Docs
Imported handover material
Quick support prompts
Commands and reference points
cd /srv/apps/ers/prodgit -C /srv/apps/ers/prod status -sbgit -C /srv/apps/ers/prod log -1 --onelinesystemctl status ers-prod.servicejournalctl -u ers-prod.service -n 100 --no-pagersystemctl restart ers-prod.service/srv/apps/ers/prod
Code map
Routes and files that matter
PAGE /
app/(app)/page.tsx
PAGE /admin/audit
app/(app)/admin/audit/page.tsx
PAGE /admin/settings
app/(app)/admin/settings/page.tsx
PAGE /admin/users
app/(app)/admin/users/page.tsx
GET /api/admin/audit
app/api/admin/audit/route.ts
GET /api/admin/settings
app/api/admin/settings/route.ts
PATCH /api/admin/settings
app/api/admin/settings/route.ts
GET /api/admin/users
app/api/admin/users/route.ts
POST /api/admin/users
app/api/admin/users/route.ts
DELETE /api/admin/users/:id
app/api/admin/users/[id]/route.ts
PATCH /api/admin/users/:id
app/api/admin/users/[id]/route.ts
POST /api/auth/impersonate
app/api/auth/impersonate/route.ts
POST /api/auth/impersonate/stop
app/api/auth/impersonate/stop/route.ts
POST /api/auth/login
app/api/auth/login/route.ts
Data model
Core entities
AdminSettings
6 fields
id: String · key: String · valueJson: Json · updatedByUserId: String · updatedByUser: User
AuditEntityType
9 values
RENEWAL_CASE · DOCUMENT · JUSTIFICATION · SETTINGS · EMPLOYEE
AuditLog
9 fields
id: String · actorUserId: String · actorUser: User · entityType: AuditEntityType · entityId: String
CeoDecision
3 values
NONE · APPROVE · REJECT
CompensationSource
2 values
RENEWAL_APPROVED · MANUAL
Document
13 fields
id: String · renewalCaseId: String · renewalCase: RenewalCase · docType: DocumentType · fileName: String
DocumentType
4 values
OFFER_LETTER · SIGNED_OFFER · PERFORMANCE_REPORT · OTHER
EmailOutbox
11 fields
id: String · toEmail: String · subject: String · bodyHtml: String · bodyText: String
EmailStatus
3 values
PENDING · SENT · FAILED
Employee
15 fields
id: String · employeeCode: String? · fullName: String · email: String? · department: String