Cover image for Snohomish Radio Aero Club

Snohomish Radio Aero Club

2025 - 2026

RC Club
Community Website
Member Portal
Content Management
Responsive Design
Web Development
Firebase
View Live Demo
About the Project

What. The website and operations platform for the Snohomish Radio Aero Club, the RC flying club I belong to. It started as a redesign over the 2025 Christmas holidays and turned into the software the club runs on: a public site, a member portal, and a competition system with its own hardware.

Why. The old site was a static brochure and everything else lived in spreadsheets and on paper. Officers needed to change content without going through a webmaster, members needed their information in one place, and race days needed to stop being run off a clipboard.

How.

  • Public site — club info, posts, events, and a field map. Live conditions at the field come from the club's own Weather Underground station with a NOAA forecast as the fallback, cached in Firestore on a five-minute TTL; the field camera is embedded from Twitch. There is also a gaussian-splat 3D viewer of the flying field.
  • Member portal — a digital membership card with admin-designable templates, a member directory with per-field privacy controls, a "what I fly" aircraft registry with per-aircraft visibility, a classifieds marketplace, member-to-officer messaging, and a field-log feed whose photos auto-file into a dated gallery.
  • Events — typed events with banners, CSV import, an iCal feed members can subscribe to from Google or Apple Calendar, and a PDF engine that produces list views, annual grids, and a 28-page saddle-stitch imposition for the printed club calendar.
  • Membership — an auth-gated application with waiver capture and PDF generation, dues tiers through hosted PayPal, and primary/spouse account linking.
  • Competitions — eight formats across pylon racing, F5J and open duration, decathlon, and fun-fly. Seasons, heats, lap counting, registration with QR check-in, leaderboards with coalesced recomputes, score-sheet OCR import, OBS overlays for race-day streams, and CSV/PDF export.
  • Five installable PWAs — Contestant, Judge, Race Admin, Registration, and Field Notes, each with its own manifest and an offline outbox, because connectivity at the field is not a given.
  • The stopwatch — ESP32 firmware (Seeed XIAO ESP32S3, OLED or round TFT, BLE) with a Python flasher, talking to the race-admin app over Web Bluetooth. Laps sync and the display shows live heat status.
  • Roles — three tiers enforced in Firestore security rules, nine club offices, and a contest-director role scoped per competition type.

Officers edit club history, header images, posts, and feature flags from the admin console, and posts can be distributed to an email list.

Stack: Next.js 15 App Router, React 19, TypeScript, Firebase (Auth, Firestore, App Hosting), Tailwind + shadcn/ui, Genkit + Gemini, three.js, PlatformIO/ESP32, Web Bluetooth.

Links: sracinc.com

Built Dec 2025 – Jul 2026, across roughly 970 commits. The holiday redesign was only the first month of it.