How berufsbildung-basel/parkit-service works
Parkit Service manages parking spots, vehicles, users, reservations, and billing. Users reserve spots through the web app or API; the reservation controller handles reservation actions and sends Slack notifications. Administrative and user billing surfaces manage invoices, while scheduled billing and invoice-status synchronization connect to CashCtrl. The graph includes documented billing capabilities and sampled controller behavior; unsampled billing-runner and route relationships are shown only as unverified where needed.
Main entry points: reservations_controller.rb Reservation actions · cashctrl_client.rb CashCtrl client · invoices_controller.rb Invoice administration · parking_spots_controller.rb Availability API
Components 21
Access and interfaces
- Web controllers
app/controllers - Versioned API
app/controllers/api/v1 - Authentication
app/controllers/users
Parking operations
- Reservation actions
app/controllers/reservations_controller.rb - Availability API
app/controllers/api/v1/parking_spots_controller.rb - Reservation rules
app/models/reservation.rb - Reservation validation
app/validators/reservation_validator.rb - Parking data
app/models/parking_spot.rb - Reservation interface
app/javascript/parking-spot-status/main.js - Application database
db/schema.rb
Billing
- Admin billing
app/controllers/admin/billing_controller.rb - Invoice administration
app/controllers/admin/invoices_controller.rb - User billing
app/controllers/user_billing_controller.rb - Billing runner
app/services/billing_runner.rb - Invoice status sync
app/services/invoice_status_sync.rb - Status sync job
app/jobs/invoice_status_sync_job.rb - Invoice records
app/models/invoice.rb
External integrations
- CashCtrl client
app/services/cashctrl_client.rb - CashCtrl
- Slack
Other components
- User
Connections 19
- User → Web controllers: uses
- User → Versioned API: calls
- User → Authentication: signs in
- Web controllers → Reservation actions: routes to
- Versioned API → Availability API: routes to
- Reservation actions → Reservation rules: creates
app/controllers/reservations_controller.rb - Reservation actions → Slack: notifies
app/controllers/reservations_controller.rb - Reservation actions → Reservation interface: renders form for
- Availability API → Reservation validation: validates
app/controllers/api/v1/parking_spots_controller.rb - Availability API → Parking data: queries
app/controllers/api/v1/parking_spots_controller.rb - Admin billing → Billing runner: runs billing
- Invoice administration → CashCtrl client: requests invoice actions
app/controllers/admin/invoices_controller.rb - Invoice administration → Invoice status sync: refreshes status
app/controllers/admin/invoices_controller.rb - Invoice administration → Invoice records: reads and updates
app/controllers/admin/invoices_controller.rb - User billing → Invoice records: lists invoices
- Status sync job → Invoice status sync: runs sync
- Invoice status sync → CashCtrl client: reads remote status
- Billing runner → CashCtrl client: creates invoices
- CashCtrl client → CashCtrl: integrates with