Anyone running a home server ends up with a list of addresses that only they can remember. Simple Dash is where that list lives: pinned links, categories, search, and real browser links that behave like links.
One document, no database
The entire dashboard is one JSON value in Cloudflare KV. There is no relational schema, no migration story, and no second document that can drift out of sync with the first. Array order is authoritative for both categories and links, so reordering is just a write.
Exports and imports use the same document format that the application reads, which means a backup is a file you can open, read, and edit by hand if you ever need to.
No framework, on purpose
The client is plain JavaScript split into four files with clear jobs: an HTTP client, a pure model that handles filtering and ordering and the save queue, a renderer, and a coordinator. There is no build step, no bundler, and no runtime dependency to keep patched.
The saving is a serialised queue with visible pending, saving, and error states, plus an explicit retry. A dashboard that silently loses an edit is worse than one that tells you it failed.
Access and privacy
A shared password issues a signed session cookie with strict settings, and every response carries the same security headers whether it came from the worker or the asset binding. Targets that live on a private network are labelled as local only, so it is obvious which links will work from outside that network and which will not.
There is an optional availability check for saved public links, run on demand rather than on a schedule, because a dashboard that polls forty services in the background is a dashboard that wakes up your server for no reason.