Because the world doesn't need another JS site generator.
I'm proud of this project, but since completing it, I now have a job where I work in NextJS full-time, and I'm just not enthused to do more of the same work in the evening. Ironically, I used skills I earned building this site to get that job -- but that now means this project is not a priority. What I want to do instead is write, and that means finding a platform that I'm also not making.
I was really into this Wagnerian idea of 'Totallkunst', i.e. making every part of the blog a piece of 'artwork' (if you could call it such.)
But realistically, I don't have time to do my own blogging engine, just like I don't have time to make my own clothes, make paintings instead of smartphone pics, or, some nights, my own dinner.
If I'm going to do something, I want to do it well. And that means walking away from this.
I'm still using a personal version of this package to host my own website, but that will change shortly as well. I might do blot.im, or I might use lume. Or maybe soupault again. Or maybe (and this is an idea that appeals to me greatly,
I'm enormously grateful I did this project, and I'm enormously grateful to walk away.
See you in the streets!
A nearly-unstyled, hackable, ultra-modern, ultra-clean scaffold for rich, interactive storytelling, journalism and blogging. Fork this repo and get to work. See Lizmars.net for an example of what is possible.
Because ‘small and simple’ usually means ‘limited’. Your posts could be more than just plain text; they could be experiences. Go ahead, flex your creative (o)pinions. 🪽
If you really want a minimalist no-JS blogging engine, you could do much worse than Soupault, and if you really, really hate complexity, there is the elegant, spare Gemini. For good and for ill, that’s not what Sbstr8 is about.
But what if you want to do media-rich storytelling, but coding in Typescript and React isn’t your jam? In this case, please do check out the professional choice for interactive storytelling, the superlative Vev. Yet it’s not open source, and is not optimal for hosting e.g. arbitrary chunks of React. Vev low-code/no-code, which is great for professional journalists, but less great for those of us who don’t feel we’ve done any real work until there’s a .tsx
.
By contrast, Sbstr8 is code-first and clastic. With Sbstr8, and a basic knowledge of Typescript and React, your only limit is the imagination. And while we rely on Next’s tree shaking to keep bundle size down, we prioritize immersiveness and creative freedom over counting kilobytes. The bundle size will be what the bundle size needs to be. Because Sbstr8 is for creatives who code.
Thanks to Next.js and tree shaking, your finished site will only contain the libraries you choose to use, page by page. But it’s all there if you need it. <3
git clone https://github.com/elmarsto/substrate <your-project-name>
npm install
npx husky install
(you only have to do this once per repo)npx storybook &
(design your components in a sandbox)npx run dev
happy hackingnpx run build
If you’re hashtag-blessed and run Nix or, even better, NixOS, with support for Flakes, then you can actually spin up a local demo with:
nix run github:elmarsto/sbstr8
Yep, that’s it.
Supporting the following on most installs of Nix supporting flakes:
nix develop
-> minimal development shell, including typescript language server. You’ll need to npm install
, and then npm run dev
. Then, have at it!nix run
-> build and spin up a distributable Nix derivationnix build
-> get a working distributable folder at ./result
nix build '.#k8s'
-> WIP: generates a currently-unusable kubernetes spec at ./resultnix build '.#docker'
-> next steps:
docker load < result
# outputs something like localhost/sbstr8:1234567890ABCDEF
rm -rf result
docker run localhost/sbstr8:1234567890ABCDEF