A social crossword platform

crosswording.orgDesigner and full-stack developer, solo (in progress)

See the latest on crosswording.org (opens in a new tab)

Where it stands

Writing a crossword is usually left to people submitting to editors. crosswording.org is for everyone else: make a mini for a friend or a group chat, give it a look of its own, and send a link.

  • Live, with accounts, a public feed, profiles and a daily puzzle
  • 40 commits in three weeks, from a browser-only prototype to a moderated, backed-up product
  • Five board styles live, up from three
  • Autofill over a 135,000-word bank, running off the main thread
  • Plays counted on the server, so rankings are no longer placeholders
  • 76 automated tests, including the real database rules run in CI

How it evolved

  1. Sep 22PrototypeMake, solve and keep streaks, all saved in the browser.
  2. Sep 22–24Accounts and a serverGoogle and GitHub sign-in. A puzzle made on one device plays on anyone's.
  3. Oct 1Ready for strangersA security fix, moderation, rate limits, accessibility and CI.
  4. Oct 5–7Reasons to returnA daily puzzle, real play counts, effects, backups and link previews.
  5. Oct 8–13FeelPhone-first create flow, synced drafts, two new board styles.

Stack and backend

Front end

Next.js 15 and React 19, TypeScript, Tailwind 4, Motion for animation.

Data and auth

Supabase: Postgres, Google and GitHub sign-in, and storage for avatars. Seven SQL files hold the schema and every rule that matters.

Hosting

Vercel, with a daily cron that keeps the free database from pausing.

Testing and CI

Vitest, with the real SQL run against PGlite (Postgres in the test process) to check permissions and moderation. GitHub Actions runs typecheck, lint, tests and build on every push, and backs up the database nightly.

A few decisions shaped it:

  • The database has the final word. The app validates for readable errors, but grid shape, ownership and rate limits are enforced in Postgres too, since a signed-in user can reach it directly.
  • Fail soft. If the database is down or accounts are switched off, the site still runs on the browser's own puzzles.
  • Store references, not media. GIFs and songs are saved as IDs and loaded from GIPHY and Spotify, so they cost no storage.
  • OAuth only, so there are no passwords, reset emails or email provider to run.

What's next

Putting it in front of people who have never written a crossword, and watching where they stall. Still iterating significantly every week. The newest version is always at crosswording.org.