shipping/JOG — 03:41 GMT+7/48.3 °C CPU/v 07.0 · build 2026.05.12
lat −7.7956 · lon 110.3695/ntwk · online/open for projects
back to archiveworkdont-wake-the-cat
/ project no. 02gamefrontend
shipped · live · 2026
Don't Wake The Cat

Don't Wake The Cat.

— short description

a browser game with exactly one mechanic: type a full message while a cat sleeps on your keyboard. every keystroke risks waking it. wake it and it walks across the keys, scrambles your text, and sends the wreckage. shipped solo in about a week.

Play it
browser game — live at dontwakethecat.com
~1 wk· from idea to shipped, live build5· cats, each a different difficulty curve~0kb· audio shipped — every sound is synthesized
rolesolo · design, engine, audio, copy
stacknext.js · react 19 · zustand · gsap · web audio api
2026~1 week · static export
shapeone mechanic, taken seriously
statusshipped · live · mit licensed
01

context.

a portfolio game with a single rule: don't wake the cat. the whole experience is one tension dial — a wake meter that rises with every keystroke and decays when you pause — wrapped in a relatable scene anyone with a cat recognizes instantly.

the constraint was self-imposed: about a week, one mechanic, no feature bloat. that meant the engine had to carry the fun on its own, because there was nothing else to hide behind.

02

the engine.

the game logic is a pure, framework-free state machine: keystrokes are classified, each adds a tuned amount to the wake meter, and the cat moves through deep-sleep → twitch → eye-crack → alert → triggered. decay, per-cat personality, and a first-run difficulty cap keep it learnable without a tutorial.

every run is seeded, so it's deterministic — which makes replays exact. share a run and the recipient watches the identical playback without re-simulating. all six sound cues are synthesized in the browser with the web audio api, so the game ships with essentially zero audio weight.

1mechanic — type without waking the cat. everything else serves it.
5cats with distinct noise/decay/threshold curves, from heavy sleeper to hair-trigger.
seededdeterministic runs — replays are exact playback, not re-simulation.
— approach

no audio files. no tutorial.

the wake meter is the entire game, so the tuning is the design: onboarding caps on the first run, a burst-drop reward for pausing, slower decay while the cat is alert. sound is synthesized live — a detuned-sine purr, a pitch-collapse jumpscare — and the build is a static export with no backend required to play.

Don't Wake The Cat
fig. 02
"one mechanic, taken seriously, beats five mechanics half-built."
— the scope rule for the week
— outcome

what shipped.

a complete, live game: 5 playable cats, funbox modifiers, a daily seeded challenge, achievements (incl. a konami secret), deterministic replay + compose share urls, downloadable screenshot of your wrecked message, three themes, english + indonesian, and a stats heatmap of where players tend to wake the cat.

a production-quality demonstration that attention can be settled in public at the unit of the second. still my favorite project of 2024.
— on the record
— team

built solo.

devrangga hazza mahiswaradesign · engine · audio · copy2026solo · ~1 week
— screenshots

how it's built.

a small game with a surprisingly deliberate core. notes on the engine and the sound.

gameplay
the loop.type the body before the wake meter hits 100.
state machine
states.
/ deep-sleep → twitch → eye-crack → alert → triggered.
synthesized audio
audio.
/ six cues, all web audio, ~0kb shipped.
share artifact
share.
/ your wrecked message → a screenshot worth posting.
— responsive

a keyboard game, honestly framed.

the mechanic needs a physical keyboard, so touch devices get an honest banner instead of a broken experience — the share artifacts and replays still work everywhere.

title screen
end screen
the wrecked message, in context.
cat select
Mizaan
/ up next — proving zakat reached its recipientsolana · next.js

Mizaan.

on-chain transparency for zakat: a three-signature chain from donor to recipient, live on solana.

open next case ↗