Available for select work

Etienne Maway, Solution Architect
Platform Engineering

I take a product from requirements to a system that runs: I make the design calls, build it and own what ships. Most of my work has been in TypeScript and NestJS, with Python, FastAPI and Solidity when a project needed them, and the fundamentals carry across stacks.

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

Systems built to outlast their first version: architecture, backend, cloud, and the migrations in between.

01

Platform Architecture

Data models, multi-tenancy and permission layers designed so a product can grow without a rewrite. This is the part that decides what you will be able to build in two years.

02

Backend & API Development

NestJS, TypeScript and FastAPI services, from authentication and role hierarchies through queues and background jobs to the REST APIs your frontend teams build against.

03

Cloud & DevOps

Docker images, CI/CD pipelines in GitHub Actions and deployments on AWS, with logs, traces and metrics through Datadog and OpenTelemetry, so a release is routine and problems show up before users report them.

04

AI & Agent Systems

Agents and tool integrations built with LangChain, LangGraph and MCP, backed by Python and FastAPI services, so a model can work with your data and your systems instead of sitting beside them.

05

Architecture Rescue & Migration

When a system built for the original vision can no longer carry where the product has gone: diagnosis, a replacement design, and the migration to get there.

06

Web3 Integration

Wallet authentication, smart-contract integration and SDK work, bringing on-chain capability into a product where it genuinely earns its place.

Life of a request

What happens after someone clicks

One request, followed from the moment it reaches the API to the moment the client has its answer. Every step on the way is something I design and build.

  1. 01 · Client

    The request arrives

    A client sends a new order. It looks like one call; behind it, several parts of the system have to agree before an answer goes back.

    RESTPOST /orders
  2. 02 · Gateway

    Who is asking

    The token is verified, the tenant is resolved and role rules decide what this caller is allowed to do. A request for another organisation's data stops here.

    AuthRBACMulti-tenancy
  3. 03 · Service

    Business rules

    NestJS validates the payload and applies the rules that make an order valid, inside a single transaction, so a half-finished order can never be saved.

    NestJSTypeScriptValidation
  4. 04 · Database

    Stored correctly

    PostgreSQL writes the order. The schema, indexes and constraints are where most long-term problems are either prevented or created, so this is where I spend design time.

    PostgreSQLSchema design
  5. 05 · Queue

    Slow work moves aside

    Emails, syncs and reports go onto a BullMQ queue backed by Redis. The caller does not wait for them, and failed jobs are retried instead of lost.

    BullMQRedisRetries
  6. 06 · Response

    Answer sent

    The client has its confirmation in milliseconds while workers finish the rest. Every step is traced, so when something is slow I can see exactly where.

    OpenTelemetryObservability

Featured work

All projects
firstline-ai.site
Firstline-ai on screen
LiveSaaS product

Firstline-ai

A cold email tool I designed, built and launched. Upload a prospect list and it researches each company's site and LinkedIn profile, then writes three scored opening lines per prospect and picks the strongest. Bring your own API key from any provider and choose the model you want to use.

  • Reads each prospect's website and LinkedIn before writing a word
  • Three scored openers per person, best one chosen automatically
  • Works with any provider: bring your own API key and pick the model
Next.jsFastAPIPythonAny LLM providerPostgreSQL
Visit live site Private codebase
kmb-talk.com
KMB-Talk on screen
Bookkeeping for traders

KMB-Talk

A bookkeeping app for traders who buy and sell on credit. It began as a public repository of mine. When I heard a trader was struggling with exactly this problem, I showed it to him. He liked it, so I adapted it to his business, set it up for English and French and added a mobile app. It is now his private product, used every day by him and his employees.

  • Two currencies with a system rate and a market rate kept side by side
  • Warns before a sale goes below cost, and sells supplier stock first
  • Offline queue that syncs on reconnect, plus thermal receipt printing
NestJSPostgreSQLNext.jsReact NativeExpo
Private codebase

KMB-Talk

Before you open this site

Here is how this project came to be taken, and what the link below opens.

  1. It started as a public repository of mine.
  2. I heard someone had a problem it could help with, and showed it to him.
  3. He liked it. I adapted it to his business, internationalized it and added a mobile app.
  4. It is now a private product, used by him and his employees.

This link opens the test environment only.

payzuri.shop
PayZuri on screen
In progressPoint of sale for shops

PayZuri

A point of sale and stock system for small shops in Uganda, where the network comes and goes. One codebase runs on Windows, macOS, Android and iOS, and keeps taking cash sales when the internet drops. I am building it from the specification through to the servers, starting with its first shop, KAZURI Kids Fashion in Kampala.

  • Cash sales keep working offline and sync once, with no duplicates, when the network returns
  • Mobile Money is checked against the SMS, and a transaction reference can never be used twice
  • Stock is an append-only ledger: every change records a reason, a user and a device
NestJSPostgreSQLPrismaReactTauriCapacitornginxPM2
Visit live site Private codebase

The smaller practice and demo projects are not listed here. You can find them on my GitHub.

From the blog

Notes on tech, fitness, and whatever I run into.

All articles

Let's build something.

Hiring for a platform or backend role, or sitting on a system that has outgrown its foundations? I'd like to hear about it.