Commit Graph

383 Commits

Author SHA1 Message Date
lucasnevespereira dc452e9bca fix: docker scripts path 2025-08-20 18:46:14 +02:00
Mathias 7d3ef00f64 Merge branch 'main' of github.com:Snouzy/workout-cool 2025-08-18 14:16:19 +02:00
Mathias 23a1c1e187 feat(about): add partnership information with Fit'Distance across multiple languages to highlight support for free fitness content 2025-08-18 14:16:04 +02:00
Lucas Neves Pereira 8988dd4c4a feat: update release notes (#179) 2025-08-18 14:06:55 +02:00
Mathias 717e2e6c8a Merge branch 'main' of github.com:Snouzy/workout-cool 2025-08-18 13:54:16 +02:00
Mathias f4be0b7c7b feat(migrations): add rating and ratingComment columns to workout_sessions table and create migration backup for existing database structure 2025-08-18 13:54:08 +02:00
Lucas Neves Pereira 79995b3a49 chore: bump version 1.3.1 (#178) 2025-08-18 13:50:08 +02:00
Lucas Neves Pereira 861f20de01 fix(ci): update .env.example (#174) 2025-08-15 09:49:32 +02:00
Mat B. 960d1f2a7d style/leaderboard (#173)
* feat(locales): add second and third place translations in multiple languages and improve leaderboard UI with new badges and animations

* feat(locales): add new translation keys for last activity and registration date in multiple languages; enhance leaderboard UI with improved rank display and user information layout

* feat(leaderboard-item): enhance leaderboard item UI with improved layout and added ClockIcon for last activity time display

* feat(leaderboard): implement leaderboard period filtering and enhance date range handling for top workout users

* feat(leaderboard): add user leaderboard position component and related actions for fetching user position in leaderboard

* fix(Footer.tsx): remove period prop from UserLeaderboardPosition for consistency in usage

* feat(leaderboard): add user authentication check and motivational message for users with no workouts

* feat(leaderboard): enhance leaderboard page with new header and user info cards for better user engagement

* feat(locales): add leaderboard titles and descriptions in multiple languages for improved user experience and localization support

* refactor: clean up imports and simplify code structure across multiple files for better readability and maintainability

* chore(use-user-position.ts): reorganize imports for better readability and maintainability

* refactor(get-user-position.action.ts): remove unused code for counting users ahead to streamline the action logic

* fix(locales): update period labels in English, Spanish, French, and Portuguese for consistency and clarity

* refactor(leaderboard): extract date range logic into a new utility file for better code organization and reusability

* refactor(get-top-workout-users.action.ts): extract date range logic into a separate utility function for better modularity and readability
v1.3.1
2025-08-14 23:54:49 +02:00
Mat B. a7f75ac1d7 feat/leaderboard-enhancements (#172) 2025-08-14 22:50:28 +02:00
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
Lucas Neves Pereira 88517578ce feat: leaderboard (#169)
* feat: leaderboard page

* refactor: simplify leaderboard fetching logic

* refactor: separated leaderboard concerns

* fix(scritps): use enum in seed leadarboard

* fix(lint): remove unused translation prop

* lint: rollback import plugin

* feat(leaderboard): enhance UI with member dates and dicebear avatars

* fix(leaderboard): correct use top users hook

* feat(leaderboard): cleaned date related and unused code
2025-08-10 19:57:49 +02:00
Lucas Neves Pereira dd37e84b25 doc: update self hosting guide (#166) 2025-07-28 22:41:03 +02:00
Rasha Malek d399aef9fe Update .env.example (#163)
fix miss-match between database name in  POSTGRES_DB and DATABASE_URL
2025-07-26 20:52:18 +02:00
Silas Burger af4ff2df4c feat/workout-streak-header: Added squares, but without tooltip (#160) 2025-07-14 23:10:22 +02:00
Lucas Neves Pereira 6ccbfdbbea ci: remove unsupported arm v7 (#159) 2025-07-14 12:58:46 +02:00
Lucas Neves Pereira 261bf067e3 fix(ci): remove gha cache (#158) 2025-07-13 22:03:57 +02:00
Lucas Neves Pereira 18f9a94c30 fix(ci): change docker buildx driver (#157) 2025-07-13 19:28:53 +02:00
Lucas Neves Pereira 42fa551b13 feat(ci): multi architecture docker image builds (#156) 2025-07-13 18:43:56 +02:00
Lucas Neves Pereira 19a20e3712 doc: remove unlinked roadmap from table of contents (#154) 2025-07-12 19:21:40 +02:00
Lucas Neves Pereira 00340949a7 fix: close daisyui dropdown (#153) 2025-07-12 19:21:09 +02:00
Lucas Neves Pereira c784f6e2e4 fix: add profile tooltip (#152) 2025-07-12 19:09:07 +02:00
Mathias ef84094c35 chore(globals.css): remove unused Google AdSense styles to clean up CSS and prevent errors 2025-07-12 19:05:02 +02:00
Mathias 9a370fbd1a feat(globals.css): add styles for adsbygoogle class to improve ad display and responsiveness 2025-07-12 18:50:52 +02:00
Mathias 015e266025 fix(GoogleAdSense): improve ad loading logic by adding visibility checks and preventing multiple loads
feat(GoogleAdSense): implement ResizeObserver and fallback interval for better ad loading experience across browsers
2025-07-12 16:12:45 +02:00
Mathias ab4a3082a0 feat(ResponsiveAdBanner): remove unnecessary padding class for cleaner layout
feat(programs-page): conditionally render HorizontalBottomBanner for improved ad display based on environment variable
2025-07-12 16:08:27 +02:00
Mathias 6fa2046b75 refactor(equipment-selection.tsx): remove unused components and imports to clean up code and improve readability 2025-07-12 16:03:18 +02:00
Mathias 9456a23d16 refactor(ads): remove position prop from ad components to simplify API and improve consistency across ad banners
fix(ads): enhance GoogleAdSense loading logic by removing unnecessary height checks and improving error handling
2025-07-12 15:59:26 +02:00
Mathias 9645888c46 feat(ads): add position prop to GoogleAdSense for handling ad timing and improve loading logic with initial delay and error handling 2025-07-12 15:53:02 +02:00
Mathias 8feeb6c982 fix(ResponsiveAdBanner): set fixed height for ad banner to ensure consistent display across different screen sizes 2025-07-12 15:49:25 +02:00
Mathias ca06ffb967 style(ResponsiveAdBanner): remove unnecessary overflow-hidden class for better layout consistency 2025-07-12 15:45:23 +02:00
Mathias ac33a06fe9 feat(ads): enhance Google AdSense component with ResizeObserver for better ad loading and fallback for older browsers
fix(ads): set fixed width and height for InArticle ad component for consistent display
fix(ads): update ResponsiveAdBanner to use fluid ad format and enable full width responsiveness
2025-07-12 15:37:37 +02:00
Mathias 29706a171e refactor(ResponsiveAdBanner): simplify styles and structure for better readability and maintainability 2025-07-12 15:30:07 +02:00
Mathias 134f21fe64 fix(ResponsiveAdBanner): set fullWidthResponsive to true for better ad display on various screen sizes 2025-07-12 15:25:26 +02:00
Mathias 60bbe4d7ab feat(ads): refactor ad banner components to use a new ResponsiveAdBanner for better code reuse and responsiveness
This change consolidates the logic for rendering top and bottom ad banners into a single component, improving maintainability and ensuring consistent styling across different ad placements.
2025-07-12 15:21:00 +02:00
Mathias c4ca9bd4b4 fix(HorizontalTopBanner): update fullWidthResponsive prop to true for better ad responsiveness and adjust style formatting for consistency 2025-07-12 15:18:28 +02:00
Mathias 6073e33858 feat(ads): enhance ad components to support full-width responsive layout and improve development preview
fix(ads): adjust placeholder dimensions and ad styles for better layout consistency across ad components
2025-07-12 15:14:31 +02:00
Mathias 0ee2af35d5 style(ads): update ad placeholder height and add flexbox styling for better alignment in HorizontalBottomBanner and HorizontalTopBanner components 2025-07-12 14:44:14 +02:00
Mathias 70d4447a87 style(ads): update dimensions of horizontal ad banners for better responsiveness and layout consistency 2025-07-12 14:24:00 +02:00
Mathias 52742a7b01 Merge branch 'main' of github.com:Snouzy/workout-cool 2025-07-12 14:07:18 +02:00
Mathias ff5ce47ca5 feat(ads): add in-article ad component and integrate new ad slots for BMI and heart rate zones calculators
feat(env): add new environment variables for ad slots to support additional advertising placements across various tools
refactor(heart-rate-zones): update heart rate zones page to include new in-article ads and remove deprecated components
refactor(calorie-calculator): update calorie calculator pages to include new ad slots and improve ad integration
refactor(bmi-calculator): enhance BMI calculator page with
2025-07-12 14:07:02 +02:00
Mathias 7503ae7e72 feat(ci): add new environment variables for ad slots to support additional banner ads across various pages
feat(profile, tools, programs): integrate new ad slots into profile, tools, and programs pages for enhanced advertising capabilities
2025-07-12 13:10:27 +02:00
Lucas Neves Pereira b6d12e8d7f chore: add deps target (#150) 2025-07-12 12:48:31 +02:00
Lucas Neves Pereira 6b07e16998 fix(env): updated db configuration (#151) 2025-07-12 12:48:19 +02:00
Mathias df0bd079d2 style(ads): update ad banner styles to have consistent height of 60px for better layout uniformity 2025-07-12 12:25:14 +02:00
Mathias 623651dfea style(HorizontalTopBanner): update ad banner style to use inline-block and fixed dimensions for better layout consistency 2025-07-12 12:21:01 +02:00
Mathias e52f0ad093 style(ads): adjust maxHeight and padding styles for GoogleAdSense and HorizontalTopBanner components to enhance layout consistency and visual appearance 2025-07-12 12:14:14 +02:00
Erik van Raalte aa94184dde feat/i18n-heatmap (#147) 2025-07-12 12:04:49 +02:00
Mathias 2e4e712ea0 refactor(add-exercise-modal): simplify exercise addition logic and improve code readability by removing unused imports and restructuring conditions for clarity 2025-07-10 13:41:56 +02:00
Mathias beb6a85cbd feat(workout-builder): integrate workout session management by adding exercise to active session and updating workout builder logic to handle duplicates
refactor(workout-stepper): optimize exercise ordering logic to ensure flatExercises is the source of truth while respecting custom order
2025-07-10 13:35:58 +02:00