project · active

hueristic

Overview

A daily code-breaking logic puzzle: a fresh hidden color code each day, a fixed number of guesses, and feedback after every try telling you how close you are. Solve it, keep your streak, and share a spoiler-free result grid. One puzzle a day, the same for everyone — the hook is the daily ritual and the streak.

How it works

The whole thing runs on a single Cloudflare Worker that serves both the JSON API and the static front end. The front end is a small vanilla-TypeScript SPA (built with Vite, no framework): a mobile-first board with keyboard input, undo, local persistence of your day’s progress and stats, and a PWA shell with offline support.

The daily puzzles live in KV, precomputed ahead of time so the same code is served to every player. The hidden code never reaches the browser — guesses are scored server-side and the API returns only the closeness feedback, so the answer can’t be sniffed from network traffic. Anonymous aggregate “how everyone did today” stats are tracked in a Durable Object. The daily game lives at /classic, with an endless practice variant and additional modes routed off a small hub at the root.

Stack: TypeScript · Vite · Cloudflare Workers · KV · Durable Objects · Workers Builds (CI/CD).

The running log below is the week-by-week build history.

2026-07-20

hueristic — week of 2026-07-13

One thread this week: extending the promo video tooling to stitch multiple playthroughs into themed montages.

2026-07-13

hueristic — week of 2026-06-29

Retention and celebration features land alongside a new gameplay-to-promo video pipeline.

2026-06-29

hueristic — week of 2026-06-29

A short week of the unglamorous groundwork that has to land before turning on ads.

2026-06-24

hueristic — week of 2026-06-22

A landing hub, anonymous world stats, a beginner mode, and a real SEO and link-preview pass.

2026-06-21

hueristic — week of 2026-06-15

From empty repo to a playable, shippable daily puzzle: game engine, Worker backend, PWA front end, and a skinnable theme layer.