Disponible pour des missions choisies

Etienne Maway, Architecte de solutions
Ingénierie de plateforme

Je mène un produit du recueil des besoins à un système qui tourne : je prends les décisions de conception, je le construis et je réponds de ce qui est livré. L’essentiel de mon travail s’est fait en TypeScript et NestJS, avec Python, FastAPI et Solidity quand un projet l’exigeait, et les fondamentaux se transposent d’une stack à l’autre.

  • NestJS
  • TypeScript
  • PostgreSQL
  • MySQL
  • Redis
  • BullMQ
  • Docker
  • AWS
  • CI/CD
  • OTel
  • Python
  • FastAPI
  • MCP
  • LangChain
  • LangGraph
  • Next.js
  • React
  • Solidity
  • EVM
  • ethers.js
  • REST

Des systèmes conçus pour survivre à leur première version : architecture, backend, cloud et les migrations entre les deux.

01

Architecture de plateforme

Modèles de données, multi-tenancy et couches de permissions conçus pour qu’un produit évolue sans réécriture. C’est la partie qui détermine ce que vous pourrez construire dans deux ans.

02

Développement backend & API

Des services NestJS, TypeScript et FastAPI, de l’authentification et des hiérarchies de rôles jusqu’aux files d’attente, aux tâches de fond et aux API REST sur lesquelles vos équipes frontend s’appuient.

03

Cloud et DevOps

Images Docker, pipelines CI/CD sur GitHub Actions et déploiements sur AWS, avec logs, traces et métriques via Datadog et OpenTelemetry, pour qu’une mise en production soit une routine et que les problèmes apparaissent avant que les utilisateurs ne les signalent.

04

Systèmes d’IA et d’agents

Des agents et des intégrations d’outils construits avec LangChain, LangGraph et MCP, appuyés sur des services Python et FastAPI, pour qu’un modèle travaille avec vos données et vos systèmes au lieu de rester à côté.

05

Sauvetage et migration d’architecture

Quand un système conçu pour la vision initiale ne peut plus porter la direction prise par le produit : diagnostic, conception de remplacement et migration des données.

06

Intégration Web3

Authentification par wallet, intégration de smart contracts et développement de SDK, pour apporter les capacités on-chain là où elles ont vraiment leur place.

La vie d'une requête

Ce qui se passe après un clic

Une requête suivie depuis son arrivée sur l'API jusqu'au moment où le client reçoit sa réponse. Chaque étape du trajet fait partie de ce que je conçois et construis.

  1. 01 · Client

    La requête arrive

    Un client envoie une nouvelle commande. Cela ressemble à un seul appel ; derrière, plusieurs parties du système doivent se mettre d'accord avant qu'une réponse reparte.

    RESTPOST /orders
  2. 02 · Passerelle

    Qui demande ?

    Le jeton est vérifié, l'organisation est identifiée et les règles de rôle décident de ce que cet appelant a le droit de faire. Une demande sur les données d'une autre organisation s'arrête ici.

    AuthRBACMulti-tenant
  3. 03 · Service

    Règles métier

    NestJS valide les données et applique les règles qui rendent une commande valide, dans une seule transaction, pour qu'une commande à moitié traitée ne soit jamais enregistrée.

    NestJSTypeScriptValidation
  4. 04 · Base de données

    Enregistré correctement

    PostgreSQL enregistre la commande. Le schéma, les index et les contraintes sont l'endroit où la plupart des problèmes à long terme sont évités ou créés, c'est donc là que je passe du temps de conception.

    PostgreSQLConception de schéma
  5. 05 · File d'attente

    Le travail lent passe à côté

    Les e-mails, synchronisations et rapports partent dans une file BullMQ appuyée sur Redis. L'appelant ne les attend pas, et les tâches en échec sont relancées au lieu d'être perdues.

    BullMQRedisRelances
  6. 06 · Réponse

    Réponse envoyée

    Le client reçoit sa confirmation en quelques millisecondes pendant que les workers terminent le reste. Chaque étape est tracée : quand quelque chose ralentit, je vois exactement où.

    OpenTelemetryObservabilité

Projets phares

Tous les projets
firstline-ai.site
Firstline-ai on screen
En ligneProduit SaaS

Firstline-ai

Un outil de cold emailing que j’ai conçu, construit et lancé. On importe une liste de prospects, il étudie le site et le profil LinkedIn de chaque entreprise, puis rédige trois accroches notées par prospect et retient la meilleure. Apportez votre propre clé d’API, quel que soit le fournisseur, et choisissez le modèle à utiliser.

  • Lit le site et le profil LinkedIn de chaque prospect avant d’écrire un mot
  • Trois accroches notées par personne, la meilleure choisie automatiquement
  • Compatible avec tous les fournisseurs : apportez votre clé d’API et choisissez le modèle
Next.jsFastAPIPythonAny LLM providerPostgreSQL
Voir le site en ligne Code source privé
kmb-talk.com
KMB-Talk on screen
Comptabilité pour commerçants

KMB-Talk

Une application de comptabilité pour les commerçants qui achètent et vendent à crédit. Elle a commencé comme un dépôt public à moi. Quand j’ai appris qu’un commerçant avait exactement ce problème, je la lui ai présentée. Elle lui a plu, alors je l’ai adaptée à son activité, configurée pour le français et l’anglais et j’y ai ajouté une application mobile. C’est aujourd’hui son produit privé, utilisé chaque jour par lui et ses employés.

  • Deux devises avec un taux système et un taux du marché côte à côte
  • Prévient avant une vente sous le coût et écoule d’abord le stock des fournisseurs
  • File hors ligne qui se synchronise à la reconnexion, avec impression de reçus thermiques
NestJSPostgreSQLNext.jsReact NativeExpo
Code source privé

KMB-Talk

Avant d’ouvrir ce site

Voici comment ce projet a été racheté, et ce que le lien ci-dessous ouvre.

  1. Il a commencé comme un dépôt public à moi.
  2. J’ai appris que quelqu’un avait un problème auquel il pouvait répondre, et je le lui ai présenté.
  3. Cela lui a plu. Je l’ai adapté à son activité, internationalisé et j’y ai ajouté une application mobile.
  4. C’est aujourd’hui un produit privé, utilisé par lui et ses employés.

Ce lien ouvre uniquement l’environnement de test.

payzuri.shop
PayZuri on screen
En coursCaisse pour boutiques

PayZuri

Un système de caisse et de stock pour les petites boutiques en Ouganda, là où le réseau va et vient. Une seule base de code tourne sur Windows, macOS, Android et iOS, et continue d’encaisser en espèces quand internet tombe. Je le construis de la spécification jusqu’aux serveurs, en commençant par sa première boutique, KAZURI Kids Fashion à Kampala.

  • Les ventes en espèces continuent hors ligne et se synchronisent une seule fois, sans doublon, au retour du réseau
  • Le Mobile Money est vérifié par rapport au SMS, et une référence de transaction ne peut jamais servir deux fois
  • Le stock est un registre en ajout seul : chaque mouvement enregistre un motif, un utilisateur et un appareil
NestJSPostgreSQLPrismaReactTauriCapacitornginxPM2
Voir le site en ligne Code source privé

Les petits projets d’entraînement et de démonstration ne sont pas listés ici. Vous les trouverez sur mon GitHub.

Sur le blog

Des notes sur la tech, le sport et mes découvertes.

Tous les articles

Construisons quelque chose.

Vous recrutez pour un poste plateforme ou backend, ou vous avez un système qui a dépassé ses fondations ? J’aimerais en entendre parler.