roots-athletics.com
CompleteBaseball Training Website & Coaching Platform
Marketing site and operating system for Roots Athletics — youth baseball performance training in Huntsville, AL, led by former LA Dodgers draft pick Ben Harris. Camps with online enrollment and card payments, a coach dashboard, attendance-to-invoice billing, and a built-in blog CMS.
About
The web home for Roots Athletics, a youth baseball performance training business in Huntsville & Madison, Alabama. The public site’s job is simple: convince a parent in thirty seconds that Coach Ben Harris — Under Armour All-American, UGA closer, LA Dodgers 8th-round draft pick — is the right person to develop their player, then funnel them to one low-friction action: book an evaluation.
It launched as a static brochure site and grew into the business’s back office. The coach now runs camps, takes payments, tracks attendance, bills families, and publishes articles from a single dashboard — no developer in the loop for day-to-day operations.
The project also survived a full mid-build rebrand (originally launched under the name 1921 Performance) — new name, new logo, new palette, new tagline — swapped sitewide in a single pass with 301s preserving every old URL.
What the platform does
- Camps with online enrollment — the coach creates a camp (date, sessions, age groups, capacity, price, location) and it is on the public calendar within a minute. Families pick a session, age bands are enforced live, full sessions lock themselves, and paid camps go straight to Stripe Checkout.
- Coach dashboard — roster with check-in, waiver and payment status, a drag-and-drop lesson schedule, a client list, inquiry tracking, and an activity log of every change.
- Attendance-to-invoice billing — tap a name on the schedule to mark attendance; pick a week or month and the system drafts one invoice per family at the configured rates, sends it through Stripe, and marks it paid when the card clears.
- Waiver sync — signed waivers pulled from the e-signature provider and matched to campers automatically, with a daily digest that only emails when something needs attention.
- Blog CMS — the coach writes and publishes posts from the dashboard with a constrained editor and live preview; pages are server-rendered so a publish is live in under a minute.
- Parent portal — self-service account management with a privacy-first data deletion flow.
Technical Highlights
- Astro + Tailwind CSS 4, static where it can be and server-rendered only where content must be live (camps, blog) via the Netlify adapter
- Supabase Postgres with row-level security as the trust boundary — the browser talks to the database directly with an anonymous key that can see only what policy allows
- Stripe Checkout, Invoicing and webhooks — hosted card pages so no card data touches the site; signature-verified webhooks keep payment state honest; refunds from the dashboard
- Serverless functions for every trust-sensitive step: signup ingest with server-side capacity and age-band checks, Stripe actions, e-signature API proxying, scheduled digests
- Edge-cached SSR — public camp pages cache for 60 seconds at the CDN and revalidate in the background, so a busy signup day never hits the database per visitor
- Defensive tests before every release — function-level tests against the real database plus browser end-to-end runs of the dashboard, including phone-width layout checks
- Local SEO foundation — JSON-LD structured data (business, articles), canonical URLs, sitemaps, and a dynamic robots.txt
- Hero background video — game footage compressed to 1.7 MB with ffmpeg, poster frame, layered scrim, graceful static fallback on phones
Design
- Dodger blue (#005A9C) / black / white — a nod to the coach’s pro organization
- Barlow Condensed + Inter — condensed athletic display type over a clean reading face
- Full-bleed action-footage hero with the credential band directly above the fold
- Phone-first dashboard — camp-day roster becomes thumb-sized cards with one-tap check-in, waiver and photo-release toggles
Hosting & Domain
- Netlify hosting: static assets, SSR function, serverless functions, scheduled jobs
- Cloudflare DNS at the registrar, Let’s Encrypt SSL covering apex + www
- Nightly content backups to a dedicated branch in the repository