A complete business platform built for a Martinique non-profit fighting food waste, from the collection van all the way to dispatching.
Role
Product engineer
Client
K’Fet, via Le Cube
Period
April 2026 — present
Context
K’Fet collects unsold food from bakeries, farms and restaurants across Martinique and redistributes it. The whole chain ran on informal messages and spreadsheets: nobody could say precisely what had been collected, weighed or stored, or what was nearing its expiry date. The team is about ten people split between the field and the depot, with very different needs depending on where they stand.
The back-office, in place of the spreadsheets: the day’s routes, the stock, what is nearing its expiry date and the kilos already redistributed, on one screen.
Screenshots taken from the running applications on the demo dataset — the partners shown are fictional. The apps themselves are French-only.
The chain, end to end
01
Collection route planning
Scheduling pickups at partner sites — bakeries, farms, restaurants — around available slots and expected volumes.
02
Geolocated field entry
The native iOS and Android apps record each collection on site, with position attached, even on a weak connection.
03
Intake and certified weighing
On arrival at the depot every batch is received and weighed; the certified weight is the reference for traceability and reporting.
04
FIFO / FEFO stock management
Stock follows FIFO and FEFO rules, with expiry alerts so whatever is closest to its date leaves first.
05
Dispatching
Food is allocated to redistribution destinations based on what is in stock and how urgent the dates are.
iOS — one stop on the route: the partner, the drive from the collector’s actual position, and the donation categories expected on site.
Android — the other end of the chain: a product category leaves the stock, towards one of the redistribution destinations.
Architecture
Field and depot don’t use the same tools: native apps for collection, a back-office for operations, one shared API for everything else. Traefik at the front, a single source of truth for the data.
Admin back-office
Managing routes, stock and partners for the depot team.
Angular 19 · standalone · NgRx Signal Store
Business API
The core: stock rules, weighing, traceability, REST surface.
NestJS · Prisma · MySQL 8
Native apps
Field collection, with camera, geolocation and fast data entry.
Swift / SwiftUI · Kotlin / Jetpack Compose
Infrastructure
Reverse proxy, certificates, environments and automated deployments.
Docker · Traefik · GitLab CI/CD
The same step in the browser: the collector estimates the weight per category, the certified weighing still to be done on the scales, back at the depot.
The plain-language assistant
Rather than adding yet another reporting screen, I wired a self-hosted RAG assistant (LangChain + Ollama) to an MCP server exposing the business API as tools. The team can ask “how many kilos of bread did we collect from our northern partners this week?” and get an answer grounded in the real data. Everything runs locally, which matters for a non-profit watching both its costs and its data.