Skip to main content

How it works

One calendar, every audience.

Parents track their kids’ schedules — solo, no invite required. Coaches run the team. Schools coordinate every sport. Sponsors show up on the public page. The same calendar reaches all four in the shape they need it.

What each person sees

Family-tier parent

Tracks kids, no invite needed

  • ·Sign up free, no organization required
  • ·Up to 8 personal schedules — soccer, music, chess, anything
  • ·All your kids' stuff in one calendar — and on the dashboard
  • ·Co-parent? Schedules auto-share between both of you
  • ·Private by default; share a public link with grandma when you want
  • ·Subscribes to Apple Calendar, Google Calendar, Outlook in one tap
Admin / coach

Runs the team

  • ·Creates games, practices, tournaments — one-offs or recurring
  • ·Imports a whole season from a CSV in two clicks
  • ·Picks per-team colors, font, and uploads a logo
  • ·Sees every RSVP + parent contact in one roster
  • ·Shares an invite link; parents add their kids in 2 minutes
  • ·Publishes a public team calendar page anyone can view
Rostered parent

Keeps up, RSVPs, moves on

  • ·Adds each child once, under one parent account
  • ·Taps Going / Maybe / Not going per kid, per event
  • ·Subscribes the team calendar to Apple Calendar or Google Calendar
  • ·Gets a reminder the day before every event they opted in for
  • ·Can give a 13+ kid their own login with controls only the parent sets
  • ·Never pays — parents and players are free, forever
Teen player (13+)

Runs their own day

  • ·Own login at 13+ (COPPA-gated; under-13 stays parent-managed)
  • ·RSVPs themselves, sees their team's schedule on their own phone
  • ·Team chat works normally; parent can edit / delete their messages any time, every edit audited
  • ·Per-season stats roll up to their own page — no parent screenshot needed
  • ·Per-kid privacy toggles: full name vs. First L., hide from chat identity card
  • ·Consent forms, ref payments, billing, account delete stay on the parent's side
Grandparent / fan

Follows without RSVPing

  • ·Parent (or coach) sends a one-tap read-only invite link
  • ·Sees the schedule, widget, and lock-screen Live Activity for live games
  • ·Can't change RSVPs or edit anything — by design
  • ·Same iPhone app + features the parents use, just gated to read-only
  • ·Inviter can revoke the link any time from settings
Sponsor

Gets a spotlight

  • ·Local businesses sign up from a public team page
  • ·Pick a tier ($10 to $400), check out on Metahuman Network, include a promo code
  • ·Team admin reviews and approves before anything goes live
  • ·Placement shows on the public calendar + linked from game cards
  • ·See every tier laid out on the demo team page below
  • ·Sponsor can cancel anytime from their Metahuman Network account

Try it right now

A live demo team, no signup

We keep a demo team seeded as Scappoose High School — Varsity Soccer. Browse the public calendar, then sign in with one of the demo accounts to see each perspective from the inside.

Public team page

Scappoose Varsity Soccer

Upcoming games, practice schedule, live scoreboard during games, and sponsor spotlights at every tier — Presenting in the team-color hero, Banner above the schedule, Sidebar cards in the rail, Supporters in the text grid. Exactly what a parent, sponsor, or community member would see.

Open the team page →

Demo logins

Password for all three: demo2026!

  • Morgan Lee

    Owner / athletic director

    morgan@example.com

    Sees the whole org: branding, plan + billing, invite tokens, sponsor approvals.

  • Coach Alex Kim

    Head coach

    alex@example.com

    Creates events, manages the roster, sees parent contact info. Can't touch branding or billing.

  • Sam Rivera

    Parent

    sam@example.com

    Manages their child Jordan, RSVPs to events, subscribes the team calendar.

Go to sign in →

Demo data is public — anything you change there is visible to anyone else kicking the tires. We reset it periodically.

▎ The product details

A few things we thought hard about.

