GYMAPP / app.py
ibrahim yıldız
Update app.py
317d573 verified
import streamlit as st
import random
# Sample data for users
users = [
{"name": "John", "age": 23, "bio": "Loves weightlifting and HIIT workouts.", "interests": ["Weightlifting", "HIIT"], "preferences": ["Dumbbells", "Squat Rack"], "picture": "https://i0.wp.com/www.muscleandfitness.com/wp-content/uploads/2019/08/John-Cena-Sitting-Down-Resting.jpg?quality=86&strip=all"},
{"name": "Emma", "age": 21, "bio": "Yoga enthusiast and casual runner.", "interests": ["Yoga", "Running"], "preferences": ["Yoga Mat", "Treadmill"], "picture": "https://static01.nyt.com/images/2020/02/20/arts/20emma-1/20emma-1-mediumSquareAt3X-v2.jpg"},
{"name": "Mike", "age": 25, "bio": "Powerlifter looking for a sparring partner.", "interests": ["Powerlifting", "Sparring"], "preferences": ["Barbell", "Bench Press"], "picture": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTU_PQKNX063OJE_cg6OOPKKicS6PTQXYx8Cg&s"},
{"name": "Sophia", "age": 22, "bio": "Pilates and bodyweight exercises are my thing!", "interests": ["Pilates", "Bodyweight"], "preferences": ["Resistance Bands", "Pull-Up Bar"], "picture": "https://alldus.com/wp-content/uploads/2022/10/shutterstock_754222927-min-scaled.jpg"},
{"name": "Chris", "age": 24, "bio": "Big on calisthenics and cardio challenges.", "interests": ["Calisthenics", "Cardio"], "preferences": ["Parallel Bars", "Elliptical"], "picture": "https://hips.hearstapps.com/hmg-prod/images/chris-64a6d63b7263d.png"},
{"name": "Liam", "age": 26, "bio": "Always up for CrossFit and obstacle races!", "interests": ["CrossFit", "Obstacle Races"], "preferences": ["Kettlebells", "Climbing Rope"], "picture": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR9KN-NzG_YmTGbXUEjgKfUWgX2vnZQXKhx1A&s"},
{"name": "Olivia", "age": 23, "bio": "Focused on strength and mobility training.", "interests": ["Strength Training", "Mobility"], "preferences": ["Foam Roller", "Deadlift Platform"], "picture": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRbNHL7m4G1omr3rsA3-l3kGwA0iK_YIym9-w&s"},
]
# Function to get a random user
def get_random_user(excluded_users):
available_users = [user for user in users if user["name"] not in excluded_users]
return random.choice(available_users) if available_users else None
# App interface
st.title("GrinderGang Gym V3")
st.write("Find your perfect gym buddy! Swipe through potential partners and see who matches your vibe.")
# Session state to keep track of seen profiles, matches, chat logs, and events
if "seen_users" not in st.session_state:
st.session_state["seen_users"] = []
if "liked_users" not in st.session_state:
st.session_state["liked_users"] = []
if "chat_logs" not in st.session_state:
st.session_state["chat_logs"] = {}
if "events" not in st.session_state:
st.session_state["events"] = []
if "posts" not in st.session_state:
st.session_state["posts"] = []
current_user = get_random_user(st.session_state["seen_users"])
if current_user:
st.image(current_user["picture"], width=150)
st.write(f"### {current_user['name']}, {current_user['age']} years old")
st.write(f"*{current_user['bio']}*")
st.write("**Interests:** " + ", ".join(current_user['interests']))
st.write("**Equipment Preferences:** " + ", ".join(current_user['preferences']))
col1, col2 = st.columns(2)
with col1:
if st.button("👍 Like"):
st.session_state["seen_users"].append(current_user["name"])
st.session_state["liked_users"].append(current_user)
st.session_state["chat_logs"][current_user["name"]] = [] # Initialize chat log
st.success(f"You liked {current_user['name']}!")
with col2:
if st.button("👎 Pass"):
st.session_state["seen_users"].append(current_user["name"])
st.info(f"You passed on {current_user['name']}.")
else:
st.write("No more gym buddies to show. Come back later!")
# Display liked users with chat feature
if st.session_state["liked_users"]:
st.write("### Your Matches")
for user in st.session_state["liked_users"]:
st.image(user["picture"], width=100)
st.write(f"**{user['name']}**, {user['age']} years old")
st.write(f"*{user['bio']}*")
st.write("**Interests:** " + ", ".join(user['interests']))
st.write("**Equipment Preferences:** " + ", ".join(user['preferences']))
with st.expander(f"Chat with {user['name']}"):
chat_log = st.session_state["chat_logs"][user["name"]]
for message in chat_log:
st.write(message)
new_message = st.text_input(f"Send a message to {user['name']}", key=f"chat_{user['name']}")
if st.button(f"Send to {user['name']}", key=f"send_{user['name']}"):
if new_message:
chat_log.append(f"You: {new_message}")
st.session_state["chat_logs"][user["name"]] = chat_log
st.success("Message sent!")
# Event creation feature - Post your workout
st.write("### Post Your Workout")
workout_name = st.text_input("Workout Name", key="workout_name")
workout_description = st.text_area("Workout Description", key="workout_description")
workout_date = st.date_input("Workout Date", key="workout_date")
workout_time = st.time_input("Workout Time", key="workout_time")
if st.button("Post Workout"):
if workout_name and workout_description:
workout = {
"name": workout_name,
"description": workout_description,
"date": workout_date,
"time": workout_time
}
st.session_state["events"].append(workout)
st.success(f"Workout '{workout_name}' posted successfully!")
else:
st.error("Please provide both a workout name and description.")
if st.session_state["events"]:
st.write("### Upcoming Workouts")
for event in st.session_state["events"]:
st.write(f"**{event['name']}** - {event['date']} at {event['time']}")
st.write(f"*{event['description']}*")
# Post Feature - Videos, Meals, and Music
st.write("### Share Your Gym Journey")
post_type = st.selectbox("What do you want to share?", ["Workout Video", "Dance Celebration", "Meal Prep Recipe", "Workout Music"])
post_description = st.text_area("Describe your post", key="post_description")
post_link = st.text_input("Link to video, recipe, or music (optional)", key="post_link")
if st.button("Share Post"):
if post_description:
post = {
"type": post_type,
"description": post_description,
"link": post_link
}
st.session_state["posts"].append(post)
st.success(f"Your {post_type.lower()} has been shared!")
else:
st.error("Please provide a description for your post.")
if st.session_state["posts"]:
st.write("### Community Posts")
for post in st.session_state["posts"]:
st.write(f"**{post['type']}**")
st.write(f"*{post['description']}*")
if post['link']:
st.write(f"[View More]({post['link']})")