← Back to the portfolio
How it works

The Daily Corpse

A trail of murder mysteries where the answer is the key: each stage is encrypted, and only the right answer can unlock the next one.

There's no server checking your answers and nowhere to look up the solution. The case files are scrambled with the same encryption banks use, and your answer is turned into the key. Get it right and the next stage opens. Get it wrong and it stays gibberish.

Open the case map

The big picture

Writing
Case fileStory, suspects, clues, puzzles, answers
Case guideThe fair-play rules every case follows
Art
Portraits & scenesAI image model (FLUX)
Floor plansAI-painted, then fixed by hand
Build · my laptop
SealStages 2, 3 and the solution encrypted
CheckRight answers open, wrong ones don't
GitHub Pages
The websiteStatic files, served free
Your browser
Trail of casesSolve one to open the next
UnlockingYour answer becomes the key

Everything to the left of GitHub happens once, when a case is made. Everything to the right happens in your browser while you play.

Step by step

  1. A case is written Writing

    Each case lives in its own file: the story, three to five suspects, the evidence, a puzzle for every stage, and the answers. I direct and Claude writes, following a case guide I built up: play fair, give one clean chain of reasoning, and never make the answer a guess.

  2. The art is generated Art

    A script sends a list of prompts to a free AI image model (FLUX) for suspect portraits and scene pictures. Floor plans start as a line drawing of the case, which another AI model paints. I then fix any doorways or rooms it invented.

  3. The stages are sealed Laptop

    A build script leaves stage 1 readable and locks stage 2, stage 3 and the solution with AES-256 encryption. Each stage's key is made from the answer to the stage before it, mixed with the case name.

  4. A checker plays the case Laptop

    Another script makes sure every right answer opens its lock, wrong answers don't, every picture exists, and no spoilers leak into the readable parts.

  5. Publish GitHub Pages

    The case is added to the trail and pushed to GitHub, which hosts it as a free static website. There's no server logic at all.

  6. Pick up the next case on the trail Browser

    The front page is a winding path of cases. Each one opens once you've solved the one before it.

  7. Investigate Browser

    Read statements, study the floor plan, mark suspects, take notes, and solve a hands-on puzzle: a jigsaw, Morse code, spot the difference, a combination lock or a code hidden in sheet music. Progress saves in your browser, so you can come back later.

  8. Your answer tries the lock Browser

    Your answer (a time, two names, or a set of choices) is turned into a key, and the browser tries to decrypt the next stage with it. If it opens, you were right. If not, you get a strike.

  9. Case closed Browser

    The solution unlocks. You earn up to three stars (one per stage solved with no hints or wrong guesses) and can share a Wordle-style result.

The pieces

AES-256 encryption

The standard strong encryption, done in your browser with its built-in Web Crypto tools.

Stops anyone skipping ahead by reading the page's code. There's nothing to peek at.

Answer-as-key

The key is a fingerprint (SHA-256 hash) of the case name plus your answer.

Checks answers without a server and without storing the answer anywhere.

Claude

Writes the cases and the code, working to a written case guide.

A rulebook keeps every case fair and consistent, whoever writes it.

FLUX image models

Portraits and scenes from a free image service. Floor plans painted on Cloudflare Workers AI.

Illustrated cases without an illustrator.

Build and check scripts

Node scripts that seal each case and then test it end to end.

One wrong character in an answer would make a case unsolvable, so every case is tested before it ships.

GitHub Pages

Free hosting for static files.

Because of the encryption, the game needs no backend at all.

Trade-offs I chose