How asbedb/scapedle works
Scapedle is a daily OSRS-themed word-guessing game. The Sydney-date server load selects the shared daily item, builds a length-indexed dictionary, and provides today/yesterday metadata; the page initializes client game data, then players start, enter and validate guesses, use hints or give up, and see/share the outcome. Browser storage preserves progress between visits. The README documents static-first daily publishing and deterministic selection; deployment details are represented only as a documented capability, since sampled runtime code does not show that publishing flow.
Main entry points: GameBoard.svelte Game board · +page.svelte Game page · +page.server.ts Daily load · gameState.svelte.ts Game state
Components 26
Daily puzzle
- Daily load
src/routes/+page.server.ts - OSRS wordlist
src/lib/server/wordList.ts - Puzzle data
src/lib/stores/gameState.svelte.ts
Gameplay
- Game state
src/lib/stores/gameState.svelte.ts - Game board
src/lib/components/GameBoard.svelte - Guess rows
src/lib/components/GameRows.svelte - Keyboard input
src/lib/components/Keyboard.svelte - Hint control
src/lib/components/HintButton.svelte - Give up
src/lib/components/GiveUpButton.svelte - Game result
src/lib/components/GameOverModal.svelte - Invalid guess
src/lib/components/InvalidWordAlert.svelte - Start overlay
src/lib/components/StartOverlay.svelte
Game interface
- Game page
src/routes/+page.svelte - Daily timer
src/lib/components/Timer.svelte - Emoji hints
src/lib/components/EmojiHint.svelte - Puzzle number
src/lib/components/WordNumber.svelte - Dictionary count
src/lib/components/WordCount.svelte - Yesterday's word
src/lib/components/YesterdaysWord.svelte - Site title
src/lib/components/SiteTitle.svelte
Community information
- About embed
src/lib/components/AboutEmbed.svelte - Discord link
src/lib/components/DiscordEmbed.svelte - GitHub link
src/lib/components/GitHubEmbed.svelte
Other components
- Player
- Browser storage
- Share target
- Static hosting
Connections 28
- Daily load → OSRS wordlist: reads items
- Daily load → Puzzle data: returns puzzle data
- Game page → Daily load: receives load data
- Game page → Game state: initializes data
- Game page → Game board: renders game
- Game page → Daily timer: renders
- Game page → Emoji hints: renders
- Game page → Puzzle number: renders
- Game page → Dictionary count: renders
- Game page → Yesterday's word: renders
- Game page → Site title: renders
- Game page → About embed: renders
- Game page → Discord link: renders
- Game page → GitHub link: renders
- Player → Game board: plays
- Game board → Game state: updates guesses
- Game board → Keyboard input: handles input
- Keyboard input → Game board: dispatches keys
- Game board → Game state: validates against dictionary
- Game board → Guess rows: renders guesses
- Game board → Hint control: renders control
- Game board → Give up: renders control
- Game board → Start overlay: renders overlay
- Game board → Invalid guess: renders alert
- Game board → Game result: renders outcome
- Game board → Browser storage: loads and saves progress
- Game result → Share target: shares results
- Player → Static hosting: plays published game