Freelance developer · Toulouse Développeur freelance · Toulouse

I build the tools I wish existed. Je crée les outils qui me manquaient.

Voice-driven chess, a blindfold-cubing trainer, a task queue for AI coding agents. I'm Mathis Serrier — C/C++ at 42, Python and TypeScript everywhere else. Des échecs à la voix, un entraîneur de cubing à l'aveugle, une task queue pour agents de code IA. Moi, c'est Mathis Serrier — C/C++ à 42, Python et TypeScript partout ailleurs.

Open for freelance workDisponible en freelance See the work ↓Voir les projets ↓ {{ email }}
scroll ↓scroll ↓
Work — 01Projets — 01

Fil de Fer

a 3D wireframe renderer, in C un renderer 3D wireframe, en C
C · MiniLibX · École 42 code ↗

The 42 classic: read a heightmap, project every point, draw every edge — no OpenGL, just lines. This one runs the same math in your browser. Grab it. Le classique de 42 : lire une heightmap, projeter chaque point, tracer chaque arête — sans OpenGL, rien que des lignes. Celui-ci refait les mêmes maths dans votre navigateur. Attrapez-le.

{{ fdfTitle }}
mapmap
viewvue
colorcouleur
↑ a MiniLibX-style window running real 42 maps — drag to orbit, scroll or pinch to zoom, not a screenshot ↑ une fenêtre façon MiniLibX avec de vraies maps de 42 — glissez pour pivoter, molette ou pincez pour zoomer, pas un screenshot
01

Isometric, by handL'isométrique, à la main

Parse the grid, center it, rotate, project. The whole pipeline is sixty lines of math — the same ones running in this canvas. Parser la grille, la centrer, pivoter, projeter. Toute la chaîne tient en soixante lignes de maths — les mêmes qui tournent dans ce canvas.

02

Line by lineLigne à ligne

In C every edge is Bresenham, pixel by pixel into an image buffer. Height picks the color — coral peaks over ivory plains. En C, chaque arête c'est Bresenham, pixel par pixel dans un buffer d'image. L'altitude choisit la couleur — crêtes corail sur plaines ivoire.

03

No allocations wastedPas un octet de trop

42 rules: no leaks, no libraries, every malloc accounted for. The kind of discipline that stays with you in any language. Les règles de 42 : zéro leak, zéro lib, chaque malloc justifié. Le genre de discipline qui vous suit dans n'importe quel langage.

Work — 02Projets — 02

Savana

a League of Legends account manager un gestionnaire de comptes League of Legends
Electron · Vue 3 · Express · SQLite code ↗

A desktop companion that holds all your League accounts and swaps between them in one click — sessions injected straight into the Riot client, ranked stats pulled live from the Riot API. Un compagnon desktop qui garde tous vos comptes League et switche de l'un à l'autre en un clic — sessions injectées directement dans le client Riot, stats ranked tirées en direct de l'API Riot.

S Savana
S Savana v2.0
Accounts Friends
T TsRun Online
My Accounts
{{ savCount }} accounts
SoloQ
{{ c.name }} {{ c.tag }}
{{ c.level }} LVL
{{ c.rankTier }} {{ c.rankLp }}
{{ c.wr }} WR {{ c.games }} Games
{{ c.rolePct }} {{ c.kdaK }} / {{ c.kdaD }} / {{ c.kdaA }} {{ c.kdaRatio }} {{ ch.letter }} {{ ch.wr }}
User Pass
{{ c.name }} {{ c.tag }}
Username / Email {{ c.backUser }}
Password ••••••••••••
Delete Session Save
{{ tt.text }}
↑ the real app, miniaturized — click a card to flip it, hit Load to launch ↑ la vraie app, miniaturisée — cliquez une carte pour la retourner, Load pour lancer
01

One click, no passwordsUn clic, zéro mot de passe

