Personal ProductLive

Reppod — Two-Sided Coaching SaaS

A trainer dashboard and client portal in one product — drag-and-drop workout builders, AI-generated plans, and progress tracking on Next.js and MongoDB.


The Client

Reppod targets independent personal trainers who currently coordinate client programming across spreadsheets, messaging apps, and video links — giving them one dashboard to build, assign, and track workouts, and giving their clients a dedicated portal to follow along.

The Brief

Personal trainers scaling past a handful of clients lose track of who's on which program, whether they're actually watching the demo videos, and how to message everyone without juggling five different apps.

What Shipped

Built a two-sided product from one User model with a role field (trainer/client), routed through role-aware middleware. Trainers get a drag-and-drop workout builder with per-exercise video demos, assign programs from a reusable library, and see engagement (watch-% and completion) per client. Clients get their own portal to log sessions, watch demos, track progress on an animated volume chart, and message their coach directly. An invite flow lets a trainer add a client by email and have them set up their own linked account.


How it was built

Next.js 16React 19TypeScriptMongoDBMongooseAuth.js v5dnd-kitCloudinaryRecharts

Auth.js config is deliberately split: an edge-safe authorized callback in proxy.ts (Next.js 16's renamed middleware) handles routing decisions without touching the database, while a separate Node-runtime config adds the Credentials/Google providers and Mongoose access. Server components add a second, redundant role check before rendering anything sensitive, so a middleware gap degrades to a redirect, not exposed data.

AI-generated workout plans needed to be trustworthy enough for a trainer to assign without checking every line. The model is constrained to a strict schema referencing only the client's actual exercise library, validated again against real data after generation, and always lands as an editable draft — never auto-assigned.

Results & reach

A production-pattern two-sided SaaS covering real-product concerns most tutorials skip: two-sided invite auth, role-based routing enforced at two layers, and AI-generated content that ships as a reviewable draft rather than an unreviewed action.