Inspiration

I train at home with my wife. No box, no coach, no whiteboard, and limited equipment. When you train in a CrossFit box, the gym gives you a clock on the wall and other people's scores to chase. At home, you get a phone timer and a notebook.

I wanted one app to make the home workout experience as good as possible: run the workout, count the rounds, show my pace, and remember every score. The idea behind it is simple: the only competition is with yourself. Give me a workout and a time to beat.

What it does

Everground is a workout timer and performance tracker for functional fitness athletes.

  • Timer for the core formats: For Time, AMRAP, EMOM, and Tabata, built to use mid-workout with sweaty hands. Tap to log a round, swipe to undo.
  • Live pacing: you see your current round against your last round while the clock runs.
  • Workout library: benchmark workouts with Rx and Scaled variants, loads, and movements from a catalog of 285 movements.
  • Automatic personal bests: every result is logged, and a PB shows the moment you finish.
  • Checkpoint history: each round and rep is stored with its timestamp, so you can see where a workout fell apart.
  • Everground Pro (through RevenueCat): cloud sync and full history across devices. Unlimited workouts run. Unlimited workouts created.

How we built it

We are a team of two. I lead the engineering. My wife is the designer, and she also ships code through pull requests. Everground is a pnpm monorepo with a shared TypeScript package that both apps use.

  • Mobile: Expo + React Native, Expo Router, Uniwind (Tailwind), Reanimated, and haptics for a polished UX.
  • Local-first data: every log is written first to SQLite on the device with Drizzle, so the timer never waits for the network. TanStack Query persists the cache, and a sync queue pushes changes to the server for Pro users.
  • Backend: Next.js + tRPC + Postgres (Drizzle), Better Auth, and Zod schemas shared between the server and the app.
  • Subscriptions: RevenueCat entitlements, with the server as the single writer of a user's plan.
  • Analytics: PostHog.

Challenges we ran into

  • Modelling a workout is hard. "21-15-9 thrusters and pull-ups, Rx 43/30 kg" hides rep schemes, gendered loads, time caps, and scaled variants. A capped For Time workout that you do not finish is scored in reps, not time. I rewrote the data model more than once before one schema covered all formats we needed, and it probably won't be the last shape.
  • Personal bests with offline sync. The phone shows a PB at once, but the server must stay authoritative when logs arrive late, get edited, or get deleted. The server reconciles the PB chain and syncs the corrections back.
  • AI output is not trusted input. The model's output passes through movement resolution and the same validation as a workout that a human writes, before it becomes a draft.
  • Distribution. My first plan was to sell to coaches. I contacted a few coaches, and none of them wanted it. Their tools are systems of record, so Everground could only sit next to them. I changed direction to self-coached, home-gym athletes, which is who I am.

Accomplishments that we're proud of

  • Great speed from the first commit in January 2026 to a public App Store and Google Play release, with over 650 commits and 85k lines of code.
  • A timer that I use myself for every workout at home.
  • A local-first app: it works fully offline, and sync is an upgrade, not a requirement.
  • Crash-resistant workouts. Other apps lose the workout if they crash mid-workout. Everground can recover it, and you're back at the workout without having to touch the app.

What we learned

  • Talk to the buyer before you build for them. A few messages to coaches saved me months of work on coach features.
  • The best niche is often your own situation. At home, the app has a real job, because it replaces the box.
  • Shipping to two stores is its own project. Each store has its own subscription setup, review rules, and prices. RevenueCat made it way easier. Both store products attach to one entitlement, so the app and the server check a single thing, and it's a single platform to update evertything from.

What's next for Everground

  • Recruit self-coached athletes.
  • Training insights: use the checkpoint history to show where you lose time and which movements hold you back.
  • Better analytics
  • Workout programs, so you don't have to think about what workout to do
  • Workout recommendations based on your goals and workout history

Built With

Share this project:

Updates

Submission history