picassobackend

The server side of PickUsAll

A C++20 server built on oat++ for PickUsAll (Picasso), a KMP / Compose client for gaming-focused friend groups. Each conversation lives authoritatively on exactly one instance — self-hosted or managed — and clients hold a WebSocket connection to every server they have added.

What it does

Chat source of truth

The client's local store is a cache; this server owns the real history for the conversations created on it.

Call signaling only

Audio never touches the server. It resolves who is in a conversation and online, then forwards opaque SDP and ICE payloads — media is a P2P mesh between participants.

Steam login verification

Steam Web API calls stay on the client. The server's Steam-facing job is validating OpenID assertions, which a client cannot do for itself.

Roadmap

Running it

The binary binds 0.0.0.0:8000 by default; PICASSO_BIND and PICASSO_PORT move it. GET /ping answers pong with an X-Service-Status: Healthy header — endpoints that are not built yet reply with a uniform 501 naming the roadmap step they are waiting on.