# 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*