This commit is contained in:
2026-05-06 00:18:37 +02:00
parent 09e0ce8dc0
commit ea77c8ea35
25 changed files with 1996 additions and 34 deletions

65
.paul/codebase/stack.md Normal file
View File

@@ -0,0 +1,65 @@
# 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 2327):
```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 3256, `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