nexost.io
This site. A static workshop for projects, games and notes, built to be cheap to run.
This is the site you are reading. It replaced a single landing page with somewhere I can actually put things: projects, small games, and the notes that come out of building them.
What I wanted
- One place for everything, sorted by what a thing is rather than when I happened to make it.
- Pages that load instantly and still read fine with JavaScript switched off.
- Publishing that takes one push and no thought.
- A look I will still like in two years: neutral colours, one accent, careful type, and a light and a dark theme that are both first-class.
How it is built
Every page is generated ahead of time with Astro and served as plain HTML and CSS. An ordinary page ships one small script, for the theme toggle and the background. Games are the exception: each one is a self-contained page that gets framed into its write-up, so a game can be as heavy as it likes without costing the rest of the site anything.
Content is Markdown. Adding a project, a game or a note means adding one file with a few lines of front matter; lists, feeds and the sitemap pick it up on the next build.
The background is the one indulgence. The page is ruled with a faint dot grid, and every second or two a cell somewhere in the empty space lights up along with its four neighbours, then fades. That is the move from Blackout, played idly. It only ever lands on blank paper, and it stops entirely if your system asks for reduced motion.
The fonts are self-hosted: Bricolage Grotesque for headings, Instrument Sans for text and Geist Mono for the small print. No page here makes a request to anyone but this server.
How it ships
A push to the main branch builds the site, opens it in a real browser at phone, tablet and desktop widths, and only publishes if every check passes. The server never runs a build, or any code from the repository at all. It copies a folder of static files into place, switches over in one step, and keeps the previous releases around in case one needs rolling back.
That is deliberately boring.