Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs-chat.die-coaching-akademie.de/llms.txt

Use this file to discover all available pages before exploring further.

The DCA ChatBotFAQ service powers an embeddable website chat widget for die coachingakademie. It answers questions about systemische Ausbildungen, Workshops, Infoabende, Anmeldung, Beratung, Preise, Zahlungsbedingungen, and contact options.

FastAPI backend

Routes, CORS, static files, templates, public chat API, and protected admin endpoints live in app.py.

Embeddable widget

The customer website only loads static/chatbot.js. The script creates the widget UI and talks to /chat.

Curated knowledge base

Answers are grounded in data/knowledge_base.json and synchronized website entries from data/website_knowledge_base.json.

Admin analytics

Token-protected admin endpoints expose health and privacy-friendly local analytics.

Current production shape

Production runs on a Hetzner CX23 server with Ubuntu 24.04. Uvicorn serves app:app on 127.0.0.1:8000. Nginx handles HTTPS and reverse proxying for https://chat.die-coaching-akademie.de.
Runtime secrets live in .env on the server and are not tracked in Git. Never commit OPENAI_API_KEY, ADMIN_TOKEN, or generated analytics data.
The app reads JSON knowledge-base files on startup and records analytics to data/chat_events.jsonl when ANALYTICS_ENABLED=true.

Repository map

app.py                       FastAPI entrypoint and routes
models.py                    Pydantic request/response models
core/config.py               Paths, environment helpers, system prompt
services/chat_service.py     Search, deterministic answers, OpenAI response logic
services/analytics_service.py Privacy-friendly local analytics
static/chatbot.js            Embeddable widget script
static/chatbot.css           Widget styles
templates/                   Demo and admin dashboard templates
data/                        Knowledge base and website sync data
tests/                       unittest regression coverage
This documentation intentionally describes existing behavior only. It does not claim features that are not implemented in the repository.