CASE STUDY · WEB APP · SAAS · FITNESS COACHING
Vestra Pro
“One place for a fitness coach to run their entire business.”
A complete coaching platform for personal trainers: client management, workout and meal plans, progress tracking, messaging, and Stripe payments in one place.
- React 18 with TypeScript and Vite
- Tailwind CSS and shadcn/ui (Radix)
- TanStack Query, Framer Motion, Recharts, dnd-kit
- Node.js and Express backend
- PostgreSQL on Neon (serverless)
- Drizzle ORM
- Stripe Checkout, Connect, and Webhooks
- SendGrid for transactional email
- Google Cloud Storage and Cloudflare R2 for files
- Railway hosting with Docker and GitHub auto-deploy
- Sentry for error tracking
The brief
Coaches were juggling spreadsheets, WhatsApp, separate payment links, and a different app for training plans. They wanted one platform that handled everything, looked professional in front of clients, and did not require them to learn a complicated tool. The build had to feel like real software, not a generic SaaS template, and the client portal had to be something clients actually used day to day.
What we did
- Coach dashboard with at-a-glance stats (active clients, revenue, completion rates, and alerts for clients who need attention)
- Client list, lead intake forms, and a branded public page each coach can share to bring in new clients
- Workout builder with a 1,300-plus exercise library (each with a demo GIF and target muscles), drag-and-drop blocks, supersets, and ready-made templates
- Meal plan generator with a 700-plus recipe library, per-client macro targets, automatic shopping list, and one-click swaps for coach or client
- Client portal with a daily Today view, weekly check-ins, weight and photo progress logging, and direct messaging with the coach
- Stripe payments end to end: coach subscriptions, client billing via Stripe Connect, payment links, and webhook-driven email confirmations
- Branded email notifications via SendGrid (client invites, payment confirmations, password resets, payment-failed reminders)
- In-app messaging with unread badges, sorted by most recent, with email fallback if a message goes unread
The numbers
1,300+
Exercises in the library, each with a demo GIF
700+
Recipes with per-client macros and an auto shopping list
Takes payment
Charges clients in GBP via Stripe from day one
Gallery
/work/vestra-pro/01.jpg
Vestra Pro gallery 1/work/vestra-pro/02.jpg
Vestra Pro gallery 2/work/vestra-pro/03.jpg
Vestra Pro gallery 3/work/vestra-pro/04.jpg
Vestra Pro gallery 4What we said no to
- Giving clients too much control. Clients can only swap today's meal inside a tight calorie and macro range. Stops them undoing the coach's plan.
- Third-party AI nutrition integrations. An earlier Spoonacular integration was removed so the recipe library, macros, and prices stay under control and stay accurate.
- A microservice stack. One full-stack app in one repo is cheaper to host, faster to ship, and easier for one team to maintain.
- SaaS jargon in the UI. Prices, currency, and copy are GBP and plain British English throughout.
Stack
- React 18 with TypeScript and Vite
- Tailwind CSS and shadcn/ui (Radix)
- TanStack Query, Framer Motion, Recharts, dnd-kit
- Node.js and Express backend
- PostgreSQL on Neon (serverless)
- Drizzle ORM
- Stripe Checkout, Connect, and Webhooks
- SendGrid for transactional email
- Google Cloud Storage and Cloudflare R2 for files
- Railway hosting with Docker and GitHub auto-deploy
- Sentry for error tracking
Want something like this?
30 minutes, no pitch deck.