Files
adsPRO/.paul/codebase/tech-stack.md
2026-05-06 23:19:35 +02:00

48 lines
2.3 KiB
Markdown

# Tech Stack
## Backend
| Component | Version | Notes |
|---|---|---|
| PHP | 5.6+ assumed (no explicit constraint) | No `composer.json`, no `declare(strict_types)` |
| MySQL | unspecified | Schema in [migrations/](migrations/) |
| Medoo ORM | 1.7.10 | [libraries/medoo/medoo.php](libraries/medoo/medoo.php), used via global `$mdb` |
| RedBeanPHP | bundled | [libraries/rb.php](libraries/rb.php), used in [api.php](api.php) and [cron.php](cron.php) |
| PHPMailer | bundled | [libraries/phpmailer/](libraries/phpmailer/) |
**Autoloader:** custom `spl_autoload_register` in [index.php](index.php) maps namespaces to `autoload/{layer}/class.{Name}.php`. No Composer.
## Frontend
| Library | Version | Source |
|---|---|---|
| jQuery | 3.6.0 | CDN |
| jQuery UI | bundled | [libraries/framework/vendor/jquery/jquery_ui/](libraries/framework/vendor/jquery/jquery_ui/) |
| Bootstrap | 5 (active) + 4.1.3 (legacy) | CDN + [libraries/bootstrap-4.1.3/](libraries/bootstrap-4.1.3/) |
| DataTables | 2.1.7 | CDN |
| Highcharts | latest | CDN |
| Select2 | 4.1.0-rc.0 | CDN + [libraries/select2/](libraries/select2/) |
| Font Awesome | 6.5.1 (active) + 4.7.0 (legacy) | CDN + [libraries/font-awesome-4.7.0/](libraries/font-awesome-4.7.0/) |
| Moment.js | 2.18.1 | CDN + [libraries/moment/](libraries/moment/) |
| Date Range Picker | bundled | [libraries/daterange/](libraries/daterange/) |
| CKEditor | bundled | [libraries/ckeditor/](libraries/ckeditor/) |
Custom assets: [libraries/adspro-dialog.js](libraries/adspro-dialog.js), [libraries/functions.js](libraries/functions.js), [libraries/xlsxwriter.class.php](libraries/xlsxwriter.class.php).
## Styling
- SCSS: [layout/style.scss](layout/style.scss) → [layout/style.css](layout/style.css) (manual compilation; no automated build pipeline)
- Source map present: [layout/style.css.map](layout/style.css.map)
## Configuration
- [config.php](config.php) — DB credentials, SMTP settings (plaintext; see [concerns.md](concerns.md))
- `settings` DB table — runtime config, API keys, cron state, feature flags. Accessed via `\services\GoogleAdsApi::get_setting($key)` / `set_setting($k, $v)` (used globally despite the class name).
## Tooling absent
- No Composer / package.json / lockfiles
- No PHPUnit / phpcs / phpstan
- No `.editorconfig`, no `.github/workflows`, no CI
- No linting / formatting config