Savana injects the session straight into the Riot client — no retyping credentials, no clipboard gymnastics. Switching takes seconds. Savana injecte la session directement dans le client Riot — pas de mot de passe à retaper, pas de gymnastique clipboard. Le switch prend quelques secondes.

02

Stats that stay freshDes stats toujours fraîches

Rank, LP and winrate per account, straight from the Riot API — so you know which smurf is climbing before you log in. Rang, LP et winrate par compte, directement depuis l'API Riot — pour savoir quel smurf grimpe avant même de se connecter.

03

A compact stackUne stack compacte

Electron shell, Vue 3 front, a small Express service for the Riot API, SQLite for the vault. Everything local, nothing phones home. Un shell Electron, un front Vue 3, un petit service Express pour l'API Riot, SQLite pour le coffre. Tout en local, rien ne fuite.

Work — 03Projets — 03

Foreman

a personal task queue for AI coding agents une task queue perso pour agents de code IA
Tauri 2 · Rust · React 18 · SQLite private repo — ask me for a demo repo privé — demandez une démo

A macOS desktop app that turns plain-English intent into shipped code: queue tasks under a project, let a classifier route them to specialised agents, and watch them run — in parallel across agents, strictly serial within one. Une app desktop macOS qui transforme une intention en code shippé : des tâches en queue sous un projet, un classifieur qui les route vers des agents spécialisés, et une exécution en parallèle entre agents — strictement séquentielle au sein d'un même agent.

Foreman / portfolio-site ⎇ main Tasks Map Accounts
Tasks {{ fmCount }} All Active Done
{{ t.cx }} {{ t.title }}
{{ t.avLetter }} {{ t.agent }} {{ t.pillIcon }}{{ t.pillText }}
✓ routed to {{ fmRouted }}
Room agents coordinating {{ ra.letter }}
{{ rm.avLetter }} {{ rm.name }} {{ rm.kindLabel }} {{ rm.recipient }} {{ rm.time }} {{ rm.body }}
{{ fmSelCx }} {{ fmSelTitle }} {{ fmSelAvLetter }} {{ fmSelAgent }} {{ fmSelPillIcon }}{{ fmSelPillText }}
You {{ fmYouText }}
Claude {{ line.text }}
{{ gc.code }} {{ gc.path }}
No file changes yet.
src
components
· StatusStrip.tsx
· TaskListPane.tsx
· index.css
src-tauri
· executor.rs
· queue.rs
· CLAUDE.md
{{ fmWorking }} working · {{ fmCount }} tasks · {{ fmDone }} done · ⎇ main {{ costToday }} today · foreman v2
↑ the real app, miniaturized — click a task, or type a goal and press ↵ Delegate ↑ la vraie app, miniaturisée — cliquez une tâche, ou tapez un objectif puis ↵ Delegate
01

Type a goal, get a planUn objectif tapé, un plan

Every task is auto-classified by Claude Haiku or Gemini Flash: a complexity grade plus a route to the right role agent — Frontend, Backend, Tests. Low-complexity work runs itself; bigger jobs wait for a click. Chaque tâche est classée par Claude Haiku ou Gemini Flash : un niveau de complexité et un agent de rôle — Frontend, Backend, Tests. Le simple s'exécute tout seul ; le reste attend un clic.

02

A provider per agentUn provider par agent

Claude, Codex, Gemini or Aider — each agent runs on the CLI you choose, spawned in the project directory, its output streamed back as a conversation with token costs tracked per run. Claude, Codex, Gemini ou Aider — chaque agent tourne sur le CLI de votre choix, lancé dans le dossier du projet, sa sortie streamée comme une conversation, coût en tokens suivi par run.

03

The roomLa room

Agents coordinate: hand a sub-task to a teammate, depth-bounded so delegation never spirals. Parallel across agents, serial within one — a session can't do two things at once. Les agents se coordonnent : une sous-tâche se délègue à un coéquipier, avec un garde-fou de profondeur. Parallèle entre agents, séquentiel au sein d'un agent — une session ne fait qu'une chose à la fois.

