QueueTip.io
> CLASSIFICATION: SOCIAL RADIO PLATFORM
> STATUS: ONLINE
>_ SYSTEM_STATUS: ONLINE
>_ IDENTIFIER: QUEUETIP_IO
>_ CLASSIFICATION: SOCIAL_RADIO_PLATFORM
[INIT_LOGGING]
TIMESTAMP: 2019-01-01
USER_CLEARANCE: ROOT
ACTION: EXPORT_MISSION_REPORT
>_ OVERVIEW
[SYS_MSG] INITIATING PRODUCT RECONNAISSANCE...
[STATUS] LIVE AT QUEUETIP.IO
QueueTip is social radio — an independent product designed, built, and operated end to end. Every user has exactly one queue, hard-capped at 30 tracks. Friends drop tracks into each other's queues, with an optional message attached — immediacy through arbitrary limitation, the same design instinct as original Twitter. Queues update in real time for everyone watching: tune into a friend's queue and you hear what they hear, as they hear it. Playback runs in each listener's own browser via YouTube IFrame embeds — no audio hosting, no licensing quagmire, just the network effect of shared taste.
[EXTERNAL_LINK] TUNE_IN: queuetip.io
>_ ARCHITECTURE
[MODULE_LOAD] GO_1.23 // gRPC // GQLGEN // POSTGRES
[STATUS] MICROSERVICES ONLINE...
- GO_MICROSERVICES: Event-driven Go monorepo. A
queuegRPC service owns queues, tracks, and plays; ausergRPC service owns users, bcrypt auth, friendships, and public handles — each backed by its own Postgres database (Bun ORM, idempotent migrations). - GRAPHQL_GATEWAY: A gqlgen gateway exposes queries, mutations, and websocket subscriptions to the frontend, talking gRPC to the services behind it. HS256 JWT auth, strict resolver-level ACL — friends write to your queue, only you press play.
- EVENT_STREAMING: Queue mutations publish to Redpanda (Kafka-API, franz-go) and fan out to every watching client — a track landing in your queue appears live, no refresh. Publishing discipline enforced at the repository layer: only fully-reloaded queue state ever hits the wire.
- CANONICAL_TRACK_CATALOG: One track model keyed on ISRC, enriched across YouTube, Spotify, and Apple Music. Provider fan-out search with ISRC dedupe, paste-a-link resolution, quota-aware caching, and scheduled sweep/janitor jobs that keep metadata fresh.
>_ REALTIME_FRONTEND
[MODULE_LOAD] REACT_19 // TYPESCRIPT // REDUX_SAGA // VITE
[STATUS] STREAMING TO BROWSER...
- SAGA_EVENT_CHANNELS: GraphQL websocket subscriptions wrapped in redux-saga
eventChannels — one channel per tuned-in queue — feeding store updates as plays happen. - PERSISTENT_PLAYER: A single YouTube player owned by the player saga, living outside the router. Playback follows the tuned-in queue across navigation; guests listen along via a local cursor without ever mutating the owner's queue state.
- SOCIAL_GRAPH: Handle-based friend search, directed friendship rows with auto-accept on reverse-pending, public/private queue visibility — and a rotating carousel of friend queues to tune into.
>_ PLATFORM_&_OPS
[MODULE_LOAD] RAILWAY // CADDY // DOCKER // PLAYWRIGHT
[STATUS] INFRASTRUCTURE DECLARED...
- INFRASTRUCTURE_AS_CODE: Seven Railway resources — Postgres, Redpanda, migrate job, queue, user, graphql, web — declared in Railway's native TypeScript IaC. Separate production and dev environments driven from one config; Caddy edge gateway as the single public entrypoint.
- OBSERVABILITY: A dedicated dashboard service surfaces the job ledger (enrichment sweeps, metadata janitor, WEFUNK radio sync) over authenticated HTTP.
- QUALITY_GATES: Vendored Go deps for hermetic builds, sqlmock/httptest unit tests, dockerised integration suites, and a full Playwright e2e stack gating every change.
>_ VISUAL_RECORD
[SYS_MSG] EXHIBITS RETRIEVED FROM LIVE PRODUCTION ENVIRONMENT...



[SYS_MSG] REPORT COMPLETE.
[SYS_MSG] TERMINAL DISCONNECTING...
CONNECTION TERMINATED.