Gentoo is the app our robotics team runs its season on. It is one codebase — Expo Router, React Native and NativeWind over Supabase — shipping to iPhone and iPad through the App Store, to Android, and to the web, with a sidebar layout on a desktop and bottom tabs on a phone. Projects hold assignable tasks with status, assignee, due date, priority and blockers, reorderable and with a trash you can restore from; the parts inventory carries categories, photos, check-out tracking, low-stock flags and printable labels.
The competition half is the reason it exists. Pit scouting scores every team's capabilities against weighted criteria, match scouting hands out assignments from an imported schedule, and "talkie" requests let anyone in the stands ask the pit crew to go find something out. The picklist turns the scouting into a tiered alliance-selection board with a head-to-head compare view for settling a pair during the pick meeting, and official event and team stats come in from FTCScout. On event day a dashboard shows the next-match countdown, your pit shifts and the open talkie requests, with the pit staffed by an auto-generated rotation that spreads the shifts fairly. The oddest feature is the truest to the pit: photograph the wiring bin and a vision model counts the cables in the picture.
It is built to be usable before it is configured. With no backend attached the app runs a complete demo workspace from seeded fixtures rather than showing a dead screen, and a web bundle exported without its environment launches and says the backend is not configured instead of crashing — a guard script fails the export rather than shipping a bundle that would. Online, one app-level Supabase realtime channel maps each table to the queries it invalidates, and mutations apply optimistically with snapshot and rollback, so two phones in the same pit stay in step.
Accounts sign in with Apple, Google, or email, and the first account becomes admin and approves the rest — a team app has no public signup. The detail that took the most care is deletion: the App Store wants Apple tokens revoked rather than orphaned when an account is deleted, so one edge function banks the Apple refresh token at sign-in and another spends it on the way out, with deletion never depending on the revocation succeeding. Push notifications ride Expo's service — talkie pings, task assignments, scouting submissions — and can be mirrored into Discord.
Screens






