73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
# shopPRO — Codebase Overview
|
||
|
||
> Generated: 2026-03-12
|
||
|
||
## What is this project?
|
||
|
||
shopPRO is a PHP e-commerce platform with an admin panel, customer-facing storefront, and REST API. It uses a Domain-Driven Design architecture with Dependency Injection (migration from legacy architecture complete).
|
||
|
||
## Size & Health
|
||
|
||
| Metric | Value |
|
||
|--------|-------|
|
||
| PHP files (autoload/) | ~588 |
|
||
| Lines of code (autoload/) | ~71,668 |
|
||
| Test suite | **810 tests, 2264 assertions** |
|
||
| Domain modules | 29 |
|
||
| Admin controllers | 28 |
|
||
| Frontend controllers | 8 |
|
||
| API controllers | 4 |
|
||
| Frontend views (static) | 11 |
|
||
|
||
## Tech Snapshot
|
||
|
||
| Layer | Technology |
|
||
|-------|-----------|
|
||
| Language | PHP 7.4–7.x (production **< 8.0**) |
|
||
| Database ORM | Medoo 1.7.10 + MySQL |
|
||
| Caching | Redis via `CacheHandler` |
|
||
| Email | PHPMailer (classic) |
|
||
| Frontend JS | jQuery 2.1.3 |
|
||
| CSS | Bootstrap 4.x (pre-compiled SCSS) |
|
||
| HTTP Client | Native cURL |
|
||
| Testing | PHPUnit 9.6 via `phpunit.phar` |
|
||
| Build tools | **None** |
|
||
|
||
## Entry Points
|
||
|
||
| File | Role |
|
||
|------|------|
|
||
| `index.php` | Frontend storefront |
|
||
| `admin/index.php` | Admin panel |
|
||
| `ajax.php` | Frontend AJAX |
|
||
| `admin/ajax.php` | Admin AJAX |
|
||
| `api.php` | REST API (ordersPRO) |
|
||
| `cron.php` | Background job processor |
|
||
|
||
## External Integrations
|
||
|
||
| Integration | Purpose |
|
||
|-------------|---------|
|
||
| **Apilo** | ERP/WMS — order sync, inventory, pricing (OAuth 2.0) |
|
||
| **Ekomi** | Customer review CSV export |
|
||
| **TrustMate** | Review invitation (browser-based, separate cron) |
|
||
| **Google XML Feed** | Google Shopping product feed |
|
||
| **shopPRO Import** | Import products from another shopPRO instance |
|
||
|
||
## Key Architecture Decisions
|
||
|
||
- **DI via manual factories** in `admin\App`, `front\App`, `api\ApiRouter`
|
||
- **Repository pattern** — all DB access in `autoload/Domain/{Module}/{Module}Repository.php`
|
||
- **Redis caching** for products (TTL 24h), routes, and settings
|
||
- **No Composer autoload at runtime** — custom dual-convention autoloader in each entry point
|
||
- **Stateless REST API** — auth via `X-Api-Key` header + `hash_equals()`
|
||
- **Job queue** — cron jobs stored in `pp_cron_jobs` table, processed by `cron.php`
|
||
|
||
## Quick Reference
|
||
|
||
- Full stack details: `stack.md`
|
||
- Architecture & routing: `architecture.md`
|
||
- Code conventions: `conventions.md`
|
||
- Testing patterns: `testing.md`
|
||
- Known issues & debt: `concerns.md`
|