Built in the open
Every tutorial ships with a working repo. Clone it, break it, and read the commits that got it there.
Hands-on tutorials, open-source projects, and experiments — deep dives into Three.js, Nuxt and TypeScript, written while building the real thing.
01 import * as THREE from 'three'
02
03 const geometry = new THREE.BufferGeometry()
04 geometry.setAttribute(
05 'position', new BufferAttribute(positions, 3)
06 )
07
08 const points = new THREE.Points(geometry, material)
09 scene.add(points)Compiling the shader
Step 2 of 3 — every line explained in the tutorial.
No copy-paste dumps. Each project is built end to end so you understand the decisions, not just the code.
Every tutorial ships with a working repo. Clone it, break it, and read the commits that got it there.
Nuxt 4, TypeScript, Three.js, Firebase and Mapbox — the same tools I use on production work, not toy demos.
Each guide walks the whole path — setup, the tricky middle, and deploying it somewhere people can actually visit.

Web developer, freelancer, former e-sports professional and digital creator from Gothenburg, Sweden.
I built this site as a place to document my coding journey and to share the projects that hopefully inspire you or teach you something new.
Deep dives, practical guides and hands-on projects — published as I build them.
22 minShip the dataset instead of an endpoint: one sorted Parquet file served from Nitro over HTTP range requests, DuckDB-Wasm running the GROUP BY in a Web Worker, Apache Arrow handing columns straight to Observable Plot — five charts that cross-filter in tens of milliseconds, with no /api/stats anywhere in the app.
Read article
21 minAdd meaning-based search to a Nuxt 4 site without an API key or a vector database: Nuxt Content supplies heading-sized chunks, Transformers.js embeds them locally on the CPU, sqlite-vec stores them next to an FTS5 index, and one Nitro endpoint fuses keyword and vector results with Reciprocal Rank Fusion.
Read article
19 minGet long-running work out of the request/response cycle without adding a second service: a durable queue on unstorage + Redis, a Nitro task that drains it, and Server-Sent Events streaming progress back to the browser — one typed Job shape shared by all three.
Read article
17 minMove every pixel of a photo editor off the main thread: a typed Comlink RPC boundary, a canvas handed to a worker with transferControlToOffscreen, frame-coalesced rendering, and a full-resolution export that streams progress back — all SSR-safe inside Nuxt 4.
Read article
18 minBuild a Nuxt 4 app where an LLM cannot invent a coordinate: Zod tool schemas in the shared/ folder, Mapbox geocoding and directions running server-side, and a map that redraws itself from the streamed tool results.
Read article
16 minShip real passkey authentication on a plain Nuxt 4 server: nuxt-auth-utils for the WebAuthn ceremony, Nitro's built-in db0 SQL layer for users and credentials, sealed cookie sessions, and the rpID gotchas that only appear once you put nginx in front.
Read articleParticle galaxies, shaders, lava-lamp visuals and 3D globes — built from an empty canvas up.
SSR, content pipelines, PWAs and the small architectural calls that keep an app maintainable.
Type-safe data layers, Zod schemas and API contracts that hold up once the project grows.
Docker, Nginx, PM2 and Firebase — the last mile between localhost and a real URL.
Every guide is free, open source, and written to be followed start to finish.