Carnet de projetsProject notebook

Mes projets Dev et Data My Dev and Data projects

Je conçois et déploie des plateformes pour mes clients. Je construis aussi des outils qui rendent les données ouvertes plus faciles à explorer.

I design and deploy platforms for my clients. I also build tools that make open data easier to explore.

Dev

Des plateformes web, des API et leur infrastructure. Découvrir Eceams, Racines, Supwarden et Lokàl.

Web platforms, APIs and the infrastructure behind them. Discover Eceams, Racines, Supwarden and Lokàl.

Voir les projets DevView Dev projects

Data

Avec UrbanAnalytics, on peut comparer les prix de l’immobilier et les permis de construire en France.

UrbanAnalytics lets you compare property prices and building permits across France.

Voir les projets DataView Data projects
01 / Projet client — public01 / Client project — public
En production · utilisateurs actifsLive · real users

Eceams

Gestion de la logistique e-commerce, pensée pour le terrain africain. Backend et infrastructure.

E-commerce logistics management, built for African operations. Backend and infrastructure.

eceams.com ↗

Projet client, publié avec l'accord d'Eceams.

Client project, published with Eceams' approval.

Vendre en ligne en Afrique de l'Ouest ne ressemble pas au e-commerce des tutoriels : la commande arrive par WhatsApp, elle se confirme au téléphone, elle se paie en liquide à la livraison, et une part non négligeable n'est jamais réceptionnée. Les outils du marché supposent un panier, un paiement en ligne et un transporteur — trois choses qui manquent.

Selling online in West Africa looks nothing like the e-commerce of the tutorials: the order arrives over WhatsApp, it is confirmed by phone, it is paid in cash on delivery, and a real share of it is never collected. Off-the-shelf tools assume a cart, an online payment and a carrier — three things that are missing.

Eceams part donc de la réalité du terrain : chaque commande est synchronisée, triée par pays, attribuée à un closeur, puis suivie du premier appel jusqu'au paiement en main propre. Le gérant voit enfin ce qui se passe — taux de confirmation, livraisons abouties, performance par membre d'équipe — et une application compagnon suit les closeurs et les livreurs en déplacement.

So Eceams starts from that reality: every order is synced, sorted by country, assigned to a closer, then tracked from the first call through to cash in hand. The manager finally sees what is happening — confirmation rates, completed deliveries, performance per team member — and a companion app follows closers and drivers on the move.

Ce que j'y faisWhat I do on it

Le backend et l'API — modèle de commandes, attribution automatique, traçabilité des actions, agrégation des statistiques — et l'infrastructure qui les fait tourner : administration du serveur, conteneurisation, chaîne de CI/CD, mises en production et supervision.

The backend and API — order model, automatic assignment, action traceability, statistics aggregation — and the infrastructure running them: server administration, containerisation, the CI/CD pipeline, releases and monitoring.

Shopify Firebase App mobileMobile app Multi-paysMulti-country Attribution automatiqueAuto-assignment
02 / Projet client — privé02 / Client project — private
En développement · démo disponibleIn development · demo available Client confidentiel · vitrineConfidential client · showcase

Racines

Généalogie collaborative : la mémoire d'une famille, réunie.

Collaborative genealogy: a family's memory, brought together.

Voir la vitrineView the showcase ↗

Vitrine de présentation que j'héberge moi-même — client confidentiel, publiée avec son accord. Le site de production n'est pas public.

Showcase site I host myself for the presentation — confidential client, published with their approval. The production site itself isn't public.

Dans beaucoup de familles, personne n'a la vue d'ensemble. Les anciens gardent les noms en mémoire, les branches se perdent d'une génération à l'autre, et on croise à un mariage ou à un baptême des gens dont on ne sait pas qu'ils sont des cousins. Quand un ancien s'en va, une partie de la mémoire part avec lui.

In a lot of families, nobody has the whole picture. The elders keep the names in their heads, branches get lost from one generation to the next, and at a wedding or a christening you meet people without knowing they are cousins. When an elder dies, part of that memory goes with them.

Racines réunit cette mémoire au même endroit : chacun construit son arbre génération après génération, l'enrichit par import d'actes et de photos, et peut faire vérifier son identité pour voir apparaître les correspondances avec les arbres d'autres membres vérifiés. La difficulté n'est pas d'afficher l'arbre, c'est le modèle de parenté — unions, séparations, filiations adoptives, belles-familles, branches paternelle et maternelle — et le fait que tout rapprochement reste sous le contrôle du propriétaire des données.

Racines brings that memory together in one place: each member builds their tree generation by generation, enriches it by importing records and photographs, and can have their identity verified so matches with other verified members' trees start to surface. The hard part isn't drawing the tree, it's the kinship model — unions, separations, adoptive filiation, in-laws, paternal and maternal branches — and keeping every match under the data owner's control.

Ce que j'y faisWhat I do on it

Architecture, backend Django REST Framework, back-office de modération, déploiement.

Architecture, Django REST Framework backend, moderation back office, deployment.

Modèle de parentéKinship model Arbre collaboratifCollaborative tree Import d'actes et de photosRecord and photo import Identité vérifiéeVerified identity Suggestions de correspondanceMatch suggestions
03 / Projet client — privé03 / Client project — private
En développement · démo disponibleIn development · demo available Client confidentiel · vitrineConfidential client · showcase

Supwarden

Une solution souveraine de gestion de mots de passe, auto-hébergeable.

A sovereign, self-hostable password management solution.

Voir la vitrineView the showcase ↗

