07
Ranked bingo you sideload

Solidus

Real-time multiplayer Bingo — ranked auto-matchmaking, private rooms, bots. Every ranked result feeds the ladder.

TypeScript exporealtimesupabasemultiplayer
click to turn
A board, filling

Numbers are drawn server-side and broadcast. The board only marks what it is told.

Live board
running Live board
Match, and the two update paths
queueranked, auto matchor private code edge functiondraws the numberauthoritativeDeno realtimebroadcast to room boardmarks what it is toldline checkELO on result DISTRIBUTION — SIDELOADED, SO NOTHING AUTO-UPDATES JS-only fixOTA bundleapplied in background installed appspick it up silently native fixsigned APKbuilt on GH runners version gatecompares versionCodeprompts to sideload which lever?

The distribution problem is drawn here too, because on a sideloaded app it is part of the architecture.

Releases run on someone else’s machines

Pushing a v* tag lints, tests, then builds a signed APK on GitHub’s own runners and publishes it as a Release. A second workflow does the same through EAS and exists as the fallback for when the Gradle path is what broke.

Bump both expo.version and expo.android.versionCode first — Android refuses to install over a build with a higher versionCode, and the in-app update gate compares the same numbers.

Tested by a robot, on a real phone

mobile-qa/ holds Maestro flows plus a multi-player simulation, so a realtime game with four participants can be exercised on-device without four humans holding four phones.

Leaderboard
running Leaderboard
Outcome

Solidus-Bingo

Chapter 08
CanVas

Realtime rooms pairing a live document with a live drawing canvas. No accounts, no passwords.

continue
07 — Solidus
scroll · drag · ← →