Files
workout-cool/CLAUDE.md
Mat B. a1bd2b26dd chore: adapt the backend for the mobile app (#171)
* feat(exercises): add new route for fetching exercises with filtering options
chore(import-exercises): improve formatting and clarity in the prompt for exercise attributes

* feat(shuffle): add shuffle exercise route with input validation and error handling
chore(delete-program-button): simplify button formatting and update confirmation message for clarity
chore(workspace): create workspace configuration for easier project management across frontend and mobile directories

* feat(auth): implement signup route with validation and error handling for user registration

* feat(api): add user password and profile management routes for updating and retrieving user information

* chore(route.ts): remove console.log statements for cleaner code and improved performance

* feat(profile): implement cookie cleaning and logging for user profile updates to enhance session management and debugging
fix(package): add @better-auth/expo dependency for improved authentication support
fix(better-auth): update trusted origins to include expo and workoutfast protocols for better compatibility

* feat(auth): implement mobile-compatible session handling to address malformed cookies from the mobile app and improve authentication reliability
chore(api): refactor user password and profile routes to utilize new mobile session utilities for better cookie management
docs(api): add README for mobile authentication support detailing issues and solutions for mobile app cookie handling

* feat(password): refactor password update logic to separate core functionality from action client for better reusability and clarity
fix(password): improve error handling in password update route to provide more specific feedback on validation failures

* refactor(mobile-auth.ts, mobile-cookie-utils.ts, mobile-safe-actions.ts): extract cleanMobileCookies function to a new utility file for better code organization and reuse across modules

* refactor(password route): simplify error handling by returning the original error message instead of custom messages for better maintainability and clarity

* feat(workout-sessions): add POST route for syncing workout sessions to handle mobile compatibility and session management

* feat(workout-sessions): add user-specific workout session retrieval and error handling for syncing sessions
fix(sync-workout-sessions): improve error handling for missing users and exercises during session sync process

* feat(feedback, rating, summary): implement feedback and rating endpoints for workout sessions, add summary metrics and update database schema to support ratings and comments

docs: create CLAUDE.md to provide project overview, architecture, key features, and deployment details

* refactor(route.ts): simplify GET request handler by removing userId parameter check and adding rating fields to response for enhanced session details

* feat(workout-sessions): implement DELETE route for deleting workout sessions with authentication checks and error handling

* refactor(workout-sessions): update DELETE route to handle sessionId as a resolved promise and simplify authentication checks in delete action

* feat(revenuecat): integrate RevenueCat for subscription management and user linking, add webhook handling for subscription events, and enhance premium status checks with RevenueCat data
fix(premium/status): update premium status endpoint to include RevenueCat information and improve error handling
chore(database): add RevenueCat fields to subscription model and create webhook event logging table in the database
build(dependencies): add RevenueCat backend wrapper and crypto-js for secure webhook signature verification

* chore: update .gitignore to exclude product-development and .claude directories
feat(locales): add French translation for lats in locales/fr.ts
fix(better-auth): update trustedOrigins to replace workoutfast with workoutcool for better authentication configuration

* fix(route.ts): update import path for getExercisesAction to reflect new actions directory structure for better organization

* feat(route.ts): add logging for session details to assist with debugging
feat(sync-workout-sessions.action.ts): extend workout session schema to include optional rating and ratingComment fields for enhanced user feedback

* feat(analytics): add premium analytics tracking endpoint and enhance subscription details with premium features

* feat(revenuecat): implement RevenueCat API client for subscription management and enhance premium service with syncing capabilities

* feat(statistics): implement exercise statistics feature with charts and data fetching for weight progression, one-rep max, and volume statistics, including premium access controls and UI components

* feat(exercises): enhance exercise attributes handling and UI for better user experience and performance tracking

* feat(ExercisesBrowser): enhance exercise selection with filters, statistics, and improved UI for better user experience

* feat(exercises): enhance exercise filtering and statistics fetching with improved query parameters and error handling in the ExercisesBrowser component

* refactor(statistics): replace ExerciseStatisticsTab with ExerciseCharts for improved clarity and functionality across multiple components

* refactor(statistics): clean up ExerciseStatisticsTab and ExercisesBrowser components by removing unused imports, simplifying modal structure, and enhancing styling for better readability and maintainability

* fix(ExercisesBrowser): add console log for selectedExercise and adjust styling for exercise image container to enhance layout and responsiveness

* feat(statistics): integrate recharts for improved charting and add theme support for better UI consistency

* feat(statistics): enhance exercise statistics page with new charts and localization updates, and remove unused statistics page for better organization

* feat: add lodash.debounce type definitions and clean up ExercisesBrowser component markup

* feat(statistics): remove exercises page and implement statistics page with localization and navigation updates

* fix(statistics): update alert variant for error handling and refactor tooltip implementation for better clarity and usability

* feat(statistics): enhance StatisticsPage with premium features and overlays for better user engagement and insights

* feat(premium-gate): add upgrade to premium message and streamline component structure for better readability

* feat(exercise): add new exercise attributes handling and refactor ExerciseSelection component to utilize updated types and methods for better attribute management

* refactor(exercise): simplify muscle attribute retrieval functions and improve type consistency across components

* feat: refactor workout session and exercise components for improved attribute handling and remove unused HomePage component

* fix(statistics.types.ts): reorder imports to maintain consistency and clarity in module structure

* feat(exercise-video-modal): implement tabbed interface for video and statistics with timeframe selection to enhance user experience

* feat(statistics): enhance statistics page with dynamic translations and improved user experience through localized content and updated UI elements

* feat(statistics): refactor ExercisesBrowser and ExerciseVideoModal to use TimeframeSelector component for improved code reusability and maintainability

* fix(locales/fr.ts): update French translations for consistency and accuracy in exercise terminology; fix(ExercisesBrowser.tsx): enhance muscle group labels to match updated translation keys and improve code readability

* feat(simple-select): add SimpleSelect component for reusable select functionality and integrate it into ExercisesBrowser for improved filtering options

* fix(fr.ts): update French translations for timeframes to use lowercase for consistency

* feat(statistics): enhance date formatting by integrating locale support across multiple components for improved user experience

* feat(locales): add statistics and tooltip translations in multiple languages for improved user experience

* feat(revenuecat): implement webhook handler for subscription updates and add advanced workout data seeding script

* feat(revenuecat): deprecate user ID assignment and linking endpoints, add sync-status endpoint for automatic management of RevenueCat IDs

* feat(webhook): add support for SUBSCRIPTION_PAUSED event and enhance logging for cancellation events

* fix(webhooks): rename expiration_at to expiration_at_ms for consistency in RevenueCatWebhookEvent interface and update related logic in processSubscriptionEvent function

* feat(revenuecat): implement new webhook handling and subscription sync logic to improve premium status management and simplify database schema

* chore: update USER_ID in seed-workout-data-advanced and simplify premium status check in premium.service to improve clarity and maintainability

* feat(api): add program enrollment and retrieval endpoints for better program management functionality

* feat(programs): enhance program enrollment and progress routes with new functionality and improve parameter handling

* refactor(api): update parameter types to use Promise for slug and sessionSlug in route handlers for better async handling and clarity

* refactor(premium.service.ts): remove revenueCatEntitlement references to simplify premium access logic and improve code clarity

* chore(ci): add RevenueCat environment variables for CI workflow testing

* chore: remove unused RevenueCat project ID references to clean up codebase

* chore: remove deprecated API routes and clean up unused code to streamline the codebase

* chore: baseline migration
2025-08-14 20:35:40 +02:00

2.1 KiB

CLAUDE.md

Project Overview

Workout.cool is a fitness app with two main components:

  • Website Next.js (App Router) web client with Server Actions Location: /Users/mathiasbradiceanu/dev/perso/workout-cool-web

  • Mobile App React Native app for iOS and Android Consumes the Workout.cool Next.js API Location: /Users/mathiasbradiceanu/dev/perso/workout-cool-mobile

Architecture

System Components

  1. Web Client (Next.js)

    • Uses App Router and Server Actions for data mutations
    • Provides REST/JSON API endpoints consumed by the mobile app
    • TailwindCSS for styling
    • Contain the schema of the prisma database in /Users/mathiasbradiceanu/dev/perso/workout-cool-web/prisma/schema.prisma
  2. Mobile App (React Native / Expo)

    • Communicates with the Next.js API for workouts
    • Push notifications and offline support for session data
  3. Both projects are using the FSD design system.

Data Flow

  1. Mobile app and browser make API requests to the Next.js server
  2. Next.js Server Actions handle form submissions, data mutations, and fetches
  3. Data is stored/retrieved from the database via Next.js backend logic
  4. Web client renders pages and exposes JSON endpoints
  5. Mobile app syncs progress and displays workout sessions

Key Features

  • 3-Step Session Builder: Equipment → Target Muscles → Generated Exercises
  • Embedded Videos: Guide users through each exercise
  • In-Session Tracking: Add sets with Reps, Weight, Time, or Bodyweight
  • Session History: “Commit-style” log of past workouts on user profile
  • Repeat & Share: Re-run past sessions or share summaries with others

External Integrations

  • Database: PostgreSQL via Next.js data layer
  • ORM: Prisma, the schema is under /Users/mathiasbradiceanu/dev/perso/workout-cool-web/prisma/schema.prisma
  • Authentication: BetterAuth (email/password, OAuth)
  • Video Hosting: YouTube

Linting

  • ESLint and Prettier configured in both web and mobile workspaces

Deployment

  • Website: Vercel (Next.js)
  • Mobile App: Expo EAS Build & Updates