Fix all pages#68
Open
hassankhanafer123 wants to merge 28 commits into
Open
Conversation
* add realistic sample database data * add AUTO_INCREMENT to the single-column surrogate key tables
* add pinned requirements.txt from pyproject.toml * feat(app): add Pickup Player dashboard with court map and check-in Add Persona 1 (Marcus Reyes) Streamlit dashboard addressing two user stories: viewing a live map of nearby courts with player counts, and checking in/out at courts. Replaces template personas in Home.py with HoopSpot-specific pickup player role. * fix(app): switch map to st.map and add filter labels Replace pydeck ScatterplotLayer with st.map for reliable tile rendering without a Mapbox token. Add visible labels to the skill level, court type, and sort dropdowns. * fix(app): align search input with filter dropdowns Show the Search label so all four filter inputs share the same vertical baseline. * feat(app): show court details and reviews in a dialog popup Replace the scroll-to-bottom detail panel with a @st.dialog modal that opens on click. Add court reviews with avg rating, condition score, and the 5 most recent player comments. * feat(app): add Re-center button to reset map view Use st.empty() to allow destroying and recreating the map widget, which resets pan/zoom back to the default center position. * unlist About page * feat(app): introduce shared styles module and dark UI refresh Centralizes theming in modules/styles.py and applies an Outfit-based dark theme across Home and Pickup Home, with a pydeck map, status badges, and a styled player profile card.
* add pinned requirements.txt from pyproject.toml * feat(app): add Pickup Player dashboard with court map and check-in Add Persona 1 (Marcus Reyes) Streamlit dashboard addressing two user stories: viewing a live map of nearby courts with player counts, and checking in/out at courts. Replaces template personas in Home.py with HoopSpot-specific pickup player role. * fix(app): switch map to st.map and add filter labels Replace pydeck ScatterplotLayer with st.map for reliable tile rendering without a Mapbox token. Add visible labels to the skill level, court type, and sort dropdowns. * fix(app): align search input with filter dropdowns Show the Search label so all four filter inputs share the same vertical baseline. * feat(app): show court details and reviews in a dialog popup Replace the scroll-to-bottom detail panel with a @st.dialog modal that opens on click. Add court reviews with avg rating, condition score, and the 5 most recent player comments. * feat(app): add Re-center button to reset map view Use st.empty() to allow destroying and recreating the map widget, which resets pan/zoom back to the default center position. * unlist About page * feat(app): introduce shared styles module and dark UI refresh Centralizes theming in modules/styles.py and applies an Outfit-based dark theme across Home and Pickup Home, with a pydeck map, status badges, and a styled player profile card. * feat(app): add player profile dashboard with skill trend Addresses the pickup-player user story: view personal stats (games played, wins, skill rank) to track improvement over time. Adds a new Profile page with hero, stat cards, a Plotly skill-score line chart, and a recent-games list, plus two supporting API endpoints that join GameParticipation with Court/Game and derive a skill trajectory from the player's result history. * feat(db): seed Marcus Reyes history and fix reserved-word CTEs Rebrands PlayerId 1 as Marcus Reyes (Roxbury) and adds 42 games across Jan-Apr 2026 so the Pickup Profile dashboard renders with meaningful stats (47 games, 29W/18L) and an upward skill trend. Also renames two 'generated' CTEs to 'gen' so MySQL 9 accepts them (reserved word), and adds a CLAUDE.md noting the MySQL 9 reserved-word gotcha and the down -v requirement for re-running init scripts. * refactor(app): densify profile layout for desktop viewport Puts the hero and three stat cards side-by-side in a single top row, and splits the skill chart and recent-games list into a two-column bottom row so the full dashboard fits above the fold on a standard desktop. Widens the container to 1400px, tightens paddings and font sizes, restores enough top padding to clear the Streamlit header, and swaps the conic-gradient avatar ring for a solid orange border. * polish(app): align profile cards to a common height Treats the hero as a proper card (matching stat-card border, bg, and accent line) and pins every top-row card to min-height 118px with vertically centered content so the hero, Games, Win/Loss, and Skill Score cards read as one row. Shrinks the avatar to 72px and the name to 1.2rem so the hero sits at the same scale as the stat values. Replaces the wrapping "▲ trending" label with a single arrow inline with the skill value, and rebalances the bottom split (chart 2.6 / recent games 1) so the list no longer extends past the chart. Also parses Flask's RFC 1123 date format so recent-games subtitles show "yesterday" / "4 days ago" instead of raw HTTP date strings.
Flask's jsonify serializes DECIMAL columns as strings, so summing Rating/ConditionRating raised TypeError in the court dialog.
Drops the logo image from the sidebar nav and deletes the unused Political Strategist home and World Bank visualization pages.
Add leaderboard and tournaments sidebar links under a new competitive_player role, and a matching Aaliyah persona card on Home.py that routes to the leaderboard.
Zach persona 3
…nt, and fix admin API routes
Success message was dropped because st.success() fired immediately before st.rerun(), which discards buffered UI. Now stored in session_state so it persists through the rerun. Also renames 'Your Score (points)' to 'Points Scored' and applies consistent page styling via inject_css. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…lookup - Store success message in session_state so it survives st.rerun() - Rename 'Your Score (points)' to 'Points Scored' - Add 'Unknown' default to court_ids key to match court_names list Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Manage Courts,Manage Reviews,Admin Home) to usecorrect API routes and field names
Write Reviewpage — lets players submit reviews for courtsLog Gamepage — lets players log pickup game resultsCompetitive Homepage — home view for competitive personaMy Gamespage — displays a player's logged game historyManage Playerspage — admin tool for managing player accountsChanges
02_Write_Review.py— new page03_Log_Game.py— new page10_Competitive_Home.py— new page13_My_Games.py— new page20_Admin_Home.py— fixed API integration22_Manage_Courts.py— fixed API routes + new page additions23_Manage_Reviews.py— fixed API routes24_Manage_Players.py— new page