Skip to content
Amanuel Yizelkal
All work06 / 12

Advanced Customs Information System for the Ethiopian Customs Commission

Role
Full-stack engineer
Year
2026
Status
Live
Links
Private
  1. Applicant portal
  2. Officer workspace
  3. NestJS API
  4. PostgreSQL · Prisma
  5. Redis
  6. Email · SMS

COP32

The customs platform for Ethiopia's hosting of COP32 (UNFCCC). Delegates, journalists and exhibitors declare the goods they bring; customs officers and regulatory bodies (INSA, NISS, EFDA and EBA) review, approve and verify entry and exit, each acting only within the authority their roles grant.

The problem

Visitors to COP32 bring equipment and goods into the country for a short event, and several regulatory bodies each check different things. Customs needed this to happen without slowing arrivals or losing track of who approved what.

Approach

One platform for applicants and officers: applicants declare goods and attach documents online; staff work from queues and lanes, inspect at arrivals and departures, and register walk-ins. The sidebar shows only what a user's roles open, and any page they can't open names the missing permission.

Architecture

Next.js 16 and NestJS 11 share Zod contracts and a permission registry. PostgreSQL 17 enforces business rules in the database; Redis 8 handles rate limits, lockouts and the permission cache. Applicants are notified by email and SMS. Unit, API end-to-end and Playwright browser tests sit behind one CI gate, with auto-deploy to a VPS through a self-hosted runner.

Features

  • Applicant portal: declare goods, attach a passport, submit and track
  • Officer work lanes: verify, route and decide
  • Arrival and departure inspection, including walk-in registration
  • Regulatory steps for INSA, NISS, EFDA and EBA, each within its own authority
  • Live dashboard and reports with Excel and PDF export
  • Role editor with a permission matrix; changes apply on the next page load

Stack

Next.js 16, React 19, NestJS 11, TypeScript, PostgreSQL 17, Prisma 7, Redis 8, Zod, Playwright, Docker

Results

  • In production for the Ethiopian Customs Commission
  • Auto-deploys to a VPS through a self-hosted runner

“When several agencies share one workflow, permissions are the product. Making every denial explain itself saved more support time than any feature.”

Next projectCOP32 eVisa
Amanuel Yizelkal