Compare commits
1 Commits
47cfc67ef4
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87f584b1fa |
@@ -1,6 +0,0 @@
|
|||||||
- authentication
|
|
||||||
- "who are you?"
|
|
||||||
- password hashing with argon2
|
|
||||||
- JWT (15 min access) with refresh (30 days)
|
|
||||||
- identity dependencies (current_user_claims, optional_user, get_current_user_id, oauth2_scheme)
|
|
||||||
- room for growth: OAuth/SSO, API-tokens for third-party apps, 2FA, refresh-token rotation, impersonation
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- authentication.py
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
- authorization
|
|
||||||
- "what are you allowed to do?"
|
|
||||||
- role checks (require_admin today)
|
|
||||||
- room for growth: require_role, require_permission, per-resource checks (owner-of), B2B approval workflows, per-app permissions for marketplace apps
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- authorization.py
|
|
||||||
9
doc/core/cache/features.md
vendored
9
doc/core/cache/features.md
vendored
@@ -1,5 +1,4 @@
|
|||||||
- cache
|
- client für redis
|
||||||
- shared read-store / cache client (Redis today)
|
- kopie der datenbank
|
||||||
- backend writes, frontend reads
|
- anfragen gehen wenn möglich immer an redis, nie an datenbank
|
||||||
- apps keep the cache in sync via event handlers (projectors), not the core client
|
- änderungen in datenbank ändern auch immer redis
|
||||||
- room for growth: CacheProvider abstraction so the read-store becomes swappable
|
|
||||||
|
|||||||
4
doc/core/cache/specs.md
vendored
4
doc/core/cache/specs.md
vendored
@@ -1 +1,3 @@
|
|||||||
- cache.py
|
- redis_client.py
|
||||||
|
- verbindung zu redis
|
||||||
|
- CRUD für redis
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
- config
|
- liest die env
|
||||||
- read .env into Settings object
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
- config.py
|
- config.py - sicherheitskritische daten einlesen
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
- db
|
- verbindung zur datenbank herstellen
|
||||||
- base setup for ORM
|
- session aufbauen
|
||||||
- use SQLAlchemy
|
- Base definieren
|
||||||
- provide get_db() dependency
|
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
- db.py
|
- db.py
|
||||||
|
- verwendet SQLAlchemy
|
||||||
|
- ORM
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
- di
|
- services registrieren
|
||||||
- global register for services
|
- services abrufen
|
||||||
- no direct service import between apps
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
- events
|
|
||||||
- apps can react on events
|
|
||||||
- apps can emit events
|
|
||||||
- events persist in db (audit/replay)
|
|
||||||
- allow wildcard subscribe (e.g. product.*)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- events.py
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- i18n
|
|
||||||
- internationalisation helper for DE/EN text fields
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- i18n.py
|
|
||||||
@@ -1,6 +1,3 @@
|
|||||||
- loader
|
- apps finden
|
||||||
- load apps as python module
|
- reihenfolge nach abhängigkeit anpassen
|
||||||
- discover apps/*/manifest.yaml
|
- apps laden
|
||||||
- order by app dependency (topological sort), circles not allowed
|
|
||||||
- check for conflicts
|
|
||||||
- mount each app router under /api/<app>
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
- main
|
- einstiegspunkt
|
||||||
- entrypoint for backend
|
- fastAPI bauen
|
||||||
- build fastAPI
|
- loader aufrufen
|
||||||
- run loader on lifespan startup
|
|
||||||
- expose /health and core settings routes
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
- main.py
|
- event.py
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
- middleware
|
|
||||||
- central place to install FastAPI middlewares (install_middlewares(app))
|
|
||||||
- today: CORS (allowed origins from .env)
|
|
||||||
- room for growth: request-id, access logging, rate-limit, security headers (HSTS/CSP), compression
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- middleware.py
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
- migrations
|
|
||||||
- orchestrator (migrations.py): discover per-app migration folders (apps/<name>/migrations/), configure alembic version_locations dynamically, coordinate multi-head merging
|
|
||||||
- startup check: fail fast if schema is not up to date
|
|
||||||
- migrations/ directory: alembic version store (today still holds all migrations centrally; per-app folders are the target state)
|
|
||||||
- use alembic
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- migrations.py
|
|
||||||
- migrations/ (Alembic version store)
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- seed
|
|
||||||
- demo data (admin, demo customer, categories, products)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- seed.py
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
- settings
|
|
||||||
- key-value store for shop settings (runtime-changeable, e.g. shop_name, currency)
|
|
||||||
- postgres is source of truth
|
|
||||||
- mirrored to redis on write
|
|
||||||
- emits core.settings_updated event
|
|
||||||
- distinct from config (which only reads .env infrastructure values)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- settings.py
|
|
||||||
3
doc/systems/event/features.md
Normal file
3
doc/systems/event/features.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
- custom events aus den apps sammeln
|
||||||
|
- events persistieren
|
||||||
|
- helper methoden für events
|
||||||
1
doc/systems/event/specs.md
Normal file
1
doc/systems/event/specs.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- event.py
|
||||||
1
doc/systems/subscriber/features.md
Normal file
1
doc/systems/subscriber/features.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- subscriber registrieren
|
||||||
1
doc/systems/subscriber/specs.md
Normal file
1
doc/systems/subscriber/specs.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- subscriber.py
|
||||||
Reference in New Issue
Block a user