Seydina Sow
All work

Senelec · 2025 · Pilot

Senelec CMMS

A mobile and web app so Senelec technicians can look up their equipment, its hierarchy and its work orders in the field, even without a network.

Role
Full stack developer intern in the IT department, with a second developer
Duration
July – November 2025
Stack
Flutter · Angular · FastAPI · SQL Server · Redis · WebSocket

Context

Senelec, Senegal’s national electricity company, manages equipment spread across the whole country. During my internship in its IT department, from July to November 2025, I built a computerized maintenance management system (CMMS) for the technical teams: a mobile app for the field and a web interface for the administrative teams.

The problem

A technician has to find a piece of equipment in seconds, see where it sits in the hierarchy of entities and zones, and check the related work orders, often where the network is weak. Users aren’t IT people: the interface has to make sense without long training.

My approach

A mobile app that holds up without a network. The Flutter app caches the data it has loaded, so a technician keeps the essentials at hand even out of coverage. The equipment list loads page by page with infinite scrolling, with filters by entity, zone and family, and each item’s GPS position.

A web interface for supervisors. On the office side, an Angular app presents the entity hierarchy, cost centers and statistics, with real-time notifications over WebSocket.

An API on top of existing data. The app doesn’t replace Senelec’s systems: the FastAPI back end reads its SQL Server database, and relies on a second database, owned by the app, for what it adds. A Redis cache and scheduled jobs round it out.

Users first. A large share of the work went into screen ergonomics, functional testing and performance before delivery.

What changed

At the end of the internship, I delivered the equipment management module: each user signs in, finds equipment from Senelec’s data and can edit it. The app has been in pilot since.

What I took away

For users who aren’t IT people, usability isn’t a finishing touch: it decides whether the tool actually gets opened in the field.