goal diggers was designed with Claude and built with Claude Code â on a single $20/month plan that never once hit its limit. not a single line was written by hand. it runs on Cloudflare, end to end, for $0 in infra. here's the whole kit, and the reasoning behind every call.
design + dev + debugging. never hit the limit. not once.
every line generated. the human reviewed, nudged, merged.
cloudflare pages + d1 + workers, all on the free tier.
no team, no sprint board. just prompts and good taste.
small, sharp, boring-in-the-good-way choices. each one earns its place â and tells you why it's here.
the whole brutalist/playful look â palette, tilts, sticker language, the pitch animation â art-directed in conversation, no figma round-trips.
wrote, refactored and debugged the entire codebase from the terminal. reads the repo, runs the type-checker, fixes its own mistakes.
one file does server load + browser UI. no client/server boilerplate tax, so the AI writes less code â which means fewer tokens, which means a $20 plan goes a long way.
$state / $derived / $props â reactivity that reads like plain js. tiny components, almost no ceremony, compiles away to fast vanilla.
types are the guardrail. svelte-check + tsc is the authoritative gate the AI has to pass before anything is called done.
instant dev server, instant HMR. it just gets out of the way.
utility-first, configured straight in CSS. pairs with a hand-rolled token file (colors, shadows, tilts) so the brutalist style stays consistent everywhere.
one source of truth in tokens.css â change a variable, the whole app shifts. oklch colors for punchy, predictable accents.
Unbounded for the loud display, DM Sans for body, JetBrains Mono for the numbers. tabular figures so money never jiggles.
global edge deploy via adapter-cloudflare. push to git, it ships. free tier, no cold-start drama.
every server route runs at the edge, milliseconds from the user. the same platform hosts the static app and the dynamic bits.
SQLite at the edge. real relational DB, zero servers to babysit, comfortably inside the free tier for ~40 players.
typed schema + typed queries against D1. migrations are checked-in SQL. the types flow all the way to the UI.
sign in with the office google account, domain-gated. sessions live in D1 â no extra auth vendor.
every rupee stored as minor units (âš1 = 100). arithmetic stays exact â no floating-point cents quietly leaking out of the pool.
fast unit tests over the payout + fee engine, where being wrong costs real cash.
generates "the tea" â playful announcements and recommendations â asynchronously after bets land. cheap, fast, and kill-switchable if it ever gets too chatty.
the backup brain. if DeepSeek ever blinks, inference falls back to a model running on the same edge â so the tea never fully runs dry.
opinions, defended. the part where the nerds nod along.
next.js makes you spell out the server/client boundary over and over â 'use client', separate API routes, serialization glue. that's a lot of repetitive code for an AI to generate, and code is tokens. in sveltekit a single +page file does the server load and the browser UI together. less code generated â fewer tokens burned â noticeably more app per dollar. svelte also ships less js to the browser because it compiles away the framework.
pages, workers and d1 are one coherent platform on a generous free tier. an internal game for ~40 people has no business paying for infra. one deploy target, one dashboard, one bill (of $0), running on a global edge network.
design direction and development in the same loop â describe the vibe, get the UI; describe the bug, get the fix. claude code reads the repo, runs the type-checker, and won't call something done until it passes. the human stays the architect and reviewer; the typing is automated.
lean stack, lean token use. sveltekit's low-boilerplate files mean each feature is a small diff, not a sprawl of files. across the entire build the plan never once hit its limit â the whole thing was designed, written and debugged inside it.
banter and recommendations are generated after a bet lands, off the critical path â so the app never waits on a model. and it always has a backup brain.
primary: deepseek ¡ failsafe: workers ai ¡ whole layer is kill-switchable