diff --git a/src/app.py b/src/app.py index 4ebb1d9..bd8aa91 100644 --- a/src/app.py +++ b/src/app.py @@ -38,6 +38,45 @@ "schedule": "Mondays, Wednesdays, Fridays, 2:00 PM - 3:00 PM", "max_participants": 30, "participants": ["john@mergington.edu", "olivia@mergington.edu"] + }, + # Sports related activities + "Soccer Team": { + "description": "Join the school soccer team and compete in local leagues", + "schedule": "Tuesdays and Thursdays, 4:00 PM - 5:30 PM", + "max_participants": 18, + "participants": ["lucas@mergington.edu", "mia@mergington.edu"] + }, + "Basketball Club": { + "description": "Practice basketball skills and play friendly matches", + "schedule": "Wednesdays, 3:30 PM - 5:00 PM", + "max_participants": 15, + "participants": ["liam@mergington.edu", "ava@mergington.edu"] + }, + # Artistic activities + "Art Club": { + "description": "Explore painting, drawing, and other visual arts", + "schedule": "Mondays, 3:30 PM - 5:00 PM", + "max_participants": 16, + "participants": ["noah@mergington.edu", "isabella@mergington.edu"] + }, + "Drama Society": { + "description": "Participate in school plays and drama workshops", + "schedule": "Fridays, 4:00 PM - 5:30 PM", + "max_participants": 20, + "participants": ["amelia@mergington.edu", "jack@mergington.edu"] + }, + # Intellectual activities + "Mathletes": { + "description": "Compete in math competitions and solve challenging problems", + "schedule": "Thursdays, 3:30 PM - 4:30 PM", + "max_participants": 10, + "participants": ["ethan@mergington.edu", "charlotte@mergington.edu"] + }, + "Science Club": { + "description": "Conduct experiments and explore scientific concepts", + "schedule": "Wednesdays, 4:00 PM - 5:00 PM", + "max_participants": 14, + "participants": ["benjamin@mergington.edu", "harper@mergington.edu"] } } @@ -62,6 +101,10 @@ def signup_for_activity(activity_name: str, email: str): # Get the specific activity activity = activities[activity_name] + # Validate student is not already signed up + if email in activity["participants"]: + raise HTTPException(status_code=400, detail="Already signed up for this activity") + # Add student activity["participants"].append(email) return {"message": f"Signed up {email} for {activity_name}"} diff --git a/src/static/app.js b/src/static/app.js index dcc1e38..d5e1c35 100644 --- a/src/static/app.js +++ b/src/static/app.js @@ -12,13 +12,15 @@ document.addEventListener("DOMContentLoaded", () => { // Clear loading message activitiesList.innerHTML = ""; + activitySelect.innerHTML = ""; // <-- Add this line // Populate activities list Object.entries(activities).forEach(([name, details]) => { const activityCard = document.createElement("div"); activityCard.className = "activity-card"; - const spotsLeft = details.max_participants - details.participants.length; + const participants = Array.isArray(details.participants) ? details.participants : []; + const spotsLeft = details.max_participants - participants.length; activityCard.innerHTML = `