Seventeen design decisions we made on purpose — the parent-side opinions, the privacy stance, the org pricing logic, the game-day pieces that actually get used.

Privacy

No edu data, ever

We store schedules, RSVPs, and names parents provide. Not grades, rosters, transcripts, health records, or anything from a school system. COPPA-compliant parental consent is captured for every child added to every team.

Calendar

Calendars that sync

Every team's schedule subscribes to Apple Calendar, Google Calendar, or Outlook in one tap. Always current — changes show up within an hour of the coach editing them.

Events

Recurrence without the spreadsheet

Create “Practice every Mon & Wed 5–6:30 PM through June 17” once. Cancel one practice or edit the whole series. Parents see the series badge on each event so they know what's going on.

Sponsors

Sponsor spotlights that pay

Local businesses pay the team directly for a placement. Admin approves before anything appears. Tier sizes range from $10 text listings to $400 league-wide banners.

Fundraisers

Per-team and program-wide fundraisers

Sell physical goods — shirts, raffle tickets, coupon booklets, money toward equipment or travel — on a public storefront page. Buyers pay with a card via Stripe; funds deposit straight into the org's bank. Fieldhouse takes 2% (capped at $2 per order), nothing else. Free Team tier and up; not on Family-tier personal schedules.

Pricing

Always free for families

Parents and players never pay. The org running the team picks Free, Club ($11.99/mo), or School ($98.99/mo). No per-player fees, no transaction fees on RSVPs — none of that.

Game day

Live game scores, parents-first

Coach taps Go live and pushes the score; parents and grandparents see it climb on their iPhone Lock Screen + Dynamic Island in real time. The team's public link also shows an animated scoreboard for anyone watching from a laptop or non-iPhone. End game (or a 2-hour auto-end) wraps it cleanly so nobody's stuck staring at a stale halftime number. Coach can hand the keys to a parent on the roster for any single game.

Coach Mode · iPad

Bench, on-field, scoreboard, stats — all on one canvas

On iPad, coaches open Coach Mode for the full game-day surface: bench rail on the far left, on-field column adjacent to the scoreboard, sport-aware stat grid on the right. Tap a player to start recording stats, tap-to-sub-in / sub-out between bench and field, hamburger expands the bench as a drawer for browsing. Cumulative playing-time per player ticks while on the field, freezes on sub-out, resumes on next sub-in — and accumulates into a Total play time row on the box-score plus a season-long minutes-played total on each kid's season dashboard. 8 sports out of the box; iPhone keeps the existing inline scoring controls untouched for solo-sideline coaches.

Family

Bring grandma along

One household-wide link gives a co-parent or guardian full manage on every kid; a separate link gives a grandma, aunt, or neighbor read-only follow access. Coaches can also invite a non-roster fan to follow a single team. Read-only means they get the schedule, widget, and Live Activity — never the RSVP or edit power.

Stats

Per-game stats → per-season stat sheet

Coaches (and event-delegated score-keepers) record per-player goals, assists, points, etc. right inside the event. Sport-aware: the entry sheet shows soccer / basketball / baseball / softball / volleyball / hockey / football / lacrosse fields based on the team's sport, no pull-down menu. Save and a box-score lands inline on every parent's event detail screen — top-2 stats per player called out, the rest in a meta line. Each kid's season dashboard then rolls all of it into per-sport totals: 'Soccer · 14 G · 6 A across 12 games.' Sports without stat tracking yet hide the card entirely.

Family

One kid, every team, one calendar

If your daughter plays soccer and basketball and lacrosse, she gets one season dashboard — all three teams rolled up into a single calendar, color-coded by team. Tap a kid on the Family tab to open it. Next up surfaces the three nearest events across every team; past events tuck behind a disclosure so the page reads as what's coming. Co-parent shares come along automatically — if Mom shared Lily with Dad, Dad sees the same unified view. iPhone's Schedule tab also gets a kid-filter pill when you have multiple kids or any kid is on multiple teams.

