Full-stack TypeScript developer · esports data · Normandy, France
lschvn.dev · LinkedIn · X · Email
I'm a full-stack developer based in Caen, currently doing my apprenticeship at Studio Grinto, where I ship web and mobile apps, workflow automation and AI integrations for clients.
invade.lol - Analytics platform for tier-2 / ERL coaching staff. It ingests .rofl replay files and rebuilds the match as a web dashboard: all ten players, position by position, second by second. Built on AdonisJS v6 + Inertia/Vue 3, with PostgreSQL for player data, ClickHouse for match analytics, Redis and Cloudflare R2. invadelol/core
typescript.news - A daily TypeScript/JavaScript news site that runs itself. An agent does its own research through a self-hosted SearXNG instance, writes the articles and publishes them, with no human in the loop. Nuxt + Nuxt Content + Nuxt UI.
nuxt-form - A useForm composable for Nuxt plus a createValidationError helper for Nitro, so form validation stops being copy-pasted across every project.
tinychat3ds - A 260K-parameter TinyStories model running natively on a New Nintendo 3DS. Written in C, entirely on-device, for no good reason at all.
Languages TypeScript · PHP · Python · SQL · a bit of C when the target is weird
Front-end Nuxt · Vue 3 · Inertia · Tailwind · Nuxt UI
Back-end AdonisJS · Nitro · NestJS · Laravel · Bun · Node
Data PostgreSQL · ClickHouse · Redis
Infra Docker Compose · Proxmox · OVH VPS · Cloudflare · nginx · CrowdSec
Also SEO / GEO · n8n automation · LLM integrations
I write about what I build at lschvn.dev/blog - recent posts cover the architecture behind invade.lol and how the typescript.news newsroom actually works. I also run a small Proxmox homelab, which is where most of my infra habits come from.
Open to conversations about esports data, tooling for competitive teams, or anything TypeScript-shaped. The fastest way to reach me is email or LinkedIn.



