Skip to content
<Thierno DIALLO/>

Projects

A selection of things I've built.

Laajal Sa Diine

Laajal Sa Diine is a live short-form audio Q&A platform I designed and built independently to make practical Islamic guidance easier to find. The product combines a React and TypeScript client with a Node.js and Express REST API, MongoDB, and Amazon S3.

A central application challenge was content discovery: a French-language weighted full-text index ranks matches across multiple 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.

Taking the product live became another major challenge. Rather than use a fully managed hosting service, I deliberately provisioned and configured a Hetzner Cloud server, deployed the services with Docker, routed them through Traefik, and configured DNS through Cloudflare.

This gave me hands-on experience with deployment and operations across the application’s full path to production. The platform remains live, used by listeners, and maintained as an evolving side project.

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

Waste-Container Fill-Level Alert System

GSF wanted collection teams to know how full waste containers were before planning their routes. For an ECL academic project carried out from September 2019 to April 2020, I served as technical lead as we designed a connected system to measure fill levels and transmit periodic data.

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 ECL’s FabLab to manufacture a protective enclosure suitable for dirty and demanding conditions. We delivered a working, field-tested system and validated it in several waste containers. Without an intermediate relay, the LoRa communication reached approximately 100 metres.

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 challenged teams to design and build autonomous robots for Atom Factory, a 100-second match with several possible scoring actions and no prescribed order. Representing École Centrale de Lyon, I worked on our entry from September 2018 to June 2019, where strategy mattered as much as reliable execution.

As technical lead of the electronics team, I contributed extensively to the Python embedded software running on LEGO EV3 controllers. I worked closely with the mechanical team to align match strategy, physical capabilities, and software behavior, while coordinating the electronics work through implementation and integration.

We also applied closed-loop control concepts from our ECL coursework to regulate robot movement and position. Our robots passed official homologation and competed in the event. The project strengthened my experience in embedded programming, control systems, cross-disciplinary integration, and technical coordination.

  • 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 created a 60 Hz persistence-of-vision LED display that showed text sent from a smartphone over Bluetooth. Its LED assembly was mounted on a coil rotating 60 times per second; as it turned, the controller lit the appropriate LEDs at each angular position so the eye perceived stable text.

The completed system was successfully demonstrated at Polytechnique Day. As head of the club’s IT department, I developed the native Android application in Java, defined the communication format with the electronics team, and handled Bluetooth connection failures and retries.

I also divided the software work into tasks, set deadlines, and followed delivery to keep the IT stream aligned with the other teams. The project gave me practical experience coordinating software and electronics work around a shared interface and integration schedule.

  • Java
  • Android SDK
  • Bluetooth

Classroom Booking Desktop Application

A school in Senegal needed a clearer way for staff and teachers to view classroom schedules, find available rooms, and reserve them for upcoming courses. During my DUT, a friend and I volunteered to build a Java desktop application for that purpose.

I designed the MySQL database and implemented the Java backend using JDBC, while my friend developed the Swing interface. The backend checked room availability before saving a booking to reject schedule conflicts.

As my first substantial collaborative software project, it also challenged me to define the boundary between frontend and backend work, coordinate development, and integrate separately built components. The experience gave me a practical understanding of the problems Git solves in team development. We completed the application and handed it over to the school with its source code.

  • Java
  • Swing
  • JDBC
  • MySQL
  • Git