// things I've built

Projects

Side projects, tools, experiments.

Some still alive, some honourably retired.

Active

Story-driven treasure hunts played on your phone. No app, no account, just a link.

ReactTypeScriptTailwindViteSupabasePostgreSQLEdge FunctionsLeafletVitestNetlify

A live 3D Moon showing its real phase and position from where you stand, plus a lunar calendar.

Three.jsWebGLTypeScriptastronomy-engineViteVitestPlaywrightNetlify

Is it raining in London right now? Probably not.

TypeScriptViteOpen-Meteo APIEdge FunctionsVitestNetlify

Predicts the setlist for an upcoming gig and builds you a Spotify playlist.

Next.jsTypeScriptSpotify APISetlist.fm APIMusicbrainz APISongkick APIOAuthTailwindVercel

Customisable countdowns for future and past events. Small and sharp.

ReactTypeScriptTailwindshadcn/uiViteVitestPlaywrightNetlifyEdge Functions

Track the countries you've visited on an interactive world map.

ReactTypeScriptTailwindViteSupabasePostgreSQLEdge FunctionsVitestNetlify

Companion site for an Italian Curse of Strahd D&D campaign. Session recordings are transcribed on-device and turned into recaps by Claude.

AstroSpeech-to-TextParakeetAI RecapsPagefindNetlify

Assign a GIF to every day of the year. Your year, in GIFs.

ReactTypeScriptTailwindViteGiphy APISupabasePostgreSQLNetlify FunctionsVitestPlaywrightNetlify

A personal log of every pizza eaten around the world. Because someone has to.

AstroSanityMapLibreNetlify

Can I have a cappuccino right now? The Italian verdict, updated every minute.

HTMLCSSVanilla JS

Tiny things

Daily, weekly or monthly analytics email digests for Umami.

Drag-and-drop zoom-in meme generator. Does exactly what it says.

Alexa skill dedicated to the legendary Nando Martellone from the Italian TV show Boris.

NPM Packages

Interactive CLI to switch, search and delete git branches.

CLITypeScriptNode

JSON of SVG shapes for every country in the world. BYO map.

SVG

Resets persisted Redux state after a configurable TTL.

ReduxReact

Micro NPM module to validate UK postcodes.

Regex
luca@sirlisko — git log --retired

# these served their time

❯
Shazamify (a.k.a. Zamify)deprecated

Play your Shazams in Spotify directly from the browser.

Chrome ExtensionSpotify OAuthSpotify API
❯
Audible RSSdeprecated

RSS feed of the latest Audible releases, scraped fresh.

NodeExpressReactWeb Scraping
❯
Gulp Blacklist Markerdeprecated

Chrome Extension that marks blacklisted gulp modules when browsing NPM and GitHub.

Chrome ExtensionGulpNPM
❯
Sproxifydeprecated

Intercepts Spotify links and lets you choose where to play them.

Chrome ExtensionUser Script
❯
POMOfydeprecated

Use Spotify songs as a Pomodoro timer. Focus mode, musical edition.

Spotify App
❯
Deliverance Improveddeprecated

A better UI for the deliverance.co.uk menu — filter, sort, and search.

NodeAngularJSWeb ScrapingBootstrapHeroku