Calm.
The interface never comments on the market. The plan leads with months in a row, not today’s value.
Consistency before performance.Forma Finance is the system behind Sparplan, a Swiss ETF savings plan concept. A savings plan only works if people keep going for years. Every token, component and rule here is built for that.
Explore the system ↓Clear by design.
A savings plan isn’t one screen. It shows up in the overview, the confirmation, every monthly purchase, and the moment someone wants to stop. Without shared rules, every screen would invent its own “skipped”. So once the visual direction was set, I built the system before the screens.
Five purchase states. The same meaning on every screen.
Principles only matter if they change what gets built.
The interface never comments on the market. The plan leads with months in a row, not today’s value.
Consistency before performance.Status is never colour alone. A disabled button always says why.
Nothing left to interpretation.Stopping looks exactly like pausing. No red button, no guilt copy.
The choice belongs to you.Three tiers (primitive, semantic, component), so each change happens in one place. One blue for action. Up and down colours are a setting, not a fixed rule. Inter for the interface, four radius steps. Exported as tokens.json in W3C DTCG format.
#2563EB{primitive.blue-600}button.primary.backgroundSmall pieces. Deliberate decisions. Each component carries the rules into the product.
4 variants, 3 sizes, 5 states. The destructive style is only for actions that can’t be undone, so “Stop plan” never gets it.
5 states and a CHF prefix. Every amount goes through one formatter, so it always reads CHF 1'000. Error messages say what to fix.
Leads with months in a row, total invested and the next purchase. Value sits in muted text.
No money was collected. Nothing was bought this month. The plan carries on.
Each status has exactly one definition. Skipped: no money was collected. Failed: money was collected, but the order didn’t go through.
This is the hardest screen in the case. There are four options: lower the amount, change the date, pause, stop. All four use the same card at the same size, and nothing is pre-selected.
Here the system makes the fair version the default.
You can change how you save. Your investments stay yours.
Choose an option to continue.The system lives in one file, and the tokens are generated from it. Claude and Cursor work under rules that allow only token values, so new screens can’t drift. Every change is logged and published to the same link.
Shared values keep the next screen consistent with the last.
A foundation for the screens that come next.
Every component copies as HTML, CSS or SVG.
Tested at five widths, in light and dark mode, in two languages.
Hi-fi screens. That’s where I’ll measure
how much faster changes get.