Skip to content
Amanuel Yizelkal
All work07 / 12

Conference eVisa platform: application, review, approval and on-arrival registration

Role
Full-stack engineer
Year
2026
Status
Live
Links
Private
  1. Applicant site
  2. Officer console
  3. NestJS API
  4. Workflow engine
  5. PostgreSQL · Prisma
  6. 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.”

Next projectCOP32 Agafari
Amanuel Yizelkal