Under the hood

The technology behind Colada

Colada is two halves: a local-first desktop app that runs entirely on your machine, and an optional hosted platform for accounts, sync, sharing, a live realtime layer and anonymous analytics. Here's what powers each, and why.

How it fits together

🖥️ Desktop applocal · on your device
🌐 Website · Nuxtcolada.fm
🛠️ Backofficeinternal
API Gateway.NET · YARP
IdentityKeycloak · OIDC
Accounts.NET
Catalog.NET
Analytics.NET
Realtime.NET · WS
Content.NET
PostgreSQLprofiles
ClickHouseevents
Kafkaevent log

The desktop app works with none of this — the platform is entirely optional. When you do sign in, the browser only ever talks to the gateway, never directly to identity or the data stores.

Desktop app Local, private, offline-first

BackendPython · Flask

A tiny local web server that runs the entire app on your machine — no cloud round-trips.

InterfaceVanilla JS · Jinja

No SPA framework: fast, dependency-light, server-rendered pages that install as an app (PWA).

PlayerHTML5 Audio

Gapless playback, smart queues and session resume, all client-side.

VisualizersCanvas

20+ GPU-smooth styles drawn frame-by-frame from the live audio signal.

AI DJLLMs · MCP

Local models (Ollama) or a cloud provider, driven through an MCP server so any assistant can DJ.

MetadataLast.fm · LRCLIB · ReccoBeats

Genres, synced lyrics and a semantic read on every track’s mood & energy.

StorageLocal JSON

State lives in your OS app-data folder — there is no database server to run.

Hosted platform Optional accounts & sync

WebsiteNuxt 3 · Vue · TypeScript

This marketing site and the account portal, server-rendered for speed and SEO.

BackofficeNuxt 3 · admin-only

A separate internal tool for the catalogue, users and analytics — on its own deploy, gated to admin accounts at the app and the API.

API gateway.NET 9 · YARP

The single edge: routing, JWT auth, per-origin rate-limiting and CORS.

Accounts.NET 9 · EF Core · PostgreSQL

Profiles, avatars and consent — brokered server-side via a BFF so tokens never touch the browser.

IdentityKeycloak 26 · OIDC

Standards-based auth (incl. Google sign-in); the browser never sees admin credentials.

AnalyticsClickHouse

A fast columnar store for anonymous, pseudonymous usage events.

Realtime.NET 9 · WebSockets

A 1:1 live socket per active listener — signed-in or anonymous — for now-playing presence, live “here now” counts and instant notifications.

Event backboneApache Kafka · KRaft

A durable, replayable event log: one service emits, many react independently — analytics, notifications and the realtime fan-out.

Event formatCloudEvents 1.0

Every event on the bus uses the CNCF standard envelope rather than a house format, so other systems can read it without learning ours.

EmailResend

Transactional email over HTTPS — verification and native password resets.

Infrastructure Simple on purpose

RuntimeDocker Compose

The whole platform as containers, defined in one file.

HostDigitalOcean · single VM

One right-sized Droplet — deliberately simple and cheap to run.

EdgeCaddy

Automatic HTTPS and reverse proxy in front of everything.

DNSCloudflare

DNS for colada.fm.

DeliveryGitLab CI

Tests, container image builds and the private registry.

Curious how it all came together?

Read the behind-the-scenes →