Martas f4d3972d07 (#2) - forms improvements (#4)
Co-authored-by: Martin Slachta <martin.slachta@outlook.com>
Reviewed-on: #4
2026-06-12 14:05:49 +00:00
2026-06-11 19:03:29 +02:00
2026-06-12 14:05:49 +00:00
2026-06-11 19:03:29 +02:00
2026-06-12 14:05:49 +00:00
2026-06-12 14:05:49 +00:00
2026-06-12 14:05:49 +00:00
2026-06-11 19:03:29 +02:00
2026-06-12 14:05:49 +00:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-12 14:05:49 +00:00
2026-06-12 14:05:49 +00:00
2026-06-12 14:05:49 +00:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00
2026-06-11 19:03:29 +02:00

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
S
Description
No description provided
Readme 609 KiB
Languages
PHP 68.2%
JavaScript 14.8%
Python 6.5%
Hurl 5%
CSS 4.4%
Other 1%