MuseOS
Music rights administration for independent artists — register copyright, hold metadata to a standard, and collect royalties without a label in between.
In development — parts of this product have not shipped yet.

The problem
An independent artist owns their work and almost none of the machinery around it. Copyright registration, metadata standards, sync licensing, royalty collection — each is a separate system, most are built for labels, and the gaps between them are where money quietly fails to arrive.
MuseOS is an attempt to put those in one place: register the rights, hold the metadata to a standard that downstream platforms will actually accept, and track what is owed.
The design
Vermilion, charcoal and a warm off-white, with geometric artwork that reads as a record without ever drawing one literally. The sign-in screen splits light and dark down the middle — the marketing argument on one side, the form on the other — which lets the product introduce itself to a returning user without a separate landing page.
It is a deliberately warm palette for a rights-administration tool, and that is the right call. The competition in this category looks like accounting software, and the artists using it did not get into music to use accounting software.
Where the design system has drifted
There are two colour systems in the codebase and they do not agree. The brand lives in the Tailwind config — vermilion, yellow, charcoal, warm off-white. The semantic layer underneath is still shadcn's default: --primary is blue-600, and --background is a cool grey rather than the brand's warm off-white.
The practical effect is that any component reaching for bg-primary renders blue inside a vermilion brand, and two different whites are in play depending on which system a screen was built against.
One more, and it is the sharpest: --success and --warning are both hue 199. Warning is simply a lighter cyan than success. A warning that is the same hue as a success is not a warning — colour is carrying no information there at all.
Under the interface
The repository holds three applications behind one front door — the product, the marketing site at museos.io, and the API. A hundred and eighty-six frontend files across forty-six routes talk to a hundred and thirty-two API files on a NestJS back end, containerised with Docker.
The hard part of a rights product is not the screens, it is the metadata: holding a release to a standard strict enough that a downstream platform will accept it without a human re-keying it. Much of that API surface exists to enforce exactly that.
Palette
Brand red
#D63B1F
The brand — vermilion
Brand yellow
#E5BC3F
Secondary
Charcoal
#1A1A1A
Dark ground
Off-white
#F5F3F0
Warm light ground
Semantic primary
#2463EB
Still the shadcn default blue
Semantic success
#0DA2E7
Cyan — see below
Scope
- App routes
- 46
- Frontend files
- 186
- API files
- 132
- Apps in the repo
- 3
Screens


What we did
- Product design
- Marketing site
- Interface design — 46 routes
- Frontend build
- API and AI worker
Built with
- React
- Vite
- TypeScript
- Tailwind
- Radix UI
- NestJS
- Docker