A social crossword platform
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
- Sep 22PrototypeMake, solve and keep streaks, all saved in the browser.
- Sep 22–24Accounts and a serverGoogle and GitHub sign-in. A puzzle made on one device plays on anyone's.
- Oct 1Ready for strangersA security fix, moderation, rate limits, accessibility and CI.
- Oct 5–7Reasons to returnA daily puzzle, real play counts, effects, backups and link previews.
- 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.