← All work

Full-stack · Louisiana Chess Association

LCA Website Platform

Outcome: The Louisiana Chess Association's full platform, built from scratch: tournaments, registration and payments, clubs, membership and news in one place.

Role
Web manager, then designer & developer
Timeline
June 2025 – present
Tools
React · Cloudflare
Links
louisianachess.org · Code
louisianachess.org Visit site ↗
Louisiana Chess Association homepage with the headline Play. Compete. Connect. over a tournament photo, and columns for tournaments, Facebook and clubs
Louisiana Chess Association homepage on a phone

Homepage: photo slideshow hero over live columns of tournaments, Facebook posts and clubs.

HOW IT'S BUILT

  1. 01React + TypeScript UI
  2. 02Pages Functions API
  3. 03D1 database
  4. 04Supabase · Stripe · Resend
  5. 05Cloudflare deploy

The problem

I took over the association's website in June 2025. It was a Google Sites page, with tournament registration handled on a separate third-party site.

The data

Designed for about 600 member profiles, 50 people online at once, and tournaments every couple of months with up to 100 players. The database holds members, clubs, tournaments, registrations, payments and games, built up across more than 20 migrations.

Approach

React 19, TypeScript, Vite, Tailwind and shadcn/ui on the front end; Cloudflare Pages Functions and a D1 (SQLite) database behind it; Supabase for sign-in, Stripe for memberships and entry fees, and Resend for email. Features include tournament registration and management with a FIDE Dutch pairing engine, a club directory with a map, a news feed from the association's Facebook page, admin tools for group email and site announcements, and club logo uploads stored in R2.

Validation

Before launch I audited the codebase and fixed what turned up, including a Stripe webhook without signature verification and an endpoint that exposed contact-form messages. The backend now has 50 integration and 62 unit tests that run in CI on every pull request touching it.

Result

Launched at louisianachess.org in July 2026, replacing the old Google Sites page.