Promobile (Sirius Télécom Afrique) · 2026 · In production
Field Management
The sales-force tool of a telecom operator, built to work offline. Eleven services, about 3,000 tests and a 66-check QA gate that blocks any release that doesn’t pass.
- Services
- 11
- FastAPI, split by domain
- Automated tests
- ≈ 3,100
- 2,894 server-side, 220 UI
- QA gate
- 66
- checks before every release
- Role
- Full stack developer intern, from architecture to deployment
- Duration
- April – December 2026 (3-month internship extended by 6)
- Stack
- Angular · Capacitor (Android) · FastAPI (11 services) · PostgreSQL / PostGIS · Kafka · Keycloak · Traefik · Docker Compose · Playwright
Field Management · Training
- Promoter :
Will our activations and our follow-ups on dormant points of sale count toward our evaluation?
- Support :
Yes, that’s covered: they count in the monthly evaluation, and you can track them on your promoter dashboard.
Context
Promobile, the brand of Sirius Télécom Afrique, relies on promoters who visit points of sale across Senegal every day. Management wanted to see what happens in the field in real time: visits, stock, reporting, points of sale going dormant. The client’s specification describes ten modules.
The problem
The app has to work without a network: a promoter doesn’t choose the coverage of the shop they’re in. It has to run on entry-level Android phones, load in under three seconds, and handle hundreds of simultaneous users. On security, the client requires two-factor authentication, modern encryption and hosting in Africa. It also has to talk to the partner’s existing systems behind a VPN tunnel, and to data-collection forms already in use.
My approach
Eleven services, one database. The back end is split by domain (visits, points of sale, stock, sync, tickets, reports…), but all share one PostgreSQL database, with no foreign keys across domains. Boundaries stay clean without multiplying databases to run.
One front end for web and mobile. The Angular app serves supervisors in the browser and becomes an Android app through Capacitor. One codebase instead of two, with an offline mode that syncs when the network comes back.
Docker Compose rather than Kubernetes. I ruled out Kubernetes: the client’s team must be able to run the platform on a single server. Traefik acts as the gateway, Keycloak handles authentication, Kafka carries events between services.
A QA gate that blocks releases. Before every push, a script of more than 1,500 lines runs 66 checks; one failure and nothing ships. One of them even refuses the push if the architecture changes without the technical handbook being updated. That handbook now runs past 160 pages and stays true to the code.
Testing on a real phone. Critical flows are checked on a physical Pixel 9, not just in an emulator.
Deploying on the client’s premises. The platform runs on a VPS, and an on-site server with no port open to the internet was installed in October 2026. Users were trained on October 14, then the platform switched over to that server.
What changed
The platform now runs on Promobile’s server. Field teams create their points of sale in it, and the support team corrects the records as they come in.
What I took away
A field tool is judged without a network: offline mode isn’t a feature you add at the end, it’s what shapes the architecture.