Keenwit, in development

A brain game where the server keeps the score

Keenwit is a daily brain workout: 43 short games for memory, maths, language and focus, with streaks, duels and leaderboards. Difficulty adapts to each player. The name is a working one.

Why the server keeps the score

You can play offline, so the phone can't be the judge. A finished game waits in an outbox on the phone, and nothing moves XP, a streak or a ranking until the server has checked it.

  1. One-time seedSeeded games get a seed from the server. A replayed, expired or mismatched seed is rejected.
  2. Time windowThe result may be at most 5 minutes in the future and 30 days old, so games played offline still count.
  3. Rate limitPer client.
  4. Score normalised on the serverVery high scores need extra proof.
  5. A verdictAccepted, held for checking, or rejected. Only accepted results earn XP.

Prime Check: the server holds the answers

For this game the server goes one step further. It generates the questions, keeps the answers and sends the phone only the numbers. The phone plays them offline and sends back what you tapped. The server recomputes the score from its own copy and ignores the score the phone claims. This is the only game with that check so far.

The demo: two games

The phone has two of the 43 games. In Equinox you fill a grid with planets and comets: never three alike in a line, half of each, and the = and × links must hold. Star Sectors is the Queens kind of puzzle: one star in every row, column and colour sector, and stars never touch. Both use the app's own rules, boards and scoring. Each tutorial starts with the app's steps, then moves to a bigger board for the techniques that solve it: a sector stuck in one row, a gap between two alike, a full count.

Play them in the phone

How it is built

React Native with Expo, TypeScript and Skia, on a Fastify and PostgreSQL backend with JWT auth and an OpenAPI spec.

Keenwit home screenA logic game in KeenwitDuels in KeenwitThe game catalogue