Inspiration

Whether you're just starting out or you’ve been going to the gym for a while, planning effective workouts can be challenging. For beginners, the learning curve can be steep. For regular gym-goers, it’s often hard to decide what to do within a limited timeframe and still make consistent progress. We created this app to solve both problems. We wanted to make workout planning easier, more intentional, and fully personalized. With a user-friendly experience and built-in guidance, our goal is to support every step of your fitness journey.

What it does

Our web application collects basic demographic information, such as age, height, weight, and sex, along with fitness preferences like gym experience level, workout duration, and body focus areas. Using Generative AI, it generates a custom workout plan that fits the user's goals. The app includes helpful and intuitive features, making it easy for anyone to get started and stay motivated.

How we built it

Our application consists of a full-stack architecture that leverages Next.js and Amplify for the front-end, serverless AWS services on the backend, and a powerful Amazon Bedrock LLM for generating responses.

The frontend was developed using Next.js, JavaScript, and CSS for better handling and proper structuring. We managed version control through GitHub and deployed the application using AWS Amplify.

The backend logic is handled entirely within AWS Lambda. When Lambda is first triggered by the browser, it receives a CORS preflight OPTIONS request and returns the appropriate headers. Initially, we wanted to use API Gateway to connect them but we decided to configure the Lambda function directly due to time constraints As Lambda receives the user’s form data, it retrieves data ExerciseDB API from RapidAPI to fetch relevant exercises, and constructs a prompt based on both the user’s input and the retrieved exercises. The prompt is then sent to Amazon Bedrock, where Claude Sonnet generates an intelligent, personalized workout plan for the user.

The workout plan is returned from the Lambda function to the React frontend, where it’s displayed to the user.

How we used AWS in our solution

For the front-end, we created a new Amplify app and selected the GitHub option as the source. We connected the repository and designated the main branch. We configured environment variables directly within the Amplify console to securely manage API keys and backend URLs.

The backend infrastructure was designed using AWS’ serverless and LLM services. The AWS Lambda serves as the computing layer that handles the direct HTTP requests from the frontend, processes user data, fetches exercises from an external API, and interacts with Bedrock. Amazon Bedrock enables access to Claude Sonnet, which is the model we use to generate an intelligent, detailed, and personalized workout plan.

NOTE: The returned workout plan in our Lambda is hard coded on submission time because when we returned the real workout plan, we were encountering some JSON -related bugs (unrelated to the AWS parts), and didn’t have time to come up with a solution. We wanted to emulate what should’ve happened in our demo, which is why we hard coded some exercises for the plan. Ideally, the workout plan would’ve been returned and presented to the user dynamically.

Track 2: AI Assistant & Automation

Built With

Share this project:

Updates