Family

Two parents, one shared schedule

When two parents both manage the same kid, family schedules auto-share between them. Either parent can add events, RSVP, claim snack, offer carpool. Counts as one slot toward each parent's 8-schedule cap (not two). Add a new kid to the household and we'll prompt you to share with the existing co-parents — multi-select, push notifications, no fresh invite link needed.

Players

13+ kids get their own login

Parents can invite a 13+ kid to claim their own Fieldhouse login. Parent locks in the kid's name + age and ticks parental controls (RSVP for self yes, create events on family schedules no, etc.). Defaults are RSVP-self ON and everything else OFF; flip more on as the kid earns trust. If the kid already has a Fieldhouse account at that email, a 6-digit code goes to the inbox to prove ownership before merging. Under-13 kids never sign in directly — that COPPA flow is unchanged.

Game day

Snacks + carpools, in two taps

Per-event snack volunteer (optional notes for what), and per-event carpool with offers + claims + "I need a ride" requests. Driver phone is a tap-to-call number visible only to confirmed seat-holders. New offers auto-ping open requesters; cancellations push every confirmed rider so plans don't quietly fall apart. Live on web + iPhone.

Onboarding

CSV import for whole seasons

Got the schedule as a spreadsheet from the league? Coaches drop a CSV (one row per event — date, start time, optional end / type / opponent / location / notes); parents do the same for a kid's family schedule. We parse, fuzzy-match locations against your saved list, flag duplicates against events already on the calendar, and let you fix anything that didn't quite parse before committing. Web has the inline-edit table; iPhone files-picks the CSV and commits the ready rows.

Privacy

Privacy controls built for parents

Five layers, all parent-controlled. EXIF-strip on every uploaded photo (no GPS, no camera serial). Chat identity cards explain WHY you're seeing this person and scope kid mentions to the chat's team only. Per-kid toggle to render names as “First L.” on the public team page. Per-account toggle to hide your kids entirely from identity cards. And every coach read of allergies or emergency contact is logged for the parent to review. Defaults are conservative: coach view of safety fields is OFF until the parent flips it.

Privacy

Privacy from us, too

The Fieldhouse support staff is split into two tiers and we tie our own hands the same way we tie everyone else's. Moderators can read the admin console for support triage but cannot view a single uploaded photo (kid headshot, team gallery, sponsor banner) — the file server 404s photo URLs for them. Under-13 names are redacted to “Player #<id>” labels everywhere a moderator looks. Photo reports show metadata + reason to moderators, never the image. Admin search never matches a kid’s name. There’s no “impersonate user” feature, by design. Every super-admin support action (resend verification, force-mark verified, clear push tokens) is audited and visible on the user’s profile. See /privacy for the full enumeration.

Chat

Team chat that doesn't spam

Per-team thread for parents, coaches, and opted-in admins. Co-parents auto-join. 30-second per-recipient push debounce — a coach typing four follow-ups in a row lands as one alert + three silent badge bumps, not four buzzes. 90-day rolling history. Long-press a name to see the relationship ("Coach on Varsity Soccer; you have a kid on the team"); contact info stays on the roster page.

Friends

Parent friends — for the other team in the same complex

Connect with another parent via a 6-char code or QR. Useful when your kids are on different teams playing at the same field complex on the same day — Fieldhouse surfaces a "Sam also has an event at Fairgrounds at 11am" heads-up on the dashboard so you can swing by, carpool, or just say hi. Adult-to-adult connection only: friends don't see your kids, your rosters, or your team chats. Direct 1:1 chat with each friend, 90-day rolling retention. Tap a friend to chat — sender can pull back a message at any time.

Safety

Allergies + emergency contact

Per-kid headshot photo, allergies, and emergency contact (name + phone + email — tappable on iPhone). Allergies surface as an inline banner above the snack-volunteer card so parents see them before claiming. Emergency contact stays parent-only by default; one toggle grants coaches read access (never edit). Every coach read is logged on the kid's profile.

