Scouting 51 Website & Volunteer Console
Project Overview
Scouting unit 51 in Modesto: Cub Scout Pack 51, Scouts BSA Troop 51, and Venturing Crew 51. The site is for families thinking about joining, current families checking meetings and events, and the volunteer leaders who keep it up to date.
A public website with a landing page that sends visitors to the right unit. Each unit has its own page and color scheme. Everything a volunteer would normally change, like meeting nights, den info, and events, is in one plain text file. If a value is left blank, the page shows a yellow TODO so the gap is obvious.
Behind the site is a volunteer console with individual accounts and roles. Den leaders upload their own schedules, agendas, and documents. Admins manage accounts. The console is also where leaders get into the Scouting for Food app.
Every page can be switched to Spanish, Punjabi, or Hmong for families who are more comfortable reading those than English.
Launched in August 2026. I expanded it from the pack to all three units in September, added translation later that month, and added the Scouting for Food app in October.
Self-hosted on my homelab as a Docker Compose stack, with Nginx serving the site and a small Node.js API for the console. It's published through Cloudflare Tunnel at scouting-51.com and kept in a private Git repository.
Families need one place to find meeting nights, events, and how to join. The volunteers who keep that current change from year to year. So I built it so a volunteer can maintain it without me: no build step, no database for the content, and no way for a normal edit to break the layout.
I also didn't want anyone maintaining four copies of the site. English is the only version anyone edits. The other languages are generated from it.
How It Works
- When a page needs a sentence that hasn't been translated yet, it's sent to Claude once and saved to a dictionary file for that language. After that it's served from the file. On a normal day nothing gets translated.
- If someone edits an English sentence, the old translation is dropped and the new one is translated on the next visit. Corrections from native speakers are never overwritten.
- Since the translation endpoint is open to anyone visiting the site, it has three limits: per request, per visitor per minute, and a daily cap on new sentences. That keeps the cost predictable.
- Console accounts use individual logins with hashed passwords. Uploaded documents are locked down so they can't run code on the site. There's no personal contact info on the public pages on purpose.
- Each unit has its own preview card when a link is shared, generated with Playwright.
- Volunteer edits show up on the next page reload. I had to confirm Cloudflare wasn't holding onto old copies for hours.
Still open: the Punjabi and Hmong translations haven't been reviewed by native speakers yet, and a few unit details are still waiting on leaders to fill in.