Skip to content

Repository files navigation

Competitive Crafting

Nine slots. A ticking clock. Race your friends to craft it first.

A multiplayer Minecraft crafting race in the browser. Each round names an item. Everyone gets the same ingredients and the same 3×3 grid, and the first player to lay out the recipe and collect the output takes the round. Ten rounds, one podium.

No account and no install. Open the link, pick a name and a mob face, and create a room. Friends join from a link, a room code, or a QR code. There's also solo practice if you want to warm up first.

A round in progress: the crafting grid, ingredient palette, timer and live standings

How a match works

  1. Create a room and share the invite. Rooms hold 2–12 players.
  2. Each round names a target item, from buckets and bows to beacons. You have 30 seconds, plus a little extra on recipes that need many placements.
  3. Build the recipe on the 3×3 grid from the ingredient palette, then collect the output. The first finisher wins the round.
  4. Don't know it? Forfeit the round and see the answer when everyone's done.
  5. After ten rounds, the final podium crowns the best crafter.

Modes

  • Classic: ten rounds, a 30-second base timer, first to finish scores.
  • Blitz: the same race with a 15-second base timer.
  • All Finish: everyone who completes the recipe scores, not just the fastest.
  • Creative inventory: swap the small palette for a searchable full inventory, like in-game creative mode. Harder, and every placement buys you two extra seconds.

What makes it feel like Minecraft

  • Hundreds of real Java Edition recipes, picked so that you don't get the same family of item round after round, with a full-grid finale.
  • Controls that match the game: hold and drag to paint the grid, right-drag to erase, drag items straight in, or craft from the keyboard.
  • A moving Minecraft title-screen panorama behind the menus, native 256×256 item renders, and the real click, pickup and experience-orb sounds.
  • Twelve player faces to pick from, including a Herobrine homage.
  • A curated 22-track Spotify jukebox for the lobby.
  • Built for phones too, with a touch-first crafting table and inventory that keeps out of the keyboard's way.

The Competitive Crafting title screen over a Minecraft panorama

How it's built

  • Frontend: React 19, TypeScript and Vite.
  • Multiplayer: Cloudflare Workers, with one Durable Object per room holding authoritative game state over WebSockets.
  • Tests: Vitest for rules and the worker, and a Playwright matrix across Chromium, mobile Chromium, WebKit and Firefox. The latest run passes 136 cases with 24 intentional skips; see acceptance status.

Rooms expire after 30 idle minutes or six hours total. When the host leaves, ownership passes to someone else, and a match ends if only one player is left.

Develop

npm ci
npm run sync:data
npm run sync:playlist
npm run build
npm run dev:worker
# In another terminal:
npm run dev

Open http://localhost:5173. Vite proxies /api and WebSocket requests to the local Cloudflare runtime on port 8787.

Game artwork and font downloads are deliberately not committed; sync:data restores them from pinned sources. Generated recipe metadata is committed so rules tests can run without network access. Source downloads are cached under the ignored build/cache/.

Verify and inspect

npm run format
npm run check
npm run test:worker
npm run test:runtime
npm run test:e2e
npm run test:load -- --local
node scripts/capture-progress.mjs

The screenshot script writes current UI captures to the ignored ui-progress/ directory, along with any browser console errors. Development-only animation fixtures live at /__lab. See testing and debugging for the browser matrix, production and offline verification, and a bounded local multiplayer smoke test.

Deploy

The game is served from competitive-crafting.eoghancollins.com by Cloudflare Workers.

wrangler login
npm run deploy

Authenticate to the account that manages the domain, and inspect existing routes before deploying. Never commit tokens, .dev.vars, or local credentials. See deployment and recovery for release gates, live checks and rollback.

Further reading

Rights and attribution

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.

See third-party notices and reuse decisions. Minecraft artwork and music retain their original ownership. Git authorship of this project does not imply ownership of third-party materials. Spotify playback depends on the provider and browser, and continuous playback isn't guaranteed.

About

Race your friends to craft Minecraft recipes against the clock. Multiplayer in the browser, no account needed.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages