An unlimited-play, Wordle-style word guessing game. Guess a five-letter word in six attempts; play again immediately, however many times you like.
Play it at https://pnut.fans/poodl/.
Poodl is a single-page static site with no backend, no accounts and no telemetry. It runs entirely in the browser and is published to GitHub Pages.
Status: playable. Five modes — daily, random, endless, practice, and a custom game
somebody sets for you with a link — hard mode, statistics that persist (daily's own
streak among them), settings for theme, contrast, motion and keyboard handling, and
results you can share as squares that give nothing away. Every rule comes from the
specifications in docs/specs/.
just initialize
just devjust initialize creates both lockfiles, installs both toolchains, downloads the browser
the story gate needs, normalises formatting and installs the pre-commit hook. It never
stages, commits, tags or pushes.
just fix # the only command that modifies files
just check # every gate, read-only, proving the worktree is unchangedjust --list prints every recipe. Each one is described in
Commands.
src/lib/domain/ Pure behaviour: scoring, keyboard knowledge
src/lib/ports/ Every side effect, each with an in-memory fake
src/lib/components/ Svelte 5 components, runes only
src/routes/ Prerendered routes
tests/ Vitest suites, never colocated
stories/ Svelte CSF stories, one per component
docs/ The handbook
docs/specs/ Allium specifications — the source of truth for behaviour
Start at the documentation map.
- Purpose and scope — what Poodl is, and is not
- Make your first change — clone to green gate
- Architecture — how a site with no server fits together
- Specifications — why behaviour is written down first
Engineering conventions and the agent working agreement are in AGENTS.md.
Behaviour is decided in docs/specs/, not in code. When the two disagree, the
specification is right and the code is a defect. Changing what the game does means
changing a specification first.
Statistics and settings live in one browser on one device and are never uploaded. Clearing browser data destroys them. See Security model.