# Forma ## Product Requirements Document **Version:** V1 **Status:** Product definition **Platform:** Mobile-first PWA **Primary audience:** Beginners in strength training **Long-term vision:** Native mobile fitness application --- # 1. Product Overview ## 1.1 Product concept Forma is a simple, beginner-friendly strength-training tracker that helps people: 1. Discover an appropriate workout routine 2. Follow that routine at the gym 3. Quickly log sets, reps, weight and rest 4. Understand whether they are progressing 5. Receive guidance on what to do next The core product loop is: **Plan → Train → Log → Progress → Improve** Forma should feel less like a complex fitness platform and more like a **smart, friendly visual training logbook with progress as its core**. --- # 2. Product Vision Make strength training easier to start, easier to track, and easier to understand. A beginner should be able to answer: > "What should I train today?" Then, during the workout: > "What do I need to do?" And after several weeks: > "Am I actually getting stronger?" Forma should provide a clear answer to all three. --- # 3. Problem Beginners often struggle with three parts of strength training: ### Knowing what to do They may know they want to start training but don't know how to structure a workout routine. ### Tracking what they did They may rely on memory, notes, spreadsheets or generic workout plans. ### Understanding progress Even when they train consistently, improvements can be difficult to see because progress happens gradually. Forma addresses these problems through: - Personalized routine recommendations - A large exercise library - Exercise animations - Simple workout tracking - Automatic progression suggestions - Progress visualization - Workout streaks --- # 4. Target Users ## Primary audience Beginners who are starting or have recently started strength training. They may: - Have little knowledge about exercise selection. - Be unfamiliar with workout programming. - Need visual demonstrations. - Want guidance without hiring a personal trainer. - Want something simpler than advanced bodybuilding apps. ## Secondary audience More experienced people who already have workout routines and want a fast, simple way to track them. Forma should therefore be **beginner-friendly without being beginner-only**. --- # 5. Product Principles ## 5.1 Simplicity first The user should never need to understand complex fitness terminology to use the product. ## 5.2 Progress should be visible The product should make improvement obvious through numbers, charts and milestones. ## 5.3 Guidance without complexity Forma should proactively suggest what the user can do next without turning into an overwhelming coaching platform. ## 5.4 Visual learning Exercises should be easy to understand through animations and concise information. ## 5.5 Fast workout logging Logging a set should take only a few seconds. ## 5.6 Mobile first The primary use case is someone standing in a gym holding their phone. --- # 6. Core Product Loop The central experience is: ### Step 1 — Onboarding User answers questions about their training. ↓ ### Step 1.5 — Account Creation When onboarding is finished, the app asks the user to create an account so their preferences, routine and workout history can be saved. ↓ ### Step 2 — Routine recommendation Forma recommends one or more workout routines based on the available routine database and the answers the user provided. ↓ ### Step 3 — Workout User starts a workout. ↓ ### Step 4 — Exercise Forma shows the exercise and animation. ↓ ### Step 5 — Sets User records: - Weight - Reps - Set completion - Rest ↓ ### Step 6 — Progression Forma evaluates previous performance and suggests the next target. ↓ ### Step 7 — Progress visualization User can see their improvement over time. ↓ ### Step 8 — Return Streaks and visible progress encourage the user to continue training. --- # 7. Onboarding The onboarding experience should collect enough information to recommend an appropriate starting routine. ## Questions Potential questions include: ### Training experience - **Beginner (0–1 year)** - **Intermediate (1–3 years)** - **Advanced (3+ years)** ### Primary goal - Build muscle - Get stronger - Lose weight ### Training frequency How many days per week? - 3 days (Ideal if you want to build consistency) - 4 days · Suggested (Ideal for steady, sustainable progress) - 5 days (Balanced mix of volume and rest) - 6 days (Best for experienced lifters training often) ### Training environment - Full gym (Machines, Dumbbells and Barbell) - Basic gym (Dumbbells and Barbell) - Home with equipment - Bodyweight only ### Session duration - ~30–45 minutes - ~45–60 minutes (recommended) - 60+ minutes ### Any priorities? - Chest - Back - Shoulders - Arms - Legs - Core - Glutes ### Any muscle groups you need to avoid or limit? - Chest - Back - Shoulders - Arms - Legs - Core - Glutes ### What's your birth year? Used only when relevant to routine recommendations and personalization. ### What time do you want to hit the gym? Let the user select: - The days of the week - The time of day ### Allow notifications Stay on track: Allow notifications to get a reminder before scheduled workouts, where browser/device capabilities allow. --- # 8. Personalized Workout Recommendations After onboarding, Forma generates recommended workout routines based on the user's answers. Example: > **Based on your goals and schedule** > > We recommend a 4-day Full Body routine. ### Recommendation should consider - Experience - Goal - Training frequency - Training environment - Session duration - Areas to prioritize and avoid - Age, when relevant to personalization The recommendation should explain **why** the routine was selected. Example: > "This routine is designed for beginners training 4 days per week and focuses on building strength across your entire body." The user can: - Accept the recommendation - Preview the routine - Customize it - Choose another routine --- # 9. Workout Routines A routine is a reusable training plan. Example: ## Full Body A 1. Squat — 3 × 8–10 2. Bench Press — 3 × 8–10 3. Lat Pulldown — 3 × 10–12 4. Romanian Deadlift — 3 × 8–10 5. Lateral Raise — 3 × 12–15 Each routine contains: - Name - Description - Exercises - Exercise order - Target sets - Target reps - Default rest period Users can: - Create routines - Edit routines - Duplicate routines - Delete routines - Reorder exercises - Add exercises - Remove exercises --- # 10. Exercise Library Forma will include a library of hundreds of exercises. The exercise database will initially use **ExerciseDB V1 from AscendAPI**, which currently provides 1,500 exercises with GIFs in its free version. ## Exercise data Each exercise should contain, where available: - Exercise name - Animation/GIF - Primary muscle - Secondary muscles - Equipment - Body part - Exercise instructions - Exercise type ## Exercise discovery Users can: - Search by name - Browse by muscle group - Browse by equipment - Browse categories ## Exercise detail Example: **Barbell Bench Press** Animation Chest Barbell **How to perform** Short instructional description. The animation should be the primary visual aid. --- # 11. ExerciseDB / Supabase Architecture ## Decision ExerciseDB data should be **imported into Forma's Supabase database** rather than queried directly by the frontend. ### Recommended architecture **AscendAPI ExerciseDB** ↓ **Import / synchronization process** ↓ **Supabase PostgreSQL** ↓ **Forma application** The app should treat Supabase as its primary exercise-data source. ### Why This provides: - Faster exercise searches - More predictable application behavior - Independence from API availability - Ability to customize and enrich exercise data - Ability to add custom exercises later - Easier filtering - Easier relationships with routines and workout sessions - Better control over the application's data model Supabase supports Edge Functions for server-side integrations and Cron for scheduled jobs, so the ExerciseDB synchronization can run outside the client. ### Initial implementation Create an `exercises` table containing the fields required by Forma. The import process should map AscendAPI's exercise records into Forma's internal schema rather than making the rest of the application dependent on the external API's response structure. ### Future synchronization If necessary, a scheduled sync can periodically check for new or updated exercises. Supabase Cron can execute scheduled database jobs or invoke Edge Functions, making this architecture viable without introducing a separate backend service. ### Important consideration Before monetizing Forma or distributing it commercially, verify AscendAPI/ExerciseDB's current licensing and commercial-use terms for the exercise data and GIF assets. The current public site confirms the free V1 API and its contents, but the commercial rights should be treated as a separate product/legal check. --- # 12. Workout Data Model The core hierarchy should remain intentionally simple: **Workout → Exercise → Set** ## Workout Contains: - Workout ID - User ID - Routine ID - Start time - End time - Duration - Status ## Exercise Within a workout: - Exercise ID - Order - Target sets - Target reps ## Set Each set contains: - Set number - Weight - Reps - Completed status - Timestamp Rest is tracked at the exercise level because the user's custom rest preference belongs to the specific exercise, not to an individual set. This model should support future extensions without complicating the initial UI. --- # 13. Active Workout The active workout is the primary interaction experience. Example: ### Bench Press **Previous workout** 80 kg × 8 80 kg × 8 77.5 kg × 9 **Today** | Set | Target | Weight | Reps | | --- | ------ | -----: | ---: | | 1 | 8–10 | 80 kg | 9 | | 2 | 8–10 | 80 kg | 8 | | 3 | 8–10 | | | The user should be able to enter weight and reps quickly and mark the set as complete. --- # 14. Automatic Progression Suggestions Progression is one of Forma's core differentiators. After analyzing previous performance, Forma should suggest the next target. ## Example Previous workout: **80 kg × 8, 8, 8** Current workout: > **Suggested starting weight: 80 kg** After completing: **80 kg × 10, 10, 10** Forma may suggest: > **Next time, try 82.5 kg.** Another example: If the target range is 8–10 reps: **80 kg × 10, 10, 10** → Suggest increasing weight. If the user performs: **80 kg × 8, 7, 6** → Maintain the weight rather than increasing it. ### Important principle Suggestions should be presented as **recommendations**, not mandatory instructions. The user remains in control of the workout. --- # 15. Progress Visualization Progress should be one of the most visible parts of Forma. Users should be able to see progression for individual exercises. ## Example metrics ### Weight Highest weight used over time. ### Repetitions Maximum repetitions achieved at a given weight. ### Volume Weight × repetitions. ### Estimated strength Potentially estimated 1RM in future versions. --- # 16. Progress Charts Example: **Bench Press** Weight 100 kg ┤ ● 90 kg ┤ ● ● 80 kg ┤ ● ● 70 kg ┤ ● ● └────────────────── Aug Sep Oct Nov The chart should make improvement understandable at a glance. Charts should prioritize: - Clarity - Simple trends - Useful time periods Rather than overwhelming users with analytics. --- # 17. Personal Records Forma can automatically detect personal records. Examples: - Highest weight - Most reps - Highest volume When appropriate, the app can celebrate milestones: > 🎉 New personal best! > > You completed 90 kg × 8 on Bench Press. PRs should enhance motivation without becoming a distracting gamification layer. --- # 18. Rest Timer Each exercise has a rest-time preference. After completing a set: **Rest** 01:30 The user can: - Start - Pause - Skip - Add 15 seconds - Remove 15 seconds The default rest time is **1 minute 30 seconds**. When the user changes the rest duration for an exercise, the custom value should be saved for that exercise rather than globally. The active workout should use the exercise's saved rest preference when available. # 19. Workout Completion When the user finishes a workout, Forma displays a concise summary. Example: # Workout complete 🎉 **52 min** 5 exercises 16 sets 8,420 kg volume ### Progress Bench Press +5 kg vs. previous session ### Achievement New personal best! The workout is then saved to history. --- # 20. Workout History Users can see all completed workouts. Each entry contains: - Workout name - Date - Duration - Number of exercises - Number of sets - Total volume Selecting a workout opens its detailed record. --- # 21. Exercise History Each exercise should have its own historical view. Example: ## Bench Press **Sep 29** 80 × 10 80 × 10 80 × 9 **Sep 22** 80 × 8 80 × 8 80 × 8 **Sep 15** 77.5 × 10 77.5 × 9 77.5 × 8 The user can switch between: - History - Chart - Personal records --- # 22. Streaks Forma should track consecutive training periods. Example: **🔥 12 week streak** The streak definition should be based on completing at least the user's expected number of workouts within the relevant period. The product should avoid encouraging unhealthy behavior through daily streak pressure. For strength training, a weekly consistency streak may be more appropriate than requiring daily activity. --- # 23. Home Dashboard The home screen should answer: ### What should I do today? Example: **Today's workout** Full Body B 5 exercises · ~45 min **Start workout** ### Progress 12-week streak 🔥 ### Recent achievement Bench Press +2.5 kg ### Quick access - Start workout - View routines - View progress --- # 24. Navigation Primary navigation should likely contain: ### Home Today's workout, progress and streak. ### Workouts Workout routines. ### Progress Charts, PRs and exercise progression. ### History Completed sessions. ### Profile Settings and preferences. The exact navigation can be validated during UX design. --- # 25. Authentication V1 should support: - Account creation - Login - Logout - Password reset - Persistent session Supabase Auth can be used for authentication. User workout data must be isolated using Supabase Row Level Security. --- # 26. PWA Requirements Forma should be built as a Progressive Web App. ## Requirements - Responsive mobile-first UI - Installable on supported devices where browser/platform capabilities allow - App-like navigation - Appropriate mobile viewport - Touch-friendly controls - Fast loading - Persistent active-workout state ## Long-term objective The PWA should provide a strong foundation for eventual native applications. Potential future paths: - React Native - Expo - Native iOS/Android - PWA continuation The architecture should therefore avoid coupling the core product logic exclusively to browser-specific behavior. --- # 27. Offline / Connectivity The active workout experience should be resilient to temporary connectivity issues. At minimum: - Preserve active workout state locally. - Do not lose entered sets if the connection drops. - Synchronize when connectivity returns. Full offline functionality can be developed later. --- # 28. Personal Tracking V1 is strictly personal. Users cannot: - Follow other users - Share workouts publicly - Comment - Like workouts - Compare themselves with other users The focus is entirely on the user's own training journey. --- # 29. Monetization Strategy Monetization is not a V1 requirement. The product should initially optimize for: - Product quality - Portfolio demonstration - User experience - Retention - Demonstrating the core product concept Potential future monetization models can include: ### Freemium Free: - Workout tracking - Basic routines - Basic history Paid: - Advanced analytics - Unlimited custom routines - Advanced progression - Personalization - AI features ### Subscription Premium fitness companion with advanced coaching and analytics. ### Training programs Premium programs created by trainers. No monetization model should be implemented until the core product demonstrates meaningful user value. --- # 30. V1 Scope ## Core - Authentication - Onboarding - Personalized routine recommendations - Exercise library - Exercise search - Exercise filters - Exercise animations - Exercise detail pages - Workout routines - Create/edit/delete routines - Start workout - Log sets - Log weight - Log reps - Rest timer - Previous performance - Automatic progression suggestions - Workout completion - Workout history - Exercise history - Progress charts - Personal records - Streaks - Workout schedule and reminder preferences - Scheduled workout notifications where browser/device capabilities allow - Mobile-first responsive UI - PWA support ## Explicitly excluded - Body-weight tracking - Nutrition tracking - Calories - Social network - Public profiles - Trainer marketplace - Wearable integration - AI-generated workouts - Payments/subscriptions - Advanced coaching --- # 31. Future Opportunities These features should remain outside V1 but could become part of the long-term product. ## AI coaching An AI coach that understands the user's training history and provides personalized recommendations. ## Advanced progression engine More sophisticated progression based on: - RPE - RIR - Training volume - Exercise difficulty - Fatigue - Deload periods ## AI workout generation Generate routines based on goals, experience, available equipment and schedule. ## Exercise substitutions If equipment is unavailable: > "Can't do Barbell Bench Press?" Forma recommends appropriate alternatives. ## Smart workout adaptation If a user misses a workout: > "You missed Tuesday's workout. Here's how we'd adjust the week." ## Training insights Examples: > Your chest volume increased 18% this month. > Your Bench Press has improved for 7 consecutive weeks. > You haven't progressed on Lateral Raises for 4 weeks. ## Wearables Potential integrations with: - Apple Health - Google Health Connect - Wearable devices ## Native apps Dedicated iOS and Android applications. ## Social features Potentially: - Sharing achievements - Sharing routines - Following friends - Community routines ## Trainer ecosystem Professional trainers could eventually: - Create programs - Sell programs - Coach users - Monitor client progress ## Monetization Premium subscriptions, paid programs and advanced coaching. --- # 32. Success Metrics The most important metric should be **consistent workout tracking**, rather than raw account creation. ## Activation Percentage of new users who: **complete onboarding → accept/create a routine → complete their first workout** ## Week 1 retention Percentage of activated users who return and complete another workout within 7 days. ## Weekly active users Users who complete at least one workout during a week. ## Workouts per active user Average number of completed workouts per active user. ## Workout completion rate Percentage of started workouts that are completed. ## Progression engagement Percentage of completed workouts where users interact with a progression suggestion. ## Progress visualization engagement Percentage of active users who view their progress charts. ## Streak continuation Percentage of users who continue their training streak. --- # 33. V1 Success Criteria A successful V1 should allow a new user to complete the following journey without external help: **Answer onboarding questions** ↓ **Create an account and save preferences** ↓ **Receive a personalized workout recommendation** ↓ **Accept/customize the routine** ↓ **Start their workout** ↓ **Find and understand each exercise through animation** ↓ **Log weight + reps for every set** ↓ **Rest between sets** ↓ **Receive progression guidance** ↓ **Finish the workout** ↓ **See their workout summary** ↓ **Return later** ↓ **See their previous performance** ↓ **Follow the progression recommendation** ↓ **See their improvement in a chart** This is the core Forma experience. --- # 34. Product Positioning A concise description of the product: > **Forma is a simple strength-training tracker that helps you know what to do, track what you did, and see yourself getting stronger.** The product's key differentiators are: **Simple tracking** Log workouts without getting distracted. **Personalized starting point** Get a routine based on your goals, experience and schedule. **Smart progression** Know when to add reps or increase weight. **Visible progress** See your strength improve over time. **Visual exercise guidance** Understand how to perform exercises through animations. --- # 35. Long-Term Product Vision Forma should evolve from a workout log into a **personal strength-training companion**. The progression can be: **V1** Workout tracker ↓ **V2** Progression assistant ↓ **V3** Personalized training system ↓ **Long term** AI-powered strength-training companion The product should retain its core philosophy throughout: > **Keep training simple. Make progress obvious.**