Skip to content
<Thierno DIALLO/>

Projects

A selection of things I've built.

Laajal Sa Diine

Laajal Sa Diine is a platform of short audio answers to everyday questions about Islam. I designed and built it on my own to make that kind of guidance easier to find: a React and TypeScript client on top of a Node.js REST API, with MongoDB holding the library and Amazon S3 the audio files.

The hardest part was content discovery: a weighted full-text index tuned for French ranks matches across several fields, while combinable filters and infinite scrolling make the library easier to explore. I also implemented JWT-protected administration, with separate permissions for content, administrator management, and backups.

Putting it into production was the other half of the work, and I wanted to own that path rather than hand it to a managed platform. I provisioned a Hetzner Cloud server myself, deployed the services with Docker, routed them through Traefik, and pointed DNS at it through Cloudflare.

The site is online today, used by listeners, and I still maintain it myself — the infrastructure as much as the code.

  • React
  • TypeScript
  • Node.js
  • Express
  • MongoDB
  • Amazon S3
  • Docker
  • Traefik
  • Cloudflare
  • Hetzner Cloud

Waste-Container Fill-Level Alert System

GSF wanted its collection teams to know how full waste containers were before planning their routes. That became an academic project at École Centrale de Lyon between September 2019 and April 2020, where I was technical lead of the team building a connected system to measure fill levels and report them at regular intervals.

I led the electronics design and implementation, defining the communication path from an ultrasonic sensor and Arduino board to a LoRa gateway connected to GSF's servers. I wrote the Arduino/C++ firmware and configured measurements and transmissions at 30-minute intervals to limit device activity and conserve battery power.

I coordinated with the mechanical team, which used the school's FabLab to build an enclosure suited to a dirty and demanding environment. We field-tested the prototype in several containers. Without an intermediate relay, the LoRa link reached about 100 metres, which set the practical limit on how far a gateway could sit from a container.

The project strengthened my experience in embedded systems, low-power design, long-range communication, and multidisciplinary technical leadership.

  • Arduino
  • C++
  • LoRa
  • Ultrasonic Sensor

French Robotics Cup 2019 – Atom Factory

The 2019 French Robotics Cup asked teams to build autonomous robots for Atom Factory: a 100-second match with several scoring actions available and no prescribed order to perform them in. Strategy counted as much as reliable execution. I worked on École Centrale de Lyon's entry from September 2018 to June 2019.

As technical lead of the electronics team, I contributed extensively to the Python embedded software running on LEGO EV3 controllers, and coordinated the electronics work from implementation through to integration. Deciding what the robot would attempt in its 100 seconds meant working closely with the mechanical team, so that match strategy, physical capability, and software behavior all agreed.

We applied closed-loop control concepts from our ECL coursework to regulate the robots' movement and positioning. Our robots passed official homologation and competed in the event.

Very little of the result depended on the code alone: a strategy the mechanics could not execute cost exactly as many points as a mechanism the software could not drive.

  • Python
  • LEGO MINDSTORMS EV3
  • Embedded Systems
  • Closed-Loop Control

Persistence-of-Vision LED Display

For Polytechnique Day in 2018, the Robotech Club at École Supérieure Polytechnique de Dakar built a persistence-of-vision LED display that showed text sent from a smartphone over Bluetooth. The LED assembly was mounted on a motor that spun it 60 times per second, and the controller lit the right LEDs at each angular position so the eye read stable text rather than a blur.

As head of the club's IT department, I developed the native Android application in Java, agreed the communication format with the electronics team, and handled Bluetooth connection failures and retries. I also split the software work into tasks, set deadlines, and tracked delivery so the software side stayed in step with the other teams.

The finished display was demonstrated at the event. My part of it was the smartphone side — the app and its Bluetooth link — and the coordination with the electronics team: the message format had to be settled early, because neither side could test on its own until it existed.

  • Java
  • Android SDK
  • Bluetooth

Classroom Booking Desktop Application

A school in Senegal needed a clearer way for staff and teachers to see classroom schedules, find free rooms, and book them for upcoming courses. During my DUT, a friend and I volunteered to build the school a Java desktop application.

I designed the MySQL database and implemented the Java backend with JDBC, while my friend built the Swing interface. The backend checked availability before saving a booking, so two courses could not claim the same room at the same time.

It was my first substantial collaborative software project, and most of the difficulty was not the code: we had to agree where the frontend stopped and the backend began, keep our work in step, and integrate two halves built separately. We did all of that without version control, which is exactly how I learned what Git is for. We finished the application and handed it over to the school with its source code.

  • Java
  • Swing
  • JDBC
  • MySQL