Skip to content
Nachi3D Labs

WorkMogador Chess Club

Mogador Chess Club

Live

A chess teaching site for a club in Essaouira — lessons, exercises, attendance, points.

ClientAssociation Essaouira Mogador
Year2026
Mogador Chess Club — home page hero
Mogador Chess Club — screenshot 1

Overview

The Project

The site covers the week between sessions of the club's Saturday chess workshop at Dar Souiri. Students work through a 13-step beginner tutorial, three courses (19 lessons), 40 exercises across three levels, seven opening traps with their refutations, and a game against Stockfish at three calibrated levels. Teachers get a separate area: create sessions, take the register on a phone standing in the room, award tokens. Parents hold the account; children are profiles beneath it — which is also how a child with no email address gets to use the site.

It's a static Astro site on Cloudflare Workers, with exactly one hydrated island — the board. Chessground and chess.js load only where a board exists; Stockfish is 3.6 MB and never precached, fetched on the first click of 'play'. Supabase holds accounts, sessions and attendance behind row-level security; the public agenda is baked at build time and a database trigger pokes a Cloudflare deploy hook when a teacher publishes, so a new session reaches the site in about two minutes without a server.

The club meets once a week — that constraint shaped a lot: no daily streaks, no leaderboard, no notion that logging in every day is virtuous.

Stack

Astro 7
TypeScript
Tailwind v4
Preact
Chessground
Stockfish WASM
Supabase
Cloudflare Workers
Playwright

Key features

What it does

40 exercises filterable by level and motif, every position machine-verified against chess.js before it ships
Teacher register built for one thumb: one tap per student, saved immediately, no submit button
Tokens awarded only by a teacher — spendable balance computed in Postgres, so forged client progress buys nothing
Session booking with per-session capacity enforced by a row lock, not by the browser
Four complete themes (light and dark) with 371 contrast assertions running as the first build step
Works offline as a PWA, in French and English, zero third-party requests unless a reader clicks a video

This project uses the Custom Apps service.

All work

Want something like this built for you?

Tell me what you'd like to build and we'll see if it fits.