Vitrine de présentation que j'héberge moi-même — client confidentiel, publiée avec son accord. Le site de production n'est pas public.

Showcase site I host myself for the presentation — confidential client, published with their approval. The production site itself isn't public.

Les petites structures partagent encore leurs accès sur Slack ou dans un tableur, quand elles ne les confient pas à un gestionnaire hébergé à l'étranger. Supwarden reste sous le contrôle de qui l'héberge : trousseaux partagés chiffrés en AES-256-GCM, avec une messagerie temps réel intégrée au trousseau pour coordonner un partage d'accès sans jamais sortir du coffre-fort.

Small teams still share credentials over Slack or in a spreadsheet, when they aren't handing them to a manager hosted abroad. Supwarden stays under the control of whoever hosts it: shared vaults encrypted with AES-256-GCM, plus real-time messaging built into the vault to coordinate an access handover without ever leaving it.

Au-delà du rôle sur le trousseau, chaque élément définit qui peut le modifier. Un code PIN déverrouille la session, les éléments sensibles exigent une re-vérification dédiée, et les pièces jointes passent par un jeton signé à durée limitée plutôt que par un JWT exposé dans l'URL.

Beyond the vault-level role, each item defines who may edit it. A PIN unlocks the session, sensitive items require a separate re-verification, and attachments are served through a short-lived signed token rather than a JWT exposed in the URL.

Ce que j'y faisWhat I do on it

Modèle de permissions, chiffrement, WebSocket via Django Channels + Redis, OAuth2 multi-fournisseurs, déploiement en conteneurs.

Permission model, encryption, WebSocket via Django Channels + Redis, multi-provider OAuth2, containerised deployment.

Chiffrement AES-256-GCMAES-256-GCM encryption Trousseaux partagésShared vaults Messagerie temps réelReal-time messaging Permissions par élémentPer-item permissions Auto-hébergeableSelf-hostable
04 / Projet client — privé04 / Client project — private
Bêta le 1er décembre 2026Beta on 1 December 2026 Client confidentiel · vitrineConfidential client · showcase

Lokàl

La carte des bonnes adresses du Bénin, pour ses habitants.

A map of the good places in Benin, made for the people who live there.

Voir la vitrineView the showcase ↗

Page de présentation du projet — client confidentiel, publiée avec son accord. Le site de production n'est pas public.

Presentation page for the project — confidential client, published with their approval. The production site itself isn't public.

Au Bénin, personne ne connaît mieux les bonnes adresses que ceux qui y vivent. Un maquis repéré sur Instagram, une plage aperçue dans une story : le jour où l'on veut y aller, la publication a disparu au fond du fil. Lokàl garde ces lieux sur une carte — maquis, plages, sites vodun, marchés — rangés par envie, retrouvables en deux secondes.

In Benin, nobody knows the good addresses better than the people who live there. A local eatery spotted on Instagram, a beach glimpsed in a story: by the time you actually want to go, the post is buried. Lokàl keeps those places on a map — eateries, beaches, vodun sites, markets — sorted by mood and findable in two seconds.

Les bonnes adresses circulent de personne à personne : on suit les listes de ses amis ou d'un guide local. Chaque fiche peut être créée par n'importe qui, mais seulement depuis le lieu, coordonnées GPS à l'appui, et le commerçant peut la réclamer ensuite depuis son espace pro. S'y ajoutent les offres des lieux et un passeport d'exploration qui compte les découvertes.

Good addresses travel person to person, so you follow your friends' lists or a local guide's. Anyone can create a listing, but only from the place itself, backed by GPS coordinates — and the owner can claim it later from a business account. On top of that: venue offers and an explorer passport that counts your discoveries.

Ce que j'y faisWhat I do on it

Le backend et le web : modèle géographique et recherche par proximité, création de fiches vérifiée par la position, graphe d'abonnements aux listes, espace pro et statistiques. L'app mobile est développée par un autre développeur.

Backend and web: geographic model and proximity search, location-verified listing creation, the follow graph for lists, business accounts and their statistics. The mobile app is built by another developer.

Carte & GPS Contribution sur placeOn-site contributions Listes suiviesFollowed lists Espace commerçantBusiness accounts Passeport & XP

Comment j'aborde un projetHow I approach a project

01

L'architecture d'abordArchitecture first

Avant la première ligne de code : le modèle de données, les rôles, les frontières entre services. C'est là que se jouent les deux tiers de la dette technique à venir.

Before the first line of code: the data model, the roles, the boundaries between services. Two thirds of future technical debt is decided here.

02

Le backend et son infrastructureThe backend and its infrastructure

J'écris l'API que j'ai conçue, puis je l'exploite : conteneurs, CI/CD, administration du serveur, mises en production, supervision. Le code et l'infrastructure sont pensés ensemble, pas l'un après l'autre.

I write the API I designed, then I run it: containers, CI/CD, server administration, releases, monitoring. Code and infrastructure are thought through together, not one after the other.

03

Le suivi dans le tempsFollowing it through

Organisation, découpage, avancement. Ces projets vivent sur des mois : je garde les décisions techniques et les échéances alignées plutôt que de livrer et disparaître.

Organisation, scoping, progress. These projects run over months: I keep technical decisions and deadlines aligned rather than shipping and walking away.

Stack
Python Django · DRF API Swagger UI PostgreSQL Redis Docker Kubernetes Nginx Terraform CI/CD Linux Grafana Netdata WebSocket React

Ces projets avancent en continu. These projects are still moving.

Vous avez un projet en tête ? Écrivez-moi.

Have a project in mind? Write to me.

fadialabah2.0@gmail.com