1 services tracked from the deployment snapshot.
Handover workspace
ERS, Todo, OfferReview, and Docu in one view
offer.r32a.com
OfferReview
OfferReview is a Next.js + Prisma workflow application for HR, Manager, and SMO candidate review and decisioning.
main · fa5a5f4 (2026-03-25)
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
OfferReview manages candidate intake, screening, manager review, and final hiring decision workflows in one internal system.
Who uses it
Core workflows
Upload resumes and create candidate records
Run HR screening, manager review, and interview decision steps
Manage templates, notifications, roles, and audit history
Infra view
Paths and runtime setup
- Code path
- /srv/apps/offerreview/prod
- Working directory
- /srv/apps/offerreview/prod
- Env file
- /etc/offerreview-prod.env
- Framework
- Next.js
- Repo
- git@github.com:rrzli/offerreview.git
Services
What keeps it running
active: unknown · enabled: enabled
Docs
Imported handover material
Quick support prompts
Commands and reference points
cd /srv/apps/offerreview/prodgit -C /srv/apps/offerreview/prod status -sbgit -C /srv/apps/offerreview/prod log -1 --onelinesystemctl status offerreview-prod.servicejournalctl -u offerreview-prod.service -n 100 --no-pagersystemctl restart offerreview-prod.service/srv/apps/offerreview/prod/uploads
/srv/apps/offerreview/prod
Code map
Routes and files that matter
PAGE /
src/app/page.tsx
PAGE /admin/access-requests
src/app/admin/access-requests/page.tsx
PAGE /admin/audit
src/app/(app)/admin/audit/page.tsx
PAGE /admin/email-templates
src/app/(app)/admin/email-templates/page.tsx
PAGE /admin/notifications
src/app/(app)/admin/notifications/page.tsx
PAGE /admin/organization
src/app/admin/organization/page.tsx
PAGE /admin/roles
src/app/(app)/admin/roles/page.tsx
PAGE /admin/templates
src/app/(app)/admin/templates/page.tsx
PAGE /admin/users
src/app/admin/users/page.tsx
GET /api/access-requests
src/app/api/access-requests/route.ts
POST /api/access-requests
src/app/api/access-requests/route.ts
GET /api/access-requests/:id
src/app/api/access-requests/[id]/route.ts
POST /api/access-requests/:id/approve
src/app/api/access-requests/[id]/approve/route.ts
POST /api/access-requests/:id/reject
src/app/api/access-requests/[id]/reject/route.ts
Data model
Core entities
AccessRequest
15 fields
id: String · requestCode: String · fullName: String · workEmail: String · department: String
AccessRequestStatus
3 values
PENDING · APPROVED · REJECTED
AuditEventType
39 values
USER_LOGIN_SUCCESS · USER_LOGIN_FAILED · USER_CREATED · USER_ROLE_CHANGED · USER_ENABLED
AuditLog
14 fields
id: String · eventType: AuditEventType · userId: String? · actorRoleSnapshot: String? · entityType: String?
AuthToken
8 fields
id: String · userId: String · tokenHash: String · type: AuthTokenType · expiresAt: DateTime
AuthTokenType
2 values
INVITE · RESET_PASSWORD
Candidate
25 fields
id: String · candidateCode: String · fullName: String? · applyingFor: String · positionId: String?
CandidateDocument
22 fields
id: String · candidateId: String · category: DocumentCategory · filename: String · mimeType: String
CandidateStatus
9 values
NEW · HR_SCREENED · MANAGER_EVAL_PENDING · MANAGER_REVIEWED · TO_SMO
Decision
9 fields
id: String · candidateId: String · decision: DecisionType · notes: String? · decidedByUserId: String?