Skip to main content
← The work
DEI · Directorate of Emigration and Immigration · 2024

Transify · Document exchange between the DEI and embassies

Document-exchange platform between the Directorate of Emigration and Immigration and Beninese embassies: Django API, React interface, per-embassy isolation, and record-level traceability.

Transify — interface de connexion
The problem

The DEI sends named case files to Beninese embassies abroad. The exchange ran on email and physical media: no registration number, no reliable link between a file and the embassy concerned, and no record of who uploaded or changed what. In a service handling personal data, the missing audit trail is the problem before any leak risk.

Our approach

A Django REST API with JWT authentication and Django’s granular permissions exposed directly to the front end, so rights can be adjusted without a redeploy. A Country → Embassy → User model scopes each embassy to its own files only. Files get an automatic incremental registration number, can be archived, and every record carries its creator and last editor. Files live on S3, outside the database. On the client side, a React 18 interface on Vite built with our in-house design system.

One departmental requirement concerned periodic account revalidation: access granted once should not stay valid forever. Each account carries a security-check flag with last and next check dates, and a scheduled task resets it, forcing re-verification when due.

Permissions are not duplicated between server and client. The API exposes the user’s Django permissions, and the front end relies on an access-control component that hides an action or redirects a whole page based on that same list. A right changes server-side and the interface follows, with no redeploy.

Two operational needs round out the scope: CSV export of records for the department’s reconciliations, and an API documented with Swagger and Redoc so maintenance does not depend on the memory of the team that wrote it.

Worth stating plainly when reading this project: the platform delivers isolation, authentication, registration numbering and per-record traceability. It does not do application-level encryption of files at rest or expiring share links; those were not in the delivered scope.

Transify — interface de connexion
Sign-in screen — JWT authentication, DEI and embassy profiles
Transify — interface précédente
Transify — nouvelle interface
Outcomes
Access profiles
3
API resources
6
Traceability
per record
File storage
S3
Technologies
  • Vite
  • S3
  • Docker
  • Postgres
  • Django
  • Python
  • React
  • TypeScript
Contact

Let's talk.