This commit is contained in:
2026-05-10 21:32:38 +02:00
parent d6f5706a9f
commit 80a3cb3814
10 changed files with 1219 additions and 0 deletions

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

@@ -0,0 +1,96 @@
# Technology Stack
**Analysis Date:** 2026-05-10
## Languages
**Primary:**
- PHP 7.4 / 8.2.x runtime — All application code (PrestaShop targets PHP 7.4; current server reports 8.2.12)
- JavaScript (ES5/ES6 transpiled) — Theme assets and module front-end behavior
**Secondary:**
- Smarty templates (`.tpl`) — Front-end rendering layer
- Twig templates — Symfony admin layer
- Sass/SCSS — Theme styling (`themes/leo_gstore/config.rb` Compass config)
- HTML5/CSS3 — Presentation
- SQL (MySQL) — Data layer
## Runtime
**Environment:**
- PHP (declared 7.4 in PrestaShop core; current PHP-CLI 8.2.12) — `app/AppKernel.php`
- Apache web server with `mod_rewrite``.htaccess` (429 lines of rewrite rules)
- MySQL with InnoDB — `app/config/parameters.php`
**Package Manager:**
- Composer (PHP) — `composer.lock` present at root
- npm (JS, theme-only) — `themes/package-lock.json`
## Frameworks
**Core:**
- PrestaShop 1.7.8.11 — `app/AppKernel.php` line 35
- Symfony (FrameworkBundle, SecurityBundle, TwigBundle, MonologBundle, SwiftmailerBundle, DoctrineBundle) — `app/AppKernel.php`
- Doctrine ORM — used for admin/back-office Symfony layer
- Smarty — front-office template engine — `config/smarty.config.inc.php`, `config/smartyfront.config.inc.php`
**Testing:**
- PHPUnit (~5.7) — present only in select PrestaShop modules (`modules/ps_facetedsearch/`, `modules/gamification/`)
- Mockery — `modules/ps_facetedsearch/tests/php/`
- PHPStan via `prestashop/php-dev-tools``modules/*/tests/phpstan/phpstan.neon` (40+ modules)
- **No root-level test setup; custom modules have no tests**
**Build/Dev:**
- Babel 7.0.0-rc.1 — `themes/package-lock.json`
- Compass/Sass — `themes/leo_gstore/config.rb`
- Pre-built theme bundles — `themes/leo_gstore/assets/cache/*.js`, `themes/leo_gstore/assets/cache/*.css`
## Key Dependencies
**Critical (PHP):**
- Guzzle HTTP client (v6/v7) — used by paynow, empikmarketplace, smartsupp
- Symfony components (Cache, DI, YAML, FileSystem) — core + modules
- PSR-7/PSR-11/PSR-15 interfaces — HTTP messaging
- `pay-now-php-sdk` — payment integration in `modules/paynow/`
- `br33f/php-ga4-mp` — GA4 Measurement Protocol — `modules/pdgoogleanalytycs4pro/`
- `libphonenumber-for-php` — phone validation (GA4 enhanced conversions)
- `google/recaptcha``modules/eicaptcha/vendor/google/recaptcha/`
**Critical (JS):**
- jQuery — bundled in theme (`themes/leo_gstore/assets/cache/bottom-*.js`)
- Slick carousel — `themes/leo_gstore/assets/js/custom.js`
- Moment.js — `js/date.js`
- CodeMirror — `modules/advancedpopupcreator/`
## Configuration
**Environment:**
- Database/secrets in `app/config/parameters.php` (plain PHP — **secrets currently committed**, see concerns.md)
- Symfony YAML — `app/config/config.yml`, `app/config/parameters.yml`
- Constants: `config/defines.inc.php` (paths, `_PS_ADMIN_DIR_` etc.)
- Bootstrap: `config/bootstrap.php`, `config/config.inc.php`
- Locale: pl-PL — `app/config/parameters.php`
- DB prefix: `materac_` (schema `admin_drmaterac`)
**Build:**
- Theme assets: pre-bundled to `themes/leo_gstore/assets/cache/`
- No root `composer.json` build pipeline; modules ship pre-built
## Platform Requirements
**Development:**
- Apache + PHP 7.4+ + MySQL stack
- Composer for PHP dependencies
- Node/npm only required for theme rebuild
**Production:**
- Shared/dedicated hosting with Apache + mod_rewrite
- SMTP transport configured to `127.0.0.1:25``app/config/parameters.php`
- Memcached configured but disabled (`ps_caching: CacheMemcached`, `ps_cache_enable: false`)
- WebP image delivery via `.htaccess` content negotiation + `modules/x13webp/`
- Multi-domain: serves both `drmaterac.pl` and `lulandia.pl` from same install — `.htaccess`
---
*Stack analysis: 2026-05-10*
*Update after major dependency changes*