-
-
Today: A daily dashboard with one next action, workout recovery, walking minutes, and private habit check-ins.
-
Progress: A calm view of completed workouts, minutes, walking, habits, history, and optional weight trends.
-
Planner 1: See your weekly status, progress, and next useful action at a glance.
-
Planner 2: Start, resume, view, or add a short workout based on what your day needs.
-
Coach Suggesting for schedule changes via WebMCP
-
Coach suggesting for schedule changes via WebMCP
-
Planner 3: Plan fourteen morning and evening sessions without overwriting your existing workouts.
-
Planner 4: Review progress, insights, meals, templates, calendar export, and coach proposals.
-
Workout: A focused guided workout with exercise cues, illustrations, optional timers, and explicit finish control.
-
Meals: Searchable meal ideas with dietary filters, preparation times, ingredients, substitutions, and favourites.
-
Settings: Personalize goals, training preferences, habits, alerts, weight tracking, analytics, and data controls.
Inspiration
I built Gym & Tonic because “I should probably work out” is one of the most popular fitness plans in the world, and one of the least effective.
Most fitness apps give you endless exercises, complicated programs, and enough numbers. I wanted to build something that helps people turn good intentions into a realistic week they can actually follow.
What it does
Gym & Tonic is a local-first fitness planner for people starting or returning to exercise.
It helps users plan weekly sessions, follow guided workouts, use optional timers, reflect after training, track consistency, discover practical meal ideas, and see what their next useful action is.
The WebMCP integration lets ChatGPT act as a coach that understands the live training plan. It can check the week, identify gaps, suggest sessions, fill empty slots, and propose swaps.
The important part is that the coach does not get to quietly rearrange someone’s life. Every change becomes a proposal that the user can approve or reject.
How I built it
I built Gym & Tonic with Astro, React, TypeScript, Zustand, Tailwind, and WebMCP.
The application is local-first, so plans, completions, reflections, and workout progress stay in the browser. There are no accounts, no backend, and no mysterious fitness spreadsheet being sent into the cloud.
I used Fraunces and Inter to give the interface an editorial feel, then added guided workout screens, progress views, accessible navigation, responsive layouts, exercise illustrations, local persistence, offline support, and privacy-conscious analytics.
The agent tools are registered directly through document.modelContext.registerTool(). Read actions can inspect the plan, while write actions are staged for approval through one proposal pipeline.
Challenges I ran into
The hardest part was not generating a workout. The internet has generated enough workouts to keep humanity busy until the sun explodes.
The real challenge was handling the small but important states: pending proposals, rejected changes, active workouts, timers after reload, completed sessions, optional reflections, local storage migrations, mobile navigation, and the difference between “planned” and “actually completed.”
I also had to make sure an AI coach could be helpful without becoming an unsupervised personal trainer with admin privileges.
Accomplishments that I am proud of
I am proud that Gym & Tonic feels like a complete product rather than just a workout generator.
A user can arrive with no plan, choose a manageable starting point, place a session, open a guided workout, complete it, reflect, and see that progress represented immediately.
I am also proud of the trust model. The coach can do the planning legwork, but the user remains in control of every meaningful change.
The project is open source, local-first, responsive, accessible, and designed to work for people who are building consistency rather than chasing perfection.
What I learned
I learned that good AI product design is often about restraint.
It is easy to make an agent that can change things. It is much harder to make one that explains what it wants to do, waits for approval, and respects the user’s ownership of the result.
I also learned that the most important product state is often not “success” or “failure.” Sometimes it is simply “you started, and that counts.”
What's next for Gym & Tonic
Next, I would like to add printable training diaries, installable PWA support, deeper exercise guidance, richer progress storytelling, and more ways for the coach to explain why it is making a suggestion.
I would also like to explore a mode where the coach can defend a rejected proposal with evidence from the user’s plan, without becoming annoying enough to be muted immediately.
For now, Gym & Tonic is focused on one useful promise: helping people make a plan, follow through, and come back next week.
Built With
- astro
- react
- tailwind
- typescript
- webmcp
- zustand

Log in or sign up for Devpost to join the conversation.