4d8febcc3f637b9aaa63abbddbcf8d3f72a64543
Beim oninit war attrs.value teils keiner Option zuzuordnen, weil die Optionen (z.B. Kundenliste) asynchron geladen werden — das Feld blieb dauerhaft leer, da lastSyncedValue bereits gesetzt war und der Sync im view nicht mehr griff. syncPending markiert die offene Synchronisierung und wiederholt sie im view, bis eine passende Option existiert; Tippen verwirft das Flag, damit die Nutzereingabe nicht überschrieben wird. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
kbcrm
[Kurzbeschreibung folgt – Zweck und Ziel der Applikation]
Authentifizierung vollständig an Zitadel delegiert. Lokale Datenhaltung, Benutzer- und Rollenverwaltung über SQLite.
Technologie-Stack
| Komponente | Technologie |
|---|---|
| Backend | Python Flask 2.x |
| OIDC-Client | Authlib |
| Datenbank | SQLite via SQLAlchemy |
| IdP | Zitadel |
| Produktion | Docker / waitress |
| web-js-frontend | mithril.js |
Lokale Entwicklung
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Zitadel-Credentials eintragen
flask db-init # Schema initialisieren
flask seed-db # Testdaten einspielen
flask run # App startet auf http://localhost:5000
Languages
TypeScript
61.1%
Python
31.6%
CSS
4.3%
Shell
1.4%
Dockerfile
0.8%
Other
0.8%