# Formeleon 🦎 > Multi-tenant, highly flexible form generator with seamless website integration and built-in bot protection. *Diese Dokumentation auf Deutsch lesen: [README.md](./README.md)* --- ## 📋 Overview Formeleon is a centrally hosted service (ChamäleonCloud) allowing multi-tenant clients to embed dynamic web forms into any website via a simple HTML/JavaScript snippet. ### Key Features * **Seamless Integration:** Embed via lightweight JS snippet. * **Flexible Schemas:** Dynamic JSON payloads stored via SQLAlchemy. * **Security First:** OIDC authentication (Zitadel), Public-Key handshakes, Origin/Referer validation, and reCAPTCHA v3 integration. * **UX & Anti-Bot:** Interactive button state management (traffic light / spinner). * **Export & Reporting:** On-demand HTTP streaming exports (CSV/JSON/YAML) and automated email dumps. --- ## 🛠️ Tech Stack * **Backend:** Python 3.13, Flask (Blueprints), Flask-SQLAlchemy, Flask-Migrate * **Frontend (Admin UI):** Bootstrap 5, Mithril.js * **Auth:** OIDC / Zitadel * **Deployment:** Docker, Gunicorn, Gitea Actions --- ## 🌍 Internationalization (i18n) via Flask-Babel Formeleon's admin dashboard supports multiple languages (currently English and German) using the industry standard `Flask-Babel` (gettext). ### 1. Marking Strings in Code To mark a text for translation, it must be wrapped with the `_()` function in your Python or HTML code. **In HTML (Jinja2 Templates):** ```html