This commit is contained in:
Marek Lenczewski
2026-04-18 07:41:09 +02:00
parent 18fc50c75b
commit bf6f5456d6
63 changed files with 288 additions and 21 deletions

View File

@@ -0,0 +1,7 @@
- custom-apps
- not shipped with the system; installed on top
- same mechanics as core-apps (manifest, router, migrations, events, DI) — loader does not distinguish
- typically declared required: false → can be switched off; can declare conflicts_with to prevent incompatible pairs
- two categories: optional apps (same team, shipped later) and third-party apps (marketplace, external developers)
- planned optional apps (from base.md): wishlist, reviews, coupons / discount engine, product recommendations, multi-vendor, subscriptions
- room for growth: app signing / verification, loader version-compat checks, per-app permission declarations, isolated migration namespaces, install/uninstall lifecycle hooks, marketplace registry

7
doc/custom-apps/specs.md Normal file
View File

@@ -0,0 +1,7 @@
- manifest.yaml (name, version, depends_on, conflicts_with, required: false, provides)
- __init__.py (router: APIRouter, optional on_load() for event handlers / DI registration)
- models.py (optional, with own SQLAlchemy Base subclass)
- projector.py (optional, redis read-store sync via event handlers)
- migrations/ (optional, alembic version files discovered by core migrations orchestrator)
- i18n/ (optional, DE/EN strings)
- frontend components under frontend/shop and/or frontend/admin (optional)