66 lines
2.6 KiB
Markdown
66 lines
2.6 KiB
Markdown
# 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 <file>` 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
|