Transify · Échange de dossiers entre la DEI et les ambassades
Plateforme d'échange de dossiers entre la Direction de l'Émigration et de l'Immigration et les ambassades béninoises : API Django, interface React, cloisonnement par ambassade et traçabilité de chaque enregistrement.

La DEI transmet des dossiers nominatifs aux ambassades béninoises à l'étranger. L'échange passait par e-mail et supports physiques : pas de numéro d'enregistrement, aucun rattachement fiable d'un dossier à l'ambassade concernée, et aucune trace de qui avait déposé ou modifié quoi. Dans un service qui manipule des données personnelles, l'absence de traçabilité est le problème avant même le risque de fuite.
Une API Django REST avec authentification JWT et les permissions Django granulaires exposées directement à l'interface, pour que les droits se règlent sans redéploiement. Le modèle Pays → Ambassade → Utilisateur cloisonne chaque ambassade sur ses seuls dossiers. Les fichiers reçoivent un numéro d'enregistrement incrémental automatique, peuvent être archivés, et chaque enregistrement porte son auteur et son dernier modificateur. Les fichiers sont stockés sur S3, hors base. Côté client, une interface React 18 sur Vite construite avec notre design system interne.
Une exigence du service portait sur la revalidation périodique des comptes : un accès accordé une fois ne doit pas rester valide indéfiniment. Chaque compte porte un drapeau de contrôle de sécurité avec une date de dernier et de prochain contrôle, et une tâche planifiée le réinitialise, ce qui force la revérification à l'échéance.
Les permissions ne sont pas dupliquées entre le serveur et le client. L'API expose les permissions Django de l'utilisateur, et l'interface s'appuie sur un composant de contrôle d'accès qui masque une action ou redirige une page entière selon la même liste. Un droit se change côté serveur et l'interface suit, sans redéploiement.
Deux besoins d'exploitation complètent le périmètre : l'export des enregistrements en CSV pour les rapprochements du service, et une API documentée en Swagger et Redoc pour que la maintenance ne dépende pas de la mémoire de l'équipe qui l'a écrite.
Précision utile pour lire ce projet : la plateforme apporte le cloisonnement, l'authentification, la numérotation et la traçabilité par enregistrement. Elle ne fait pas de chiffrement applicatif des fichiers au repos ni de liens de partage à expiration — ces points n'étaient pas dans le périmètre livré.



- Profils d'accès
- 3
- Ressources API
- 6
- Traçabilité
- par enregistrement
- Stockage fichiers
- S3
- Vite
- S3
- Docker
- Postgres
- Django
- Python
- React
- TypeScript

