Embedded systems engineering student at INSAT, Tunisia.
I build developer tools, full-stack products, and the software that makes robots move —
from microcontroller firmware to ROS 2 to the editor you debug it in.
🥇 NXP Cup Tunisia — 1st place · 🌍 NXP Cup international finalist · 🤖 Eurobot 2026 — 1st in Tunisia, Top 5 worldwide
- 🪐 Maintaining ROS 2 Inspector — static architecture analysis for ROS 2, on PyPI, with a VS Code extension.
- 🎬 Building MotionDeck — an MCP server that lets Claude and Codex produce animated presentations and export them to HTML, PDF, or video.
- 🦾 Building the ROS 2 stack and rosbridge dashboard for Aerobotix INSAT's Eurobot robot — path planning, strategy, and micro-ROS.
- 💼 Open to internships and software engineering roles in developer tooling, full-stack systems, robotics, and embedded software.
|
CREATOR & MAINTAINER · PYTHON · PYPI Understand a ROS 2 workspace without building or running it. The CLI parses Python, C++, interface, and launch files to discover packages, nodes, deployments, topics, services, and actions, then renders an evidence-backed architecture graph (Mermaid, DOT, interactive HTML) and enforces architecture policies in CI. pipx install ros2inspector
ros2inspector graph comms --format mermaid
|
CREATOR · TYPESCRIPT · VS CODE API The same architecture model, inside the editor: a relationship-aware explorer, an interactive zoomable graph with filters and 1/2-hop focus, audit findings and policy violations in the Problems panel, and jump-to-source navigation. Static by design — no ROS installation, no DDS, no workspace code executed.
|
|
CREATOR · TYPESCRIPT · MCP An MCP server for Claude, Codex, and any MCP client that turns a prompt into a designed, animated slide deck. The AI sends data; the server draws charts, stats, timelines, and diagrams with six design presets, reports layout problems after every edit, and exports to offline HTML, PDF, MP4, WebM, or GIF.
|
AI + OPTIMIZATION · FULL-STACK Describe a linear program in English or French and get an optimal plan with a plain-language explanation. Gemini only translates intent into a validated model — a deterministic PuLP solver does the math. Prompt → Gemini parser → NestJS API → FastAPI + PuLP → Explained result
|
AEROBOTIX INSAT · ROS 2 & EMBEDDED DEVELOPER
🥇 1st in Tunisia · 🥈 Accumulation phase · 🌍 Top 5 worldwide · Team organization ↗ · Robot demo ↗
An autonomous competition robot whose brain is a Raspberry Pi running ROS 2 Jazzy. It plans paths around live obstacles, runs match strategies, and drives an STM32, three ESP32 boards, and the Wi-Fi PAMI robots through micro-ROS — all monitored and controlled from a browser over rosbridge.
flowchart LR
subgraph Browser
DASH["Match dashboard<br/>roslib.js"]
end
subgraph RPI["Raspberry Pi · ROS 2 Jazzy"]
RB["rosbridge_server"]
API["Flask API<br/>strategies · launch · logs"]
WH["web_handler"]
HA["hybrid_astar<br/>/compute_path"]
STRAT["strategy manager<br/>+ executor"]
TS["task scheduler"]
LID["lidar obstacle<br/>warning"]
AG["micro-ROS agents"]
end
DASH <-->|"WebSocket · topics & services"| RB
DASH -->|REST| API
RB <--> WH
WH --> HA
STRAT --> TS
TS <--> HA
LID --> TS
TS <--> AG
AG <-->|serial| STM["STM32<br/>navigation"]
AG <-->|serial| ESP["ESP32<br/>actuator boards"]
AG <-->|"Wi-Fi · UDP"| PAMI["PAMI<br/>robots"]
|
TOP CONTRIBUTOR · PYTHON · RCLPY The robot's onboard software, about 23k lines of Python across five packages.
|
CORE DEVELOPER · ROSLIB.JS · FLASK A web control room served from the robot, used from any laptop on the team network.
|
Firmware & other Eurobot repos I contributed to
| Repo | My contribution |
|---|---|
| Navigation_MicroROS_2026 | STM32 micro-ROS: pose topic, services, automatic reconnect when the agent restarts |
| System_code_ESP32_back / front / pneumatic | Agent reconnection, reliable QoS, faster DDS discovery, status and debug topics, memory fix |
| PAMI_ESP32_code | Status service, motion commands, and beacon communication for the small PAMI robots |
| LIDAR_EUROBOT | Obstacle-warning messages, remote visualization, Raspberry Pi integration |
|
EMBEDDED & CONTROL DEVELOPER Real-time lane following on a Teensy 4: Pixy2 vision → steering error → PID correction, with encoder-based speed control and serial telemetry for tuning. Backed by an ESP32 WebSocket test rig for driving the car without the camera pipeline.
🥇 1st in Tunisia · International finalist, Netherlands 2025 |
ORANGE DIGITAL CENTER · IoT SOFTWARE ENGINEER INTERN Monitoring and regulation of microalgae pools: embedded acquisition, closed-loop actuation, AWS IoT telemetry, remote commands, and web plus touchscreen interfaces.
|
|
PRIVATE ORGANIZATION PROJECT · FULL-STACK DEVELOPER E-learning, production matching, and logistics for artisan associations. I worked on matching, concurrent order flows, secure media delivery, authentication, performance, UI reliability, and automated testing.
|
FULL-STACK · PRODUCTION-ORIENTED Team task management with admin/employee roles enforced server-side, HttpOnly JWT auth, comments and activity history, filters and dashboards, migrations, health checks, Docker Compose deployment, and CI with unit and E2E tests.
|
More things I built
| Project | What it is |
|---|---|
| Line-Follower Robot | Five-sensor PID line follower for ENSI RoboCup 2024 (Arduino C++) |
| ESP32 Firebase IoT Node | ESP32/FreeRTOS node publishing timestamped DHT11 telemetry to Firebase over TLS |
| Eurobot Dashboard | Web control dashboard served from the robot's Raspberry Pi |
| ChatGPT Prompt Runner | macOS desktop app (Electron + Next.js) for organizing reusable prompt workflows |
| ViT for antenna inverse design | PyTorch Vision Transformer predicting circular antenna-array configurations from radiation specs |
| Robot path simulator | Java OOP prototype: robots, obstacles, charging points, and pathfinding |
| Codeforces solutions | C++ competitive programming practice |
|
Build Python · C/C++ · TypeScript |
Connect ROS 2 · rosbridge · micro-ROS · tf2 |
Operate PostgreSQL · Redis · Prisma |

