Transitioning remi.works to SvelteKit
I moved remi.works to SvelteKit. It's still a static site on GitHub Pages, but there's quite a bit less custom plumbing holding it together now.
The previous version used Eleventy to build the pages and my own JavaScript to navigate between them. That worked, but adding search, themes, and canvas toys meant the browser code had more and more to coordinate. Fetch a page, swap the content, update the metadata, stop the old animation, start the new one, put focus somewhere sensible. I was maintaining a small router alongside the actual site.
Keeping the parts I liked
I didn't want to take on a production server just to tidy that up. SvelteKit's static adapter lets me keep the same deployment model: build the site, check the output, and send the files to GitHub Pages. Article text is already in the HTML when the page arrives.
SvelteKit now handles routes and the shared layout. The navbar, search dialog, and theme controls stay mounted as I move between pages. Components take care of their own setup and cleanup, which is especially useful for the toys. A canvas shouldn't keep running after you've left its page.
One place for the content
I kept the authored HTML and JSON metadata. A build-time content module validates them and supplies the article pages, Work pages, listings, search index, and sitemap. I can change how an article is displayed without moving its text into a component or maintaining another version for search.
The articles live under /articles/, with older News URLs redirecting to their replacements. Articles and Work also have
previous and next links now, so you can keep reading without returning to the list every time.
Making it feel like the same site
The two-color theme and bento layout are still here. Page navigation moves the tiles in a horizontal cascade, while filtering a list uses a vertical one. The navbar stays put. There's less movement when reduced motion is enabled.
The toys are under Extras, alongside a new Tools page. The first tool exposes the site's palette generator so you can try the color rules yourself. These are the kinds of additions I wanted to spend time on; SvelteKit gives them somewhere to live without another round of routing code.
I've put the implementation details in remi.works updated, and the color-generation notes in Automating color theory.