Files
Martin Slachta 0d829845c4 initial
2026-06-11 19:03:29 +02:00

2.2 KiB

Reservair

A WordPress plugin for managing reservations and bookings. Visitors submit reservation requests through a Gutenberg block; administrators manage everything through a dedicated admin panel.

Requirements

  • WordPress 6.7+
  • PHP 7.4+
  • Composer
  • Node.js / npm

Admin Menu

Page Slug Description
Reservations (root) reservations-settings Services — the reservable resources
Timetables timetable-settings Time-block schedules with capacity and repeating windows
Forms forms-settings Custom reservation form definitions
Reservations reservations-list All submissions with accept / reject actions
Google Calendar rsv-google-calendar OAuth2 connect and webhook configuration

REST API

All routes are registered under the reservations/v1 namespace.

Resource Controller
/service RsvServicesController
/service-type RsvServiceTypeController
/reservation RsvReservationController
/timetable RsvTimetableDefinitionController
/timetable/availability RsvTimetableAvailabilityController
/timetable/capacity RsvTimetableCapacityController
/timetable/reservation RsvTimetableReservationController
/form RsvFormController
/form-definition RsvFormDefinitionController
/google-callback OAuth2 redirect handler
/google-calendar-hook Google Calendar push notification webhook

Linting

Static analysis is handled by Psalm and covers both src/ (frontend PHP) and includes/ (plugin PHP).

vendor/bin/psalm

Pre-existing issues are suppressed in psalm-baseline.xml. New code must introduce no new errors — any issue not in the baseline will cause a non-zero exit.

Updating the baseline — after intentionally fixing pre-existing issues, shrink the baseline so they don't regress:

vendor/bin/psalm --update-baseline

Psalm is part of the lint Composer script, alongside phpcs and phpstan (those require separate installation):

composer run lint

Running Tests

See tests/README.md for setup and usage.

Build

npm install
npm run build
composer install