All Work
Product BuildMusic technologymuseos.io

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.

MuseOS — Sign in — the product's own screen, captured from the running app.
Sign in — the product's own screen, captured from the running app.

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

MuseOS — museos.io — the marketing site, also ours.
museos.io — the marketing site, also ours.
MuseOS — Marketing site — product.
Marketing site — product.

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