Spün 365 - Day 4: Building the System Behind the Systems
Day 4 was a relatively quiet one.
I didn’t ship anything huge today, but I made progress on two pieces of infrastructure that should make building Spün significantly easier going forward.
Spün Auth is starting to come together
I’ve been working on the authentication flow for Spün Auth, specifically the authorization pages.
The idea is simple.
A product should be able to request authentication from Spün Auth by providing things like a client ID and redirect URI. Spün Auth handles the authentication, then sends the user back to the application once they’re authenticated.
In other words, instead of every Spün product having to build its own authentication system, they can plug into one shared identity layer. It’s the same idea as Google’s OAuth.
The flow is already functioning.
The UI isn’t finished yet, so there’s still work to do, but getting the underlying authentication flow working is a pretty important milestone.
And this is exactly the kind of thing I had in mind when I started thinking about Spün as an ecosystem rather than a collection of unrelated products.
One product can become infrastructure for another.
The Spün UI Template
The second thing I worked on today is going to end up saving me a ridiculous amount of time.
I’ve been building interfaces for different Spün projects, and there’s a recurring problem:
Every time I start a new project, I have to explain the Spün design system all over again and it gets annoying really quickly.
And when an AI builder is involved, I have to explain all of this particularly carefully because otherwise it will happily invent its own interpretation of what “Spün” looks like 😭.
So I started building a Spün UI template.
The idea is to have one reusable foundation that any Spün product can start from.
Instead of starting from an empty project and teaching the builder how Spün works every single time, the project could eventually do something like:
npm install @spun/ui
Then initialize the template.
The package would provide the components, design tokens, icon system, typography, styling conventions, and the rules that make an interface feel like it belongs to Spün.
The exact implementation is still being figured out, but the goal is bigger than simply creating a component library.
I want it to become the starting point for Spün interfaces.
One foundation for everything Spün
This is an classic example of the idea behind Spün starting to show up in the architecture itself.
If Spün is going to contain multiple products, I don’t want every product to reinvent the same foundations.
Authentication shouldn’t have to be rebuilt. UI shouldn’t have to be reinvented. Infrastructure shouldn’t have to be duplicated unnecessarily.
Instead, these things can become shared threads that connect everything together.
That’s the part of Spün I’m increasingly enjoying.
I’m not just building products anymore. I’m building the systems that make building those products easier.
And honestly, that’s probably going to save me a lot of headaches over the next 361 days.
Day 4 complete.
361 days to go.