2.5 KiB
2.5 KiB
Codebase Overview
Project: jachty3.pagedev.pl — Yacht Booking System Analyzed: 2026-05-05
What This Is
A custom WordPress plugin (yacht-booking-system) that provides yacht rental booking management with a FullCalendar frontend, REST API backend, Google Calendar bidirectional sync, and iCal feed export/import. Built for a Polish yacht charter company at https://jachty.pagedev.pl.
Primary Entry Point
wp-content/plugins/yacht-booking-system/yacht-booking-system.php
- Defines 5 plugin constants (
YACHT_BOOKING_VERSION,YACHT_BOOKING_PLUGIN_DIR, etc.) - Registers a custom
spl_autoload_registerfor theYachtBooking\namespace →includes/class-*.php - Fires
Yacht_Booking::get_instance()onplugins_loaded - Activation hook: runs
Installer::install(), schedules GCal and iCal cron jobs, flushes rewrite rules
Core Data Model
Two parallel stores:
- WordPress CPTs (in
wp_posts+wp_postmeta):yacht— meta: capacity, price_per_day, gcal_id, features, ical_token, ical_import_urlyacht_booking— meta: yacht_id, start_date, end_date, status, customer_*, total_price, gcal_event_id, sourceyacht_inquiry— meta: yacht_id, customer_*, preferred_dates, message (hidden from WP admin UI)
- Custom availability table
wp_yacht_availability:- One row per yacht-date pair; only
bookedandblockedrows stored; absence = available - Unique key on
(yacht_id, date)
- One row per yacht-date pair; only
User-Facing Features
- FullCalendar month view embedded via
[yacht_calendar yacht_id="X"]shortcode or Elementor widget - Booking form (date selection → customer details → submission via REST)
- Inquiry form (non-binding contact, sends email to admin)
- iCal feed per yacht at
{home_url}/yacht-ical/{yacht_id}/{token}.ics
Admin Features
- Custom admin menu with 6 pages: Bookings list, Inquiries list, Yachts list/edit, Settings, Google Calendar
- Approve/Cancel/Delete bookings with PRG pattern
- CSV export of bookings
- Google Calendar bidirectional sync (OAuth 2.0, manual + hourly cron)
- iCal import from external URLs per yacht (hourly cron)
- Email notifications: admin on booking create, customer on status change
Language / Locale
UI language: Polish. All strings use __() / esc_html__() with yacht-booking text domain.
Team / Deployment
Single developer. FTP deploy via ftp-kr VS Code extension. No CI/CD pipeline. Production: https://jachty.pagedev.pl. No Docker, no local environment config detected.