Bikes Map
Every Paris shared bike and scooter on one live map. Lime, Voi, Dott and Vélib in real time, with GPS that follows you and the nearest ride shown first.
Portfolio
Full-stack developer building small, useful web things.
Every Paris shared bike and scooter on one live map. Lime, Voi, Dott and Vélib in real time, with GPS that follows you and the nearest ride shown first.
Predict the scores of Rocket League esports matches, earn points and climb private leaderboards with your friends. Free to play, fictional points only, no real money.
Turn the setlist from a concert you went to into a Spotify playlist, song for song. Search a band on setlist.fm, pick the exact show, review the matched tracks, then save it. The show doesn't have to end when the lights come up.
A French Wheel-of-Fortune word game: spin the wheel, call letters and race to solve the hidden phrase. Play ranked 1v1 with an ELO ladder, quick matches, private rooms with friends by code, or local pass-and-play. Server-authoritative, so the answer never reaches the browser.
Guess a historical figure from two pins on a world map: where they were born, and where they died. Six guesses, hints that unlock as you miss, 280 figures from Napoleon to Freddie Mercury. No account, no sign-up, nothing saved: the whole game runs in your browser.
Packages I publish on npm, used in my own projects first.
Attach middleware functions to Vue Router navigation through route meta fields. Middlewares are inherited from parent routes, run in order, and any one of them can redirect or abort the navigation.
yarn add vue3-router-middlewares
Declare one hex color and get a full Tailwind shade scale from 50 to 950, the matching CSS variables and an automatic readable contrast color. Because every shade goes through a variable, a whole theme can be re-skinned at runtime.
yarn add tailwindcss-custom-colors
A Vite plugin that collects your exported types and interfaces into a generated global.d.ts, so you can use them without importing them. Regenerates on every file change in dev and leaves production builds untouched.
yarn add -D vite-plugin-global-types