I built this because I like making games, but I always get bogged down in feature creep or making the art look good. I constrained myself with this project to a simple game with little to no bells and whistles and an emphasis on shipping.
The core puzzle itself isn't my original idea. It's a classic puzzle you can find on other sites, and it has several variations. My goal was to turn it into a daily puzzle with some nice features on top like stats and a share mechanic.
The Algorithm: I generate boards offline by building a random spanning tree and then scrambling it. Then I check if the resulting scrambled board has exactly one solution solution and can be solved without needing to guess-and-backtrack. If so, it goes into the puzzle bank, otherwise I reject it.
I compute a difficulty score for each kept board using the heuristic of "longest chain of deductions" needed to solve it. I originally tried estimating difficulty from how many turns the scramble took, but that turned out not to capture difficulty very well at all.
The daily puzzles ramp up in difficulty throughout the week, with Monday being the easiest and Sunday the hardest.
The Stack: It's a static Vite/TypeScript site on Cloudflare Pages and sends basic usage metrics to PostHog.
I chose to keep all the player data in the browser's local storage because keeping the server stateless helped the whole project stay lightweight.
I'm a more of a backend dev and sometimes data scientist at my day job, so the web stack was new to me. This was my first time using Cloudflare directly, and I didn't even know about PostHog before.
Claude implemented almost all the code, but if feel like I still learned conceptually how these components work and fit together.
Play: There are no sign-ups, accounts, or downloads. Free to play. No ads. Just a simple web game.
My most recent addition is a stats page with a couple bar charts and a GitHub-style activity tracker.
The archive feature is "coming soon". It's an example of a feature I punted on so I can ship sooner. I'm measuring demand before implementing it by allowing users to enter their email and saying it'll be $5. TBD if I actually charge for it.
Feel free to play and share it with those in your life who enjoy daily puzzle games!
Would love to get any feedback.