Skip to main content

PortfolioCase study

DA-01Live · BYO-ROM

Dino Arcade

Your phone, an arcade.

Install it.Bring your own game.Play offline.

A mobile-first PWA that turns a phone into a backlit arcade cabinet — and ships zero game data.

  • 0

    game files shipped

    Structural

    you supply a file you’re entitled to use

  • 0

    servers, accounts or analytics

    Structural

    static, entirely on the device

Evidence keyStructural

Dino Arcade running on a phone held landscape: a dark recessed cabinet bezel with one glowing orange “Insert Coin — Tap to start” button.Dino Arcade's home-screen icon: a glowing orange play button under a marquee bar on a dark rounded tile.

The product

Install it like an app. Bring your own game.

Add the cabinet to the home screen, load a game file you’re entitled to use, and play — offline, with the file kept on the phone.

From home screen to play
  1. Add to home screen
  2. Load your own file
  3. Stored on the device
  4. Play offline
Dino Arcade on a phone held landscape: a dark recessed cabinet bezel with one glowing orange “Insert Coin — Tap to start” button.
The cabinet, waiting for a coin
Dino Arcade's home-screen icon: a glowing orange play button under a marquee bar on a dark rounded tile.
On the home screen

The load-bearing decision

Bring your own ROM.

  • Could have
    Bundle games
    Chose
    Ship zero game data
    Because
    The player supplies a file they are legally entitled to use.
  • Could have
    Host accounts and files
    Chose
    On the device, offline
    Because
    The cabinet doesn’t need a backend: no servers, no accounts, no analytics.

How it works

Everything runs on the phone.

The five parts of the cabinet, all on the device
  1. Service workerpower: caches it for offline
  2. IndexedDBthe slot: your file stays here
  3. EmulatorJSthe board: a self-hosted core
  4. Cabinet shellmarquee, bezel, CRT shader
  5. Controlleron-screen joystick and buttons

What happened

Fine for private play. Never publishable.

  1. Dino Arcade

    A cabinet for games you already own — fine for private play.

  2. The limit

    An emulator of licensed games can never be published.

    Can’t publish

  3. An original game

    Build an original game, with wholly original IP.

  4. Slag City

    A publishable, original coin-op brawler for the browser.

    Read the Slag City case study (opens in a new tab)

Key learnings

What the cabinet taught me.

  • Constraints can create the product

    Shipping no game data shaped everything: the file picker, local storage, offline play.

  • Local-first simplifies more than infrastructure

    No backend means nothing to host, no account to sign in to, nothing to track.

  • A dead end can reveal the next build

    An emulator that can never be published is why Slag City exists.

Source material

Everything here is backed by real artifacts.

  • Readme
  • PRD

Evidence behind the Dino Arcade case study

Private working documents are listed with what they support; only public sources link out.

  1. README

    Readme

    Supports: BYO-ROM, offline-first, the EmulatorJS core, no backend

  2. Slag City Discovery PRD

    PRD5 Sep 2026

    Supports: Why the emulator can’t be published, and the original game that followed