From 65157da61d1d8dbbd80e6cdc0e503ac07429a612 Mon Sep 17 00:00:00 2001 From: Marek Date: Sun, 19 Apr 2026 19:22:36 +0200 Subject: [PATCH] update --- doc/core-apps/ai_admin/features.md | 7 +++++++ doc/core-apps/ai_admin/specs.md | 4 ++++ doc/core-apps/ai_core/features.md | 7 +++++++ doc/core-apps/ai_core/specs.md | 7 +++++++ doc/core-apps/ai_shop/features.md | 6 ++++++ doc/core-apps/ai_shop/specs.md | 2 ++ doc/core-apps/auth/features.md | 12 ++++++++++++ doc/core-apps/auth/specs.md | 3 +++ doc/core-apps/cart/features.md | 5 +++++ doc/core-apps/cart/specs.md | 3 +++ doc/core-apps/catalog/features.md | 7 +++++++ doc/core-apps/catalog/specs.md | 4 ++++ doc/core-apps/checkout/features.md | 6 ++++++ doc/core-apps/checkout/specs.md | 2 ++ doc/core-apps/features.md | 4 ++++ doc/core-apps/mail/features.md | 6 ++++++ doc/core-apps/mail/specs.md | 2 ++ doc/core-apps/orders/features.md | 7 +++++++ doc/core-apps/orders/specs.md | 3 +++ doc/core-apps/payment/features.md | 5 +++++ doc/core-apps/payment/specs.md | 2 ++ doc/core-apps/specs.md | 6 ++++++ doc/core/cache/features.md | 5 +++++ doc/core/cache/specs.md | 1 + doc/core/config/features.md | 2 ++ doc/core/config/specs.md | 1 + doc/core/db/features.md | 4 ++++ doc/core/db/specs.md | 1 + doc/core/di/features.md | 3 +++ doc/core/di/specs.md | 1 + doc/core/events/features.md | 5 +++++ doc/core/events/specs.md | 1 + doc/core/features.md | 1 + doc/core/loader/features.md | 6 ++++++ doc/core/loader/specs.md | 1 + doc/core/main/features.md | 5 +++++ doc/core/main/specs.md | 1 + doc/core/specs.md | 7 +++++++ doc/custom-apps/features.md | 7 +++++++ doc/custom-apps/specs.md | 7 +++++++ doc/features.md | 1 - doc/specs.md | 9 +++------ doc/systems/authentication/features.md | 6 ++++++ doc/systems/authentication/specs.md | 1 + doc/systems/authorization/features.md | 4 ++++ doc/systems/authorization/specs.md | 1 + doc/systems/features.md | 2 ++ doc/systems/i18n/features.md | 2 ++ doc/systems/i18n/specs.md | 1 + doc/systems/middleware/features.md | 4 ++++ doc/systems/middleware/specs.md | 1 + doc/systems/migrations/features.md | 5 +++++ doc/systems/migrations/specs.md | 2 ++ doc/systems/seed/features.md | 2 ++ doc/systems/seed/specs.md | 1 + doc/systems/settings/features.md | 6 ++++++ doc/systems/settings/specs.md | 1 + doc/systems/specs.md | 11 +++++++++++ 58 files changed, 222 insertions(+), 7 deletions(-) create mode 100644 doc/core-apps/ai_admin/features.md create mode 100644 doc/core-apps/ai_admin/specs.md create mode 100644 doc/core-apps/ai_core/features.md create mode 100644 doc/core-apps/ai_core/specs.md create mode 100644 doc/core-apps/ai_shop/features.md create mode 100644 doc/core-apps/ai_shop/specs.md create mode 100644 doc/core-apps/auth/features.md create mode 100644 doc/core-apps/auth/specs.md create mode 100644 doc/core-apps/cart/features.md create mode 100644 doc/core-apps/cart/specs.md create mode 100644 doc/core-apps/catalog/features.md create mode 100644 doc/core-apps/catalog/specs.md create mode 100644 doc/core-apps/checkout/features.md create mode 100644 doc/core-apps/checkout/specs.md create mode 100644 doc/core-apps/features.md create mode 100644 doc/core-apps/mail/features.md create mode 100644 doc/core-apps/mail/specs.md create mode 100644 doc/core-apps/orders/features.md create mode 100644 doc/core-apps/orders/specs.md create mode 100644 doc/core-apps/payment/features.md create mode 100644 doc/core-apps/payment/specs.md create mode 100644 doc/core-apps/specs.md create mode 100644 doc/core/cache/features.md create mode 100644 doc/core/cache/specs.md create mode 100644 doc/core/config/features.md create mode 100644 doc/core/config/specs.md create mode 100644 doc/core/db/features.md create mode 100644 doc/core/db/specs.md create mode 100644 doc/core/di/features.md create mode 100644 doc/core/di/specs.md create mode 100644 doc/core/events/features.md create mode 100644 doc/core/events/specs.md create mode 100644 doc/core/features.md create mode 100644 doc/core/loader/features.md create mode 100644 doc/core/loader/specs.md create mode 100644 doc/core/main/features.md create mode 100644 doc/core/main/specs.md create mode 100644 doc/core/specs.md create mode 100644 doc/custom-apps/features.md create mode 100644 doc/custom-apps/specs.md create mode 100644 doc/systems/authentication/features.md create mode 100644 doc/systems/authentication/specs.md create mode 100644 doc/systems/authorization/features.md create mode 100644 doc/systems/authorization/specs.md create mode 100644 doc/systems/features.md create mode 100644 doc/systems/i18n/features.md create mode 100644 doc/systems/i18n/specs.md create mode 100644 doc/systems/middleware/features.md create mode 100644 doc/systems/middleware/specs.md create mode 100644 doc/systems/migrations/features.md create mode 100644 doc/systems/migrations/specs.md create mode 100644 doc/systems/seed/features.md create mode 100644 doc/systems/seed/specs.md create mode 100644 doc/systems/settings/features.md create mode 100644 doc/systems/settings/specs.md create mode 100644 doc/systems/specs.md diff --git a/doc/core-apps/ai_admin/features.md b/doc/core-apps/ai_admin/features.md new file mode 100644 index 0000000..bec9b49 --- /dev/null +++ b/doc/core-apps/ai_admin/features.md @@ -0,0 +1,7 @@ +- ai_admin + - admin chat turns prompts or JSON bulk input into proposal cards; AI never executes directly + - routes: POST /ai/admin/plan, POST /ai/admin/execute (admin-only) + - cards carry tool name, args, missing fields (editable in UI), preview text + - execute validates args against tool JSON-schema, runs the tool, writes an audit-log entry + - depends on: core, auth, catalog, orders, ai_core + - room for growth: more tools (mail templates, bulk import, category mutation), undo history, approval levels, per-tool permissions, dry-run mode diff --git a/doc/core-apps/ai_admin/specs.md b/doc/core-apps/ai_admin/specs.md new file mode 100644 index 0000000..0d7b653 --- /dev/null +++ b/doc/core-apps/ai_admin/specs.md @@ -0,0 +1,4 @@ +- __init__.py (router, on_load) +- planner.py (prompt/JSON → list of action cards) +- tool_defs.py (JSON-schema per tool for argument validation) +- manifest.yaml diff --git a/doc/core-apps/ai_core/features.md b/doc/core-apps/ai_core/features.md new file mode 100644 index 0000000..516b214 --- /dev/null +++ b/doc/core-apps/ai_core/features.md @@ -0,0 +1,7 @@ +- ai_core + - RAG infrastructure: LLMProvider interface + Ollama implementation, pgvector-backed document store, tool registry + - routes: POST /ai/query; admin: POST /ai/reindex, GET /ai/tools + - events subscribe: product.*, category.*, core.settings_updated (triggers embedding updates) + - depends on: core, catalog + - tools are proposals only — never executed directly; ai_admin turns them into confirmation cards + - room for growth: re-ranking, source citations, streaming responses, alternative LLM providers (OpenAI-compatible, Anthropic), chunking strategies, evaluation harness diff --git a/doc/core-apps/ai_core/specs.md b/doc/core-apps/ai_core/specs.md new file mode 100644 index 0000000..08bfd67 --- /dev/null +++ b/doc/core-apps/ai_core/specs.md @@ -0,0 +1,7 @@ +- __init__.py (router, on_load, tool registry) +- models.py (AiDocument with pgvector column) +- indexer.py (embed + upsert documents) +- ollama_client.py (LLMProvider implementation) +- tools.py (Tool base + registry) +- reindex.py (full rebuild of embeddings) +- manifest.yaml diff --git a/doc/core-apps/ai_shop/features.md b/doc/core-apps/ai_shop/features.md new file mode 100644 index 0000000..9b6bd2e --- /dev/null +++ b/doc/core-apps/ai_shop/features.md @@ -0,0 +1,6 @@ +- ai_shop + - natural-language product search for customers; hybrid of embedding similarity and keyword boost + - routes: POST /ai/shop/search + - shop-aware system prompt (currency, user locale) + - depends on: core, catalog, ai_core + - room for growth: conversational follow-ups, session memory, filter parsing (price, size, color), spell correction, personalized ranking diff --git a/doc/core-apps/ai_shop/specs.md b/doc/core-apps/ai_shop/specs.md new file mode 100644 index 0000000..3445986 --- /dev/null +++ b/doc/core-apps/ai_shop/specs.md @@ -0,0 +1,2 @@ +- __init__.py (router, on_load) +- manifest.yaml diff --git a/doc/core-apps/auth/features.md b/doc/core-apps/auth/features.md new file mode 100644 index 0000000..f6b6144 --- /dev/null +++ b/doc/core-apps/auth/features.md @@ -0,0 +1,12 @@ +- login user +- register user +- chnage password +- +- + + - registration, login, refresh, logout, password change, own profile + - routes: POST /register, /login, /refresh, /logout, /change-password; GET/PUT /me + - events emit: user.registered, user.logged_in + - depends on: core + - seeds: admin@example.com + demo customer + - room for growth: OAuth/SSO, API-tokens for third-party apps, 2FA, refresh-token rotation, impersonation, B2B company accounts diff --git a/doc/core-apps/auth/specs.md b/doc/core-apps/auth/specs.md new file mode 100644 index 0000000..5a11907 --- /dev/null +++ b/doc/core-apps/auth/specs.md @@ -0,0 +1,3 @@ +- __init__.py: +- models.py (User, RefreshToken) +- manifest.yaml diff --git a/doc/core-apps/cart/features.md b/doc/core-apps/cart/features.md new file mode 100644 index 0000000..9b62d11 --- /dev/null +++ b/doc/core-apps/cart/features.md @@ -0,0 +1,5 @@ +- cart + - per-user shopping cart, read/write items + - routes: GET /cart, POST /cart/items, PUT /cart/items/{id}, DELETE /cart/items/{id} + - depends on: core, auth, catalog + - room for growth: guest cart (session-based), merge guest cart into user cart on login, saved carts / wishlists, price snapshotting at add-time diff --git a/doc/core-apps/cart/specs.md b/doc/core-apps/cart/specs.md new file mode 100644 index 0000000..929c64b --- /dev/null +++ b/doc/core-apps/cart/specs.md @@ -0,0 +1,3 @@ +- __init__.py (router, on_load) +- models.py (Cart, CartItem) +- manifest.yaml diff --git a/doc/core-apps/catalog/features.md b/doc/core-apps/catalog/features.md new file mode 100644 index 0000000..f1805c4 --- /dev/null +++ b/doc/core-apps/catalog/features.md @@ -0,0 +1,7 @@ +- catalog + - products and categories, DE/EN i18n fields, image upload (local storage today) + - public routes (read from redis): GET /products, /products/{id}, /categories + - admin routes: POST/PUT/DELETE /admin/products, /admin/categories, image upload endpoint + - events emit: product.created, product.updated, product.deleted, category.created, category.updated, category.deleted + - depends on: core, auth + - room for growth: product variants, attributes/tags, SEO slugs, pluggable image storage (S3), stock reservations, price lists (B2B) diff --git a/doc/core-apps/catalog/specs.md b/doc/core-apps/catalog/specs.md new file mode 100644 index 0000000..34b6869 --- /dev/null +++ b/doc/core-apps/catalog/specs.md @@ -0,0 +1,4 @@ +- __init__.py (router, on_load) +- models.py (Product, Category) +- projector.py (redis sync on product/category events) +- manifest.yaml diff --git a/doc/core-apps/checkout/features.md b/doc/core-apps/checkout/features.md new file mode 100644 index 0000000..feca91a --- /dev/null +++ b/doc/core-apps/checkout/features.md @@ -0,0 +1,6 @@ +- checkout + - validate cart, take address + payment selection, produce order via payment provider + - routes: POST /checkout/preview, POST /checkout/confirm + - events emit: checkout.confirmed + - depends on: core, auth, catalog, cart, payment + - room for growth: coupon slot, shipping-method slot, tax plug-in point, address book, guest checkout, order-draft persistence diff --git a/doc/core-apps/checkout/specs.md b/doc/core-apps/checkout/specs.md new file mode 100644 index 0000000..3445986 --- /dev/null +++ b/doc/core-apps/checkout/specs.md @@ -0,0 +1,2 @@ +- __init__.py (router, on_load) +- manifest.yaml diff --git a/doc/core-apps/features.md b/doc/core-apps/features.md new file mode 100644 index 0000000..4c51d66 --- /dev/null +++ b/doc/core-apps/features.md @@ -0,0 +1,4 @@ +- auth + - manage users + - login user + - register user diff --git a/doc/core-apps/mail/features.md b/doc/core-apps/mail/features.md new file mode 100644 index 0000000..97cec81 --- /dev/null +++ b/doc/core-apps/mail/features.md @@ -0,0 +1,6 @@ +- mail + - MailProvider service registered via DI; SMTP implementation (Mailhog in dev, real SMTP in prod) + - Jinja2 templates with DE/EN i18n + - no public routes — used by other apps (e.g. orders) through DI + - depends on: core + - room for growth: outbound queue with retries, provider abstraction (SendGrid, Postmark, SES), richer transactional templates, bounce/complaint handling diff --git a/doc/core-apps/mail/specs.md b/doc/core-apps/mail/specs.md new file mode 100644 index 0000000..3a78aad --- /dev/null +++ b/doc/core-apps/mail/specs.md @@ -0,0 +1,2 @@ +- __init__.py (on_load, MailProvider, SMTP implementation) +- manifest.yaml diff --git a/doc/core-apps/orders/features.md b/doc/core-apps/orders/features.md new file mode 100644 index 0000000..ae1fae5 --- /dev/null +++ b/doc/core-apps/orders/features.md @@ -0,0 +1,7 @@ +- orders + - customer-facing order list + detail, admin-side management with status transitions + - routes: GET /orders, GET /orders/{id}; admin: GET /admin/orders, PUT /admin/orders/{id}/status + - events subscribe: checkout.confirmed (create order, trigger confirmation mail) + - events emit: order.created, order.status_changed + - depends on: core, auth, catalog, mail + - room for growth: returns, partial fulfillment, cancellations, invoice PDFs, shipment tracking, export (CSV/ERP) diff --git a/doc/core-apps/orders/specs.md b/doc/core-apps/orders/specs.md new file mode 100644 index 0000000..de77c5d --- /dev/null +++ b/doc/core-apps/orders/specs.md @@ -0,0 +1,3 @@ +- __init__.py (router, on_load, event subscribers) +- models.py (Order, OrderItem, OrderStatusHistory) +- manifest.yaml diff --git a/doc/core-apps/payment/features.md b/doc/core-apps/payment/features.md new file mode 100644 index 0000000..c261f81 --- /dev/null +++ b/doc/core-apps/payment/features.md @@ -0,0 +1,5 @@ +- payment + - PaymentProvider interface + DummyPayment (always "paid") for dev + - routes: GET /payment/methods + - depends on: core + - room for growth: real providers as separate apps (Stripe, Mollie, Klarna, PayPal), refund API, webhook handling, 3DS/SCA flow, split payments diff --git a/doc/core-apps/payment/specs.md b/doc/core-apps/payment/specs.md new file mode 100644 index 0000000..e304b66 --- /dev/null +++ b/doc/core-apps/payment/specs.md @@ -0,0 +1,2 @@ +- __init__.py (router, on_load, DummyPayment provider) +- manifest.yaml diff --git a/doc/core-apps/specs.md b/doc/core-apps/specs.md new file mode 100644 index 0000000..948ac1c --- /dev/null +++ b/doc/core-apps/specs.md @@ -0,0 +1,6 @@ +- auth + - hashing: argon2 + - token: JWT (15m/30d) + - events + - user.registered + - user.logged_id \ No newline at end of file diff --git a/doc/core/cache/features.md b/doc/core/cache/features.md new file mode 100644 index 0000000..b9c3777 --- /dev/null +++ b/doc/core/cache/features.md @@ -0,0 +1,5 @@ +- cache + - shared read-store / cache client (Redis today) + - backend writes, frontend reads + - apps keep the cache in sync via event handlers (projectors), not the core client + - room for growth: CacheProvider abstraction so the read-store becomes swappable \ No newline at end of file diff --git a/doc/core/cache/specs.md b/doc/core/cache/specs.md new file mode 100644 index 0000000..b96b5fe --- /dev/null +++ b/doc/core/cache/specs.md @@ -0,0 +1 @@ +- cache.py diff --git a/doc/core/config/features.md b/doc/core/config/features.md new file mode 100644 index 0000000..daa10c4 --- /dev/null +++ b/doc/core/config/features.md @@ -0,0 +1,2 @@ +- config + - read .env into Settings object \ No newline at end of file diff --git a/doc/core/config/specs.md b/doc/core/config/specs.md new file mode 100644 index 0000000..1846e19 --- /dev/null +++ b/doc/core/config/specs.md @@ -0,0 +1 @@ +- config.py diff --git a/doc/core/db/features.md b/doc/core/db/features.md new file mode 100644 index 0000000..2563feb --- /dev/null +++ b/doc/core/db/features.md @@ -0,0 +1,4 @@ +- db + - base setup for ORM + - use SQLAlchemy + - provide get_db() dependency \ No newline at end of file diff --git a/doc/core/db/specs.md b/doc/core/db/specs.md new file mode 100644 index 0000000..20c984d --- /dev/null +++ b/doc/core/db/specs.md @@ -0,0 +1 @@ +- db.py diff --git a/doc/core/di/features.md b/doc/core/di/features.md new file mode 100644 index 0000000..5bf1bb1 --- /dev/null +++ b/doc/core/di/features.md @@ -0,0 +1,3 @@ +- di + - global register for services + - no direct service import between apps \ No newline at end of file diff --git a/doc/core/di/specs.md b/doc/core/di/specs.md new file mode 100644 index 0000000..84b2062 --- /dev/null +++ b/doc/core/di/specs.md @@ -0,0 +1 @@ +- di.py diff --git a/doc/core/events/features.md b/doc/core/events/features.md new file mode 100644 index 0000000..0fa5625 --- /dev/null +++ b/doc/core/events/features.md @@ -0,0 +1,5 @@ +- events + - apps can react on events + - apps can emit events + - events persist in db (audit/replay) + - allow wildcard subscribe (e.g. product.*) \ No newline at end of file diff --git a/doc/core/events/specs.md b/doc/core/events/specs.md new file mode 100644 index 0000000..61f66d8 --- /dev/null +++ b/doc/core/events/specs.md @@ -0,0 +1 @@ +- events.py diff --git a/doc/core/features.md b/doc/core/features.md new file mode 100644 index 0000000..bced5b4 --- /dev/null +++ b/doc/core/features.md @@ -0,0 +1 @@ +- setup für den shop diff --git a/doc/core/loader/features.md b/doc/core/loader/features.md new file mode 100644 index 0000000..93cd46c --- /dev/null +++ b/doc/core/loader/features.md @@ -0,0 +1,6 @@ +- loader + - load apps as python module + - discover apps/*/manifest.yaml + - order by app dependency (topological sort), circles not allowed + - check for conflicts + - mount each app router under /api/ \ No newline at end of file diff --git a/doc/core/loader/specs.md b/doc/core/loader/specs.md new file mode 100644 index 0000000..45ee5bc --- /dev/null +++ b/doc/core/loader/specs.md @@ -0,0 +1 @@ +- loader.py diff --git a/doc/core/main/features.md b/doc/core/main/features.md new file mode 100644 index 0000000..7e7c510 --- /dev/null +++ b/doc/core/main/features.md @@ -0,0 +1,5 @@ +- main + - entrypoint for backend + - build fastAPI + - run loader on lifespan startup + - expose /health and core settings routes \ No newline at end of file diff --git a/doc/core/main/specs.md b/doc/core/main/specs.md new file mode 100644 index 0000000..c854023 --- /dev/null +++ b/doc/core/main/specs.md @@ -0,0 +1 @@ +- main.py diff --git a/doc/core/specs.md b/doc/core/specs.md new file mode 100644 index 0000000..57150a6 --- /dev/null +++ b/doc/core/specs.md @@ -0,0 +1,7 @@ +- main — anwendung starten +- loader — apps laden +- config — liest zugänge aus env +- di — direkte apps kommunikation +- events — indirekte apps kommunikation +- db — datenbank kommunikation +- cache — redis kommunikation \ No newline at end of file diff --git a/doc/custom-apps/features.md b/doc/custom-apps/features.md new file mode 100644 index 0000000..13d7ea3 --- /dev/null +++ b/doc/custom-apps/features.md @@ -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 diff --git a/doc/custom-apps/specs.md b/doc/custom-apps/specs.md new file mode 100644 index 0000000..c835c4e --- /dev/null +++ b/doc/custom-apps/specs.md @@ -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) diff --git a/doc/features.md b/doc/features.md index 6ac8e7a..61624f1 100644 --- a/doc/features.md +++ b/doc/features.md @@ -2,4 +2,3 @@ - AI search: Filter products by search with AI - AI admin helper: Execute commands by description - Products, Orders, Users, Events, Settings -- \ No newline at end of file diff --git a/doc/specs.md b/doc/specs.md index 9551afa..dc3c536 100644 --- a/doc/specs.md +++ b/doc/specs.md @@ -1,15 +1,12 @@ -- pyhton: backend language +- python: backend language - fastAPI: Rest-API framework, Async, OpenAPI Docs - Pydantic: Validate API - SQLAlchemy: ORM - Alembic: Migrations - Postgres: Relational database - pgvector: Vector columns for search, RAG search -- Redis: Cache for backend-frontend comminication +- Redis: Cache for backend-frontend communication - Ollama: LLM for chat / planning and LLM for embeddings - Vue: Frontend and admin framework with router and pinia as SPA - Meilisearch: Search server with fulltext -- Mailhog: Dummy mailing - -App-Loader, DI, Event-Bus, Settings, Redis-Projektor, Security, Seed -auth, catalog, cart, checkout, payment, orders, mail, ai_core, ai_shop, ai_admin, hello \ No newline at end of file +- Mailhog: Dummy mailing \ No newline at end of file diff --git a/doc/systems/authentication/features.md b/doc/systems/authentication/features.md new file mode 100644 index 0000000..bdae93b --- /dev/null +++ b/doc/systems/authentication/features.md @@ -0,0 +1,6 @@ +- 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 \ No newline at end of file diff --git a/doc/systems/authentication/specs.md b/doc/systems/authentication/specs.md new file mode 100644 index 0000000..a12f0bb --- /dev/null +++ b/doc/systems/authentication/specs.md @@ -0,0 +1 @@ +- authentication.py diff --git a/doc/systems/authorization/features.md b/doc/systems/authorization/features.md new file mode 100644 index 0000000..b4c4836 --- /dev/null +++ b/doc/systems/authorization/features.md @@ -0,0 +1,4 @@ +- 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 \ No newline at end of file diff --git a/doc/systems/authorization/specs.md b/doc/systems/authorization/specs.md new file mode 100644 index 0000000..1b4d348 --- /dev/null +++ b/doc/systems/authorization/specs.md @@ -0,0 +1 @@ +- authorization.py diff --git a/doc/systems/features.md b/doc/systems/features.md new file mode 100644 index 0000000..94e4f6f --- /dev/null +++ b/doc/systems/features.md @@ -0,0 +1,2 @@ +- basis für apps +- sammelt logik der apps und führt sie aus diff --git a/doc/systems/i18n/features.md b/doc/systems/i18n/features.md new file mode 100644 index 0000000..1327da2 --- /dev/null +++ b/doc/systems/i18n/features.md @@ -0,0 +1,2 @@ +- i18n + - internationalisation helper for DE/EN text fields \ No newline at end of file diff --git a/doc/systems/i18n/specs.md b/doc/systems/i18n/specs.md new file mode 100644 index 0000000..7042fe6 --- /dev/null +++ b/doc/systems/i18n/specs.md @@ -0,0 +1 @@ +- i18n.py diff --git a/doc/systems/middleware/features.md b/doc/systems/middleware/features.md new file mode 100644 index 0000000..596c630 --- /dev/null +++ b/doc/systems/middleware/features.md @@ -0,0 +1,4 @@ +- 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 \ No newline at end of file diff --git a/doc/systems/middleware/specs.md b/doc/systems/middleware/specs.md new file mode 100644 index 0000000..8fd640b --- /dev/null +++ b/doc/systems/middleware/specs.md @@ -0,0 +1 @@ +- middleware.py diff --git a/doc/systems/migrations/features.md b/doc/systems/migrations/features.md new file mode 100644 index 0000000..ef4adec --- /dev/null +++ b/doc/systems/migrations/features.md @@ -0,0 +1,5 @@ +- migrations + - orchestrator (migrations.py): discover per-app migration folders (apps//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 \ No newline at end of file diff --git a/doc/systems/migrations/specs.md b/doc/systems/migrations/specs.md new file mode 100644 index 0000000..26be887 --- /dev/null +++ b/doc/systems/migrations/specs.md @@ -0,0 +1,2 @@ +- migrations.py +- migrations/ (Alembic version store) diff --git a/doc/systems/seed/features.md b/doc/systems/seed/features.md new file mode 100644 index 0000000..f7089d5 --- /dev/null +++ b/doc/systems/seed/features.md @@ -0,0 +1,2 @@ +- seed + - demo data (admin, demo customer, categories, products) \ No newline at end of file diff --git a/doc/systems/seed/specs.md b/doc/systems/seed/specs.md new file mode 100644 index 0000000..35172fa --- /dev/null +++ b/doc/systems/seed/specs.md @@ -0,0 +1 @@ +- seed.py diff --git a/doc/systems/settings/features.md b/doc/systems/settings/features.md new file mode 100644 index 0000000..1341a82 --- /dev/null +++ b/doc/systems/settings/features.md @@ -0,0 +1,6 @@ +- 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) \ No newline at end of file diff --git a/doc/systems/settings/specs.md b/doc/systems/settings/specs.md new file mode 100644 index 0000000..96d6154 --- /dev/null +++ b/doc/systems/settings/specs.md @@ -0,0 +1 @@ +- settings.py diff --git a/doc/systems/specs.md b/doc/systems/specs.md new file mode 100644 index 0000000..0e42624 --- /dev/null +++ b/doc/systems/specs.md @@ -0,0 +1,11 @@ +- controller - routes und aktionen +- model - datenbank tabellen +- migration — migrationen +- event - eigene events +- subscriber - listener +- setting — shop konfigurationen +- authentication — zugriff +- authorization — rechte +- middleware — request und response filter +- seed — faker daten +- i18n — übersetzungen \ No newline at end of file