Skip to content

Repository files navigation

Bubble Wrap

A calm, tactile bubble-wrap fidget — tap soft bubbles on a sheet, hear a gentle pop, and get a fresh sheet when you're done. Part of the Unwind mini-game series, inspired by ORelax.

Play: https://bubble-wrap.shwethaadiraj.workers.dev

How to use

Best on a phone browser (Chrome on Android works great). Open the link above — no account, install, or setup needed.

  1. Tap or click any bubble to pop it. You'll see the dome flatten and hear a soft pop.
  2. Keep popping until the sheet is empty — a fresh sheet appears automatically (layout varies a little each time).
  3. A brief toast shows this sheet's pops and your lifetime total (saved on your device).
  4. Use the speaker button (top right) to mute or unmute. Your choice is remembered.

There are no timers, scores, levels, or failure states. Just keep popping to your heart's content.


For developers

Stack

Layer Choice
Package manager pnpm
Build Vite 8 + React 19 + TypeScript
Styling Tailwind CSS 4 (UI chrome only)
Rendering Canvas 2D
Audio @foleyjs/core — synthesized pop cue

Getting started

Requires Node.js and pnpm.

git clone <repo-url>
cd bubble-wrap
pnpm install
pnpm dev

Open http://127.0.0.1:5173.

Scripts

Command Description
pnpm dev Start dev server with HMR
pnpm build Type-check and build for production
pnpm preview Serve the production build locally
pnpm lint Run Oxlint

Configuration

Set the public site URL for Open Graph, Twitter, canonical, sitemap, and robots (no trailing slash; https:// is added if omitted):

cp .env.example .env.production
# edit VITE_SITE_URL when deploying

SEO copy and OG dimensions live in src/lib/seo.ts. The Vite build injects them into index.html and writes robots.txt + sitemap.xml into dist/.

Local storage keys

Key Purpose
bubble-wrap-muted Mute preference
bubble-wrap-total-pops Lifetime pop count across sheets

Project layout

src/
  games/BubbleWrap/   # canvas engine, sheet grid, React shell
  hooks/              # pop hook, haptics stub
  lib/                # constants, audio state, Foley, pop stats
docs/
  intent/             # confirmed product intent
public/               # favicon, OG image, manifest

License

Private — personal project.

About

Pop bubbles on sheets of bubble wrap and unwind.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages