Koday

A phone-first daily puzzle site with eight small logic and word games, a fresh set every local midnight

Three phone screens from Koday: a Crowns board, the puzzle hub, and a Thread board

About

Koday (pronounced KOH-day) is a static, phone-first daily puzzle site: a few small puzzles a day. A new set appears at the player’s local midnight, every board is generated from the date, and progress lives in the browser with no account or server.

Each game opens with a short how-to, runs a clock from the first move, and has a hint button with a five-second cooldown. Hints are always available, so every puzzle can be finished.

Games

Crowns

Place six crowns on a 6×6 board split into six coloured regions: exactly one in every row, column, and region. No two crowns may touch, not even at a corner.

  • Play: tap a square to cycle between clear, blocked, and crowned.
  • Puzzle: uniquely solvable, with regions checked for balance and connectivity.
  • Hint: removes a misplaced crown, or places the next correct one.

Thread

Draw one unbroken line through every square of a 6×6 grid, starting at 1 and passing the numbered checkpoints in order to the highest number.

  • Play: press and drag from square to square. Drag back to retrace, or tap a square on the line to rewind to it.
  • Puzzle: the route is a generated Hamiltonian path with checkpoints spread evenly along it. Any path that satisfies the checkpoints counts.
  • Hint: a solver extends the line by one correct step. If the line has wandered into a dead end, it first pulls the line back to the last point that can still be completed.

Quilt

Split a 6×6 board into rectangles that cover every square exactly once. Each rectangle holds one number, which is its area, and an outline showing whether the patch is square, wide, or tall.

  • Play: drag to draw a patch, grab an edge to resize it, or tap it to remove it.
  • Puzzle: uniquely solvable.
  • Hint: removes a wrong patch, or places the next correct one.

Braid

Four hidden words of 3, 4, 5, and 6 letters snake through a 5×5 grid of letters. Trace each one through neighbouring letters (up, down, or sideways) so that every open tile is used exactly once. Grey squares are walls.

  • Play: drag through the letters and release to keep a word. Drag back to trim a trace, or tap its head to clear it.
  • Puzzle: words come from a bundled dictionary, one per length, each laid along a self-avoiding path. Only the intended words on their intended cells are accepted, so the board can never get stuck.
  • Hint: reveals one unsolved word.

Orbit

Three nested rings of coloured segments sit in a 7×7 frame. Rotate them until the top, right, bottom, and left spokes all match the target colours around the board. The catch: turning a ring also turns its neighbours the other way, like meshed gears.

  • Play: drag around a ring to spin it, or tap to nudge it by one segment.
  • Puzzle: each ring has exactly one alignment that matches the targets. The starting scramble is chosen by breadth-first search to sit several linked moves away from solved.
  • Hint: a breadth-first search over the linked-ring states gives the first move of a shortest solution.

Tumble

Tip a 6×6 board to roll marbles into pockets. Every marble rolls at once until it hits a wall or drops into a pocket, and marbles that reach a pocket stay there.

  • Play: swipe up, down, left, or right, or use the arrow keys.
  • Puzzle: six to nine walls, with two or three marbles and the same number of pockets. A board is kept only if its shortest solution takes between 3 and 12 tips.
  • Hint: plays the first move of a shortest solution. Marbles already home can block the rest, so the game detects dead ends and offers a way back to the last position that can still be solved.

Hatch

Join the dots of a 5×5 grid into one loop that never branches or crosses itself. A number in a cell says how many of that cell’s four sides the loop uses: 0 means it avoids the cell, and 3 means it wraps around three sides. One line is drawn at the start to get you going.

  • Play: drag from dot to dot, and drag back over a line to remove it.
  • Puzzle: the loop is the border of a random connected, hole-free blob of cells. Clues are then removed one at a time for as long as the puzzle keeps exactly one solution.
  • Hint: removes a wrong line, or adds a missing one.

Ripple

A 6×6 board of four colours, with your puddle in the top-left corner. Tap a colour to repaint the puddle, and every touching square of that colour joins it. Flood the whole board in as few moves as you can.

  • Play: tap a colour, watch the puddle grow, and undo a wrong turn.
  • Puzzle: par is the move count of a greedy strategy that always picks the colour that grows the puddle most. Boards are kept only when par falls between 8 and 18.
  • Hint: plays that greedy move. Finishing shows your moves against par.

How it works

  • Seeded generation: each game hashes the date with a rules version into a seeded RNG, so everyone on the same local date gets the same boards without a backend. Bumping the rules version regenerates every puzzle.
  • Checked ahead: a script generates 60 days of every game. It verifies that Crowns, Quilt, Orbit, and Hatch have exactly one solution, and that Tumble and Ripple are solvable.
  • Share cards: finishing a puzzle renders a square result card on a canvas and hands it to the native share sheet. Where that isn’t available, it downloads the image and copies a text summary.
  • Calm motion: animations are short and CSS-only, and they switch off for reduced-motion users.

Technology Stack

  • Frontend: React, TypeScript, Vite, Tailwind CSS
  • Input: Pointer events, so drawing works with mouse, touch, or pen
  • Hosting: Cloudflare Pages, as a static client-routed app

Play

Today’s puzzles are at koday.app.