Roster

Coach-locked roster, parent edit window

Once the coach saves a kid's jersey number or position, the field is coach-locked. Parent files a request from the kid's profile (with an optional note); the coach gets a push and can approve or deny. Approval gives the parent 24 hours to edit with a countdown banner; past that the lock returns. No more silent tug-of-war between coach and parent on roster details.

Showing 6 of 17

For the fellow humans who speak nerd 🤓

The tech under the hood

Everything you’d want to know if you build this stuff for a living. Tap to expand. Skip if you just want the schedule to work.

Stack

Next.js 16 (App Router) + React 19 on the front, Node on the server. Postgres for everything that lasts. Drizzle ORM for typed queries (no untyped SQL strings, no ORM-induced N+1s).

Auth

Auth.js (NextAuth v5) for sessions on the web; HS256 JWT bearers for iOS. Passwords are bcrypted. Sign in with Apple isn't required — we don't carry third-party social logins, so Apple's exemption applies.

iPhone app

Native SwiftUI, iOS 17+. Same REST API as the web. ActivityKit + WidgetKit for the lock-screen Live Activity and home-screen widget. Universal Links via AASA. App Group entitlement so the widget reads the offline cache the main app writes.

Push

APNs HTTP/2 with ES256 JWT (separate key from the web's auth). Two push types: regular alert + liveactivity (different topic suffix). Per-team mute + master opt-out, both server-side enforced. Devices that 410 get marked unregistered automatically.

Subscriptions (org plans)

Cross-platform billing: Apple StoreKit 2 on iPhone (auto-renewable subs in one Subscription Group) — Metahuman Network license keys on web. Each org records where billing lives; the wrong-side cron skips it cleanly. App Store Server Notifications V2 webhook handles renewals + refunds + grace period. Full JWS chain validation against Apple's root CAs (G2/G3/Inc) using Apple's official server library.

Tip jar

iPhone uses StoreKit 2 consumables (one-time tips, no subscription, processed by Apple). Web links straight to a Metahuman Network tip-jar page.

Family-tier privacy

Children never sign in directly. Parents add child profiles + grant COPPA-compliant consent that's versioned + IP/UA-stamped. We don't store grades, transcripts, health records, or anything from a school system. Tracking is off (declared in PrivacyInfo.xcprivacy).

Self-hosting

Open-source where it matters because vendor-locks can be dicey. Runs on Ubuntu 24.04 LTS (Node 24 + nginx + Postgres + Let's Encrypt).

Live game scores

Coach pushes a score → server fans out an APNs Live Activity update to every active subscription. Stale-after-5min keeps stale numbers from lingering. End game sends event:end with a dismissalDate so iOS auto-cleans the lock screen. Auto-debounced (5s) so rapid tapping doesn't spam. 2-hour auto-end if the coach forgets.

Carpool + snack

Per-event tables with constraint-checked seat capacity. Push fan-outs: seat claimed → driver, offer cancelled → riders, new offer ↔ open request auto-match. Driver phone gated server-side — masked unless the caller is the driver or a confirmed seat-holder.

Open-source dependencies

The full list of OSS packages we use, with their licenses + project links, lives at /open-source. Pull requests welcome upstream.

See an architectural choice you’d push back on, or something missing? Email hello@thefieldhouse.app.

iPhone companion app · TestFlight beta

Want the iPhone app?

The native iPhone app — schedule, push notifications, the home-screen widget, and lock-screen Live Activities for live game scores — is currently in TestFlight while we collect real-world sideline + game-day usage. Tap the link below from your iPhone to install.

Join the iPhone TestFlight ↗Opens TestFlight on iPhone, or shows install steps on the web.

Start the season.

Family tier is free, forever, no credit card. Coaches and schools get a free starter tier too — upgrade when you need sponsors, multi-team management, or invite codes.