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