# Technology Stack **Analysis Date:** 2026-05-05 ## Languages - **PHP 7.4+** — all server-side plugin logic (`Requires PHP: 7.4` in plugin header) - **JavaScript (ES5/IIFE)** — frontend calendar + booking form (`calendar.js`), admin panel JS (`admin.js`) - **SCSS** — frontend calendar styles (source at `frontend/assets/css/calendar.scss`; must be manually compiled) - **SQL** — custom table queries via `$wpdb->prepare()` ## Runtime - **WordPress 6.0+** (`Requires at least: 6.0`) - **Elementor Pro** — optional; plugin checks `class_exists('\Elementor\Plugin')` and degrades gracefully - **MySQL** — custom table + WordPress standard tables ## Key Dependencies | Dependency | Version | How Loaded | |-----------|---------|-----------| | FullCalendar | 6.1.10 | jsDelivr CDN | | FullCalendar Polish locale | 6.1.10 | jsDelivr CDN | | jQuery | WP bundled | WordPress core | | Google Calendar API v3 | — | Native HTTP (no SDK) | **CDN URLs:** - `https://cdn.jsdelivr.net/npm/fullcalendar@6.1.10/index.global.min.js` - `https://cdn.jsdelivr.net/npm/fullcalendar@6.1.10/index.global.min.css` - `https://cdn.jsdelivr.net/npm/@fullcalendar/core@6.1.10/locales/pl.global.min.js` ## Plugin Constants Defined in `yacht-booking-system.php` (lines 23–27): ```php YACHT_BOOKING_VERSION = '1.0.0' YACHT_BOOKING_PLUGIN_FILE = __FILE__ YACHT_BOOKING_PLUGIN_DIR = plugin_dir_path(__FILE__) YACHT_BOOKING_PLUGIN_URL = plugin_dir_url(__FILE__) YACHT_BOOKING_PLUGIN_BASENAME = plugin_basename(__FILE__) ``` ## Autoloading Custom `spl_autoload_register` (lines 32–56, `yacht-booking-system.php`): - Namespace prefix: `YachtBooking\` - Maps to: `YACHT_BOOKING_PLUGIN_DIR . 'includes/'` - Rule: `YachtBooking\Foo_Bar` → `includes/class-foo-bar.php` - **Only covers `includes/`** — integration and API classes loaded via explicit `require_once` ## Configuration Storage - No `.env` file — all runtime config in `wp_options` - Key options: `yacht_booking_gcal_credentials`, `yacht_booking_gcal_tokens`, `yacht_booking_gcal_calendar_id`, `yacht_booking_gcal_sync_enabled`, `yacht_booking_default_status`, `yacht_booking_enable_notifications` ## Build Pipeline None. No Composer, no npm, no webpack/vite/esbuild. Assets are static hand-authored files deployed via FTP (`ftp-kr` VS Code extension, config: `.vscode/ftp-kr.json`). ## Platform Requirements - **Dev:** VS Code + ftp-kr, PHP 7.4+ CLI (`php -l ` for syntax checks) - **Production:** PHP 7.4+, MySQL, WordPress 6.0+, shared hosting or VPS - **Note:** OAuth redirect URI hardcoded to `https://jachty.pagedev.pl` — staging/local OAuth will fail