Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from model_api import query_model | |
| from prompt_builder import build_prompt | |
| # ----------------------------------- | |
| # PAGE CONFIG | |
| # ----------------------------------- | |
| st.set_page_config( | |
| page_title="FitPlan AI", | |
| page_icon="💪", | |
| layout="wide" | |
| ) | |
| # ----------------------------------- | |
| # SIDEBAR | |
| # ----------------------------------- | |
| st.sidebar.title("💪 FitPlan AI") | |
| page = st.sidebar.radio( | |
| "Navigation", | |
| ["Fitness Form", "BMI Result", "AI Workout Plan"] | |
| ) | |
| # ----------------------------------- | |
| # PAGE 1 FORM | |
| # ----------------------------------- | |
| if page == "Fitness Form": | |
| st.title("Fitness Profile") | |
| name = st.text_input("Name") | |
| age = st.number_input("Age", min_value=1, max_value=100) | |
| gender = st.selectbox( | |
| "Gender", | |
| ["Male", "Female"] | |
| ) | |
| height = st.number_input("Height (cm)", min_value=0.0) | |
| weight = st.number_input("Weight (kg)", min_value=0.0) | |
| goal = st.selectbox( | |
| "Goal", | |
| ["Build Muscle", "Weight Loss", "Strength Gain", "Abs Building", "Flexible"] | |
| ) | |
| fitness_level = st.selectbox( | |
| "Fitness Level", | |
| ["Beginner", "Intermediate", "Advanced"] | |
| ) | |
| equipment = st.multiselect( | |
| "Equipment", | |
| ["Dumbbells", "Yoga Mat", "Resistance Band", "None"] | |
| ) | |
| if st.button("Submit"): | |
| if name == "" or height == 0 or weight == 0: | |
| st.error("Fill all fields") | |
| else: | |
| prompt, bmi, bmi_status = build_prompt( | |
| name, | |
| gender, | |
| age, | |
| height, | |
| weight, | |
| goal, | |
| fitness_level, | |
| equipment | |
| ) | |
| st.session_state.prompt = prompt | |
| st.session_state.bmi = bmi | |
| st.session_state.bmi_status = bmi_status | |
| st.session_state.name = name | |
| st.session_state.age = age | |
| st.success("Submitted") | |
| # ----------------------------------- | |
| # PAGE 2 BMI RESULT | |
| # ----------------------------------- | |
| elif page == "BMI Result": | |
| if "bmi" not in st.session_state: | |
| st.warning("Fill form first") | |
| else: | |
| st.write("Name:", st.session_state.name) | |
| st.write("Age:", st.session_state.age) | |
| st.write("BMI:", round(st.session_state.bmi, 2)) | |
| st.write("Category:", st.session_state.bmi_status) | |
| # ----------------------------------- | |
| # PAGE 3 AI WORKOUT PLAN | |
| # ----------------------------------- | |
| elif page == "AI Workout Plan": | |
| st.title("AI Generated Workout Plan") | |
| if "prompt" not in st.session_state: | |
| st.warning("Fill form first") | |
| else: | |
| if st.button("Generate Plan"): | |
| with st.spinner("Generating..."): | |
| result = query_model( | |
| st.session_state.prompt | |
| ) | |
| st.write(result) | |