How escalacodes/picklepro works
PicklePro is a court-booking application: visitors browse courts and availability, users authenticate and book or manage reservations, and administrators manage courts, bookings, payments, users, schedules, and site rules. The React client reaches Spring REST controllers through a shared API client; controllers perform domain checks and read or write PostgreSQL through repositories. The README documents the broader admin capabilities; controller-level wiring is sampled for bookings, courts, authentication, users, and settings, while other UI/API details are documented but not sampled.
Main entry points: api.js API client · App.jsx Routes and layout · BookingController.java Booking endpoints · CourtController.java Court endpoints
Components 25
Web client
- Routes and layout
frontend/src/App.jsx - Login / register
frontend/src/components/AuthModal.jsx - Auth state
frontend/src/context/AuthContext.jsx - Settings state
frontend/src/context/SettingsContext.jsx - API client
frontend/src/api.js - Court discovery
frontend/src/pages/Courts.jsx - Booking flow
frontend/src/pages/Book.jsx - My bookings
frontend/src/pages/MyBookings.jsx - Profile settings
frontend/src/pages/Profile.jsx - Admin navigation
frontend/src/pages/admin/AdminDashboard.jsx - Admin tools
frontend/src/pages/admin
Booking domain
- Court endpoints
backend/src/main/java/com/picklepro/controller/CourtController.java - Booking endpoints
backend/src/main/java/com/picklepro/controller/BookingController.java
Venue administration
- Settings endpoints
backend/src/main/java/com/picklepro/controller/SettingsController.java
Identity and access
- Auth endpoints
backend/src/main/java/com/picklepro/controller/AuthController.java - User endpoints
backend/src/main/java/com/picklepro/controller/UserController.java - JWT request filter
backend/src/main/java/com/picklepro/security/JwtAuthFilter.java - JWT utilities
backend/src/main/java/com/picklepro/security/JwtUtils.java - Security rules
backend/src/main/java/com/picklepro/config/SecurityConfig.java
Persistence
- Booking repository
backend/src/main/java/com/picklepro/repository/BookingRepository.java - Court repository
backend/src/main/java/com/picklepro/repository/CourtRepository.java - User repository
backend/src/main/java/com/picklepro/repository/UserRepository.java - Settings repository
backend/src/main/java/com/picklepro/repository/SettingsRepository.java - PostgreSQL
Other components
- Visitor / user
Connections 38
- Visitor / user → Routes and layout: uses
- Routes and layout → Court discovery: routes to
- Routes and layout → Booking flow: routes to
- Routes and layout → My bookings: routes to
- Routes and layout → Profile settings: routes to
- Routes and layout → Admin navigation: routes to
- Admin navigation → Admin tools: navigates
- Visitor / user → Login / register: submits credentials
- Login / register → Auth state: invokes
- Auth state → API client: requests
- Court discovery → API client: requests
- Booking flow → API client: requests
- My bookings → API client: requests
- Profile settings → API client: requests
- Admin tools → API client: requests
- Settings state → API client: loads settings
- API client → Auth endpoints: HTTP requests
- API client → User endpoints: HTTP requests
- API client → Court endpoints: HTTP requests
- API client → Booking endpoints: HTTP requests
- API client → Settings endpoints: HTTP requests
- Auth endpoints → User repository: reads / writes
- Auth endpoints → JWT utilities: creates token
- User endpoints → User repository: reads / writes
- Booking endpoints → Booking repository: reads / writes
- Booking endpoints → Court repository: checks court
- Booking endpoints → User repository: loads user
- Booking endpoints → Settings repository: loads rules
- Court endpoints → Court repository: reads / writes
- Court endpoints → Booking repository: checks reservations
- Court endpoints → Settings repository: loads slot rules
- Settings endpoints → Settings repository: reads / writes
- Security rules → JWT request filter: configures
- JWT request filter → JWT utilities: validates token
- Booking repository → PostgreSQL: persists bookings
- Court repository → PostgreSQL: persists courts
- User repository → PostgreSQL: persists users
- Settings repository → PostgreSQL: persists settings