04

Honest engineeringDe l'ingénierie honnête

A Rust backend under Tauri 2, a React 18 front in plain CSS. Read-only git status, an editable CLAUDE.md per project, SQLite for everything — and the same UI runs in the browser on a mocked backend for fast iteration. Un backend Rust sous Tauri 2, un front React 18 en CSS vanilla. Statut git en lecture seule, un CLAUDE.md éditable par projet, SQLite pour tout — et la même UI tourne dans le navigateur sur un backend mocké.

Also — 04 · 05Aussi — 04 · 05

Smaller builds, same care. Plus petits — le même soin.

04 ChessVoice privateprivé

Chess played entirely by voice — browser STT/TTS, hybrid local-grammar + LLM move parsing, on chess.com and lichess. Les échecs entièrement à la voix — STT/TTS navigateur, parsing des coups hybride grammaire locale + LLM, sur chess.com et lichess.

Chrome MV3 · Web Speech · Groq
05 minishell code ↗

A small Bash rebuilt from scratch in C — parsing, pipes, signals, builtins, and not a byte leaked. With Adrien Mori. Un petit Bash réécrit from scratch en C — parsing, pipes, signaux, builtins, zéro leak. Avec Adrien Mori.

C · syscalls · École 42
mathis serrier — france
AboutÀ propos

Full-stack, end to end. Full-stack, de bout en bout.

I like owning the whole stack — Python day to day, a Rust core or a typed React front when the tool calls for it, and the design in between. I cut my teeth at École 42, in C and C++: memory, processes, a shell rebuilt from scratch. Lately it's agentic tooling — queues, classifiers and specialised agents that turn plain-English intent into working software. J'aime posséder toute la stack — Python au quotidien, un cœur Rust ou un front React typé quand l'outil le demande, et le design entre les deux. J'ai fait mes armes à l'École 42, en C et C++ : la mémoire, les processus, un shell réécrit from scratch. Ces temps-ci : le tooling agentique — des queues, des classifieurs et des agents qui transforment une intention en logiciel qui tourne.

I care about calm interfaces, warm typography and software that respects your attention. This site is set in Newsreader and Iosevka — the same pair Foreman ships with. J'aime les interfaces calmes, la typographie chaleureuse et les logiciels qui respectent l'attention. Ce site est composé en Newsreader et Iosevka — la même paire que Foreman embarque.

Python · C++/C · TypeScript · Rust
Trained at École 42Formé à l'École 42
Desktop apps — Tauri 2 & ElectronApps desktop — Tauri 2 & Electron
Based in FranceBasé en France
Stack

Tools I reach for. Mes outils de prédilection.

Python
the daily driverle daily driver
C++ / C
close to the metal — since 42près du métal — depuis 42
TypeScript
typed end to endtypé de bout en bout
Rust
the heavy liftingle gros œuvre
React 18
calm UI, plain CSSUI calme, CSS vanilla
Vue 3
Savana's front endle front de Savana
Tauri 2 · Electron
desktop, two waysle desktop, deux façons
Node · Express
servers & proxiesserveurs & proxies
SQLite
one honest fileun seul fichier honnête
Claude · Groq
agents, classifiers, NLUagents, classifieurs, NLU
Web Speech API
hands-free interfacesdes interfaces mains libres
Git
read, parsed, respectedlu, parsé, respecté
TsRun/foreman — repo languages TsRun/foreman — langages du repo
TypeScript 45.5% Rust 43.3% CSS 10.8% HTML 0.4%
Contact

Let's build something. Construisons quelque chose.

I'm available for freelance missions — desktop tools, web apps, AI & agent integrations. Remote, from Toulouse. Disponible pour des missions freelance — outils desktop, apps web, intégrations IA & agents. En remote, depuis Toulouse.

{{ email }}
github.com/TsRun ↗ CV — on requestCV — sur demande
© 2026 Mathis Serrier Newsreader & Iosevka Back to top ↑Haut de page ↑