initiales Projektsetup als skeleton für fresh flask + architecture

This commit is contained in:
Björn Runden committed 2026-07-28 15:47:56 +02:00
1 parent 34dc6b3fcb
commit e5935be1e4
7 files changed
+320 -3

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
# ARCHITEKTUR.md – Systemarchitektur & Datenkonzept
## 1. Übersicht
Formeleon folgt einer entkoppelten Architektur:
* **Public Form API (`/api/v1`):** Nimmt Formular-Submissions von externen Mandanten-Webseiten entgegen.
* **Admin Dashboard (`/admin`):** Verwaltung von Mandanten, Formular-Layouts und Submissions.
* **Form Embed Snippet:** Ein leichtes JS-Script, das dynamisch Formulare rendert und Sicherheits-Tokens verarbeitet.
---
## 2. Ordnerstruktur (Blueprint-Muster)
```text
formeleon/
├── AGENTS.md
├── ARCHITEKTUR.md
├── README.md
├── README.EN.md
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── app.py # Anwendungs-Initialisierung & Blueprint-Registration
├── models.py # SQLAlchemy Datenmodelle
├── routes/
│ ├── api.py # Blueprint: Public Submissions & Handshake (@api_bp)
│ ├── admin.py # Blueprint: Admin Panel & Config (@admin_bp)
│ └── auth.py # Blueprint: OIDC / Zitadel Handler (@auth_bp)
├── services/
│ ├── recaptcha.py # reCAPTCHA Validation & Mocking
│ ├── exporter.py # Stream-Export Logik (CSV/JSON/YAML)
│ └── mailer.py # E-Mail Versand (SMTP Relay)
├── static/
│ ├── js/ # Snippets & Mithril.js Admin UI
│ └── css/ # Bootstrap / Custom Styles
└── docs/
├── coding-standards.md # Header & PyDoc Spezifikation
├── deployment.md
└── dev-guide.md
```
---
## 3. Datenmodell (SQLAlchemy)
Das Datenmodell nutzt ein flexibles JSON-Payload-Feld für die dynamischen Formulareingaben, um Schema-Änderungen pro Mandant ohne Tabellen-Umbau zu ermöglichen.
* **Tenant:** ID, Name, Public Key, Allowed Origins.
* **FormConfig:** ID, Tenant_ID, Name, Form-Structure (JSON).
* **Submission:** ID, FormConfig_ID, Payload (JSON), IP_Hash, Created_At.