Tambola app icon — a three-by-three grid of dots
Android · Free · Offline

Tambola

A Housie caller that runs on one phone. Put it in the middle of the room, press start, and it draws 1–90 at random and reads each number out loud — rhymes and all. The board on screen settles a disputed claim in one glance.

  • React 19
  • Vite
  • Capacitor
  • Text-to-speech
  • No network calls

Play Store — closed testing (alpha), v1.0

What it does8 things

  • Calls 1–90 out loudUses the phone's own voice — the Capacitor TTS engine on Android, the Web Speech API in a browser.
  • Traditional housie rhymes“Legs eleven”, “Two little ducks” — a rhyme for every number, toggled off for plain calling.
  • Full board, colour-codedAll ninety numbers in a 9×10 grid, banded by decade, with the last call ringed.
  • Auto-call at 5, 7 or 10 secondsOr step through manually at whatever pace the room is keeping up with.
  • Undo the last callFor when someone talks over the caller and the number has to go back in the pool.
  • Prize trackerEarly Five, Top, Middle and Bottom Row, Full House — tap to mark a prize claimed.
  • Counters and a game timerCalled, remaining, elapsed time, and the previous five balls always on screen.
  • Light and dark themesBoth hand-tuned, plus an automatic mode that follows the phone.

Screens4 shots

  • Tambola ready to start — empty 1–90 board, counters at zero, start button
    ReadyBoard empty, ninety left, timer at zero.
  • Tambola mid-game — number 62 called with its rhyme, 31 of 90 marked on the board
    Calling62 — “Turn on the screw”, with the previous five balls alongside.
  • Tambola prize row with Early Five, Top Row and Middle Row marked claimed
    PrizesEarly Five, Top Row and Middle Row gone; Full House still open.
  • The same game in dark theme
    DarkThe same game after sundown.

How it's built~1.2k lines

web

  • React 19
  • Vite
  • Plain CSS
  • No state library

One screen, one hook. useGameState.js holds the pool, the draw, the undo stack and the speech queue; TambolaApp.jsx renders it.

android

  • Capacitor 8
  • TTS plugin
  • Splash + status bar
  • Signed AAB

The web build is wrapped rather than rewritten — npm run release goes from source to a signed bundle in one step.

runtime

  • Offline
  • No accounts
  • No ads
  • No SDKs

Zero network requests. The draw is a uniform pick from the remaining pool, so aeroplane mode at a family function changes nothing.

Privacyno data

  • No analytics, no crash reporting, no advertising ID.
  • No permissions beyond what Android needs to run an app.
  • Nothing leaves the phone — there is nowhere for it to go.