How mariokehl/gymportal-io works
gymportal.io is a gym-management application for staff and members. Staff use the web interface to manage organizations, members, memberships, access, and finances; members use the PWA for account and check-in functions. Public gym widgets support registration and payment, with Mollie handling payment processing. The graph retains these major product branches and the central service/model layer. Wiring is inferred only where supported by sampled code or the repository structure; unsampled subsystem links are intentionally limited.
Main entry points: MemberController.php Member management · WidgetController.php Gym registration widget · Member.php Member records · Web Web controllers
Components 24
Gym administration
- Admin interface
resources/js/Pages - Web controllers
app/Http/Controllers/Web - Plans and add-ons
app/Models/MembershipPlan.php
Member lifecycle
- Member records
app/Models/Member.php - Member management
app/Http/Controllers/Web/MemberController.php - Membership services
app/Services/MembershipService.php - Contract handling
app/Services/ContractService.php - Member email
app/Mail/Dispatching/MemberMailDispatcher.php - Gym and member data
app/Models/Gym.php
Payments and billing
- Payment workflows
app/Http/Controllers/Web/PaymentController.php - Payment services
app/Services/PaymentService.php - Payment records
app/Models/Payment.php - Payment webhook
app/Http/Controllers/Api/V1/Public/MollieWebhookController.php
Access and check-in
- Member PWA API
app/Http/Controllers/Pwa - Check-in services
app/Services/StationCheckInService.php - Check-in records
app/Models/CheckIn.php
External integrations
- Mollie API
- Gym registration widget
app/Http/Controllers/Api/WidgetController.php - Widget experience
resources/views/widget/form.blade.php - Google Sheets
- Check-in sync job
app/Jobs/SyncCheckInsToGoogleSheet.php
Other components
- Gym staff
- Gym members
- Widget visitor
Connections 27
- Gym staff → Admin interface: uses
- Admin interface → Web controllers: requests
- Web controllers → Member management: dispatches
- Member management → Member records: reads and writes
- Member management → Membership services: manages memberships
- Membership services → Plans and add-ons: uses plans
- Membership services → Member records: updates membership
- Member management → Contract handling: handles contracts
- Contract handling → Member email: dispatches mail
- Web controllers → Payment workflows: dispatches
- Payment workflows → Payment services: processes payments
- Payment services → Payment records: creates and updates
- Payment services → Mollie API: requests payments
- Mollie API → Payment webhook: sends status events
- Payment webhook → Payment records: updates status
- Payment webhook → Member records: updates member status
- Gym members → Member PWA API: authenticates and checks in
- Member PWA API → Member records: authenticates member
- Member PWA API → Check-in services: records check-in
- Check-in services → Check-in records: writes check-in
- Widget visitor → Widget experience: uses
- Widget experience → Gym registration widget: submits registration
- Gym registration widget → Gym and member data: validates gym
- Gym registration widget → Plans and add-ons: lists plans
- Gym registration widget → Mollie API: initiates payment
- Check-in sync job → Google Sheets: syncs check-ins
- Check-in sync job → Check-in records: reads check-ins