Conference eVisa platform: application, review, approval and on-arrival registration
- Role
- Full-stack engineer
- Year
- 2026
- Status
- Live
- Links
- Private
- Applicant site
- Officer console
- NestJS API
- Workflow engine
- PostgreSQL · Prisma
- eVisa PDF
COP32
The eVisa system for COP32 in Ethiopia: applicants submit online, validators and approvers review through configurable workflows, counter officers register arrivals on the spot, and the approved eVisa is generated as a PDF, on a multi-tenant RBAC platform foundation.
The problem
Delegates need a visa to attend, and every application has to pass validation and approval by the right officers, quickly and with a full record of each decision.
Approach
Rather than hard-code one process, I built the platform on a workflow runtime: every transition checks its required permission, so validation, approval and supervision are configuration over a secure multi-tenant core.
Architecture
A NestJS backend with Prisma covering RBAC, workflows, audit, queues, storage, email and a WebSocket gateway, and a React and Vite interface with permission-aware routing and a dynamic sidebar. Sessions use rotating refresh tokens in HttpOnly cookies. Production never receives a default password: seeding requires real secrets and never touches existing accounts.
Features
- Online applications with validator and approver review
- On-arrival manual registration for counter officers
- Workflow transitions enforced by required permissions
- Seven seeded roles, from Counter Officer to Super Administrator
- Generated eVisa PDF
- Dynamic content and integration settings managed in-app
- KPI and distribution reports
Stack
NestJS, Prisma, PostgreSQL, React, Vite, TypeScript, WebSockets, Queues, Docker, pnpm monorepo
Results
- In production for COP32 in Ethiopia
“A workflow engine pays for itself the first time a rule changes: approval steps become configuration, not new code paths.”