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']})")