Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0829f5e603 | ||
|
|
f509d984ba | ||
|
|
fdf674d8d6 |
+2
-2
@@ -62,8 +62,8 @@ REGISTRATION_EMAIL=anmeldung@example.com
|
||||
# ADMIN_EMAIL_CC is always included as Cc (comma-separated for multiple).
|
||||
# For testing, point all three to your own email address.
|
||||
# ---------------------------------------------------------------
|
||||
ADMIN_EMAIL_INDOOR=andrea.sigrist@gmx.net
|
||||
ADMIN_EMAIL_OUTDOOR=baba.laeubli@gmail.com
|
||||
ADMIN_EMAIL_INDOOR=indoor-leader@example.com
|
||||
ADMIN_EMAIL_OUTDOOR=outdoor-leader@example.com
|
||||
ADMIN_EMAIL_CC=spielgruppen@familien-verein.ch
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
|
||||
@@ -116,9 +116,9 @@ uv run chainlit run chat_app.py --port 8080 --host 0.0.0.0
|
||||
| `ANTHROPIC_API_KEY` | (or the key for your chosen provider) |
|
||||
| `SMTP_HOST` / `SMTP_PORT` | For admin notification emails on registration completion |
|
||||
| `IMAP_USERNAME` / `IMAP_PASSWORD` | Used as SMTP credentials |
|
||||
| `ADMIN_EMAIL_INDOOR` | Andrea Sigrist — notified when indoor group is booked |
|
||||
| `ADMIN_EMAIL_OUTDOOR` | Barbara Gross — notified when outdoor group is booked |
|
||||
| `ADMIN_EMAIL_CC` | Markus Graf — always CC'd on notifications |
|
||||
| `ADMIN_EMAIL_INDOOR` | Indoor group leader — notified when indoor group is booked |
|
||||
| `ADMIN_EMAIL_OUTDOOR` | Outdoor group leader — notified when outdoor group is booked |
|
||||
| `ADMIN_EMAIL_CC` | Admin — always CC'd on notifications |
|
||||
|
||||
IMAP variables (`IMAP_HOST`, etc.) are not required for the web chat — only for the email channel.
|
||||
|
||||
@@ -156,6 +156,35 @@ uv run python main.py
|
||||
|
||||
Completed registrations from both channels are stored in the same `DATA_DIR` (default: `data/`) and share the same admin notification configuration.
|
||||
|
||||
### Docker Compose (recommended for production)
|
||||
|
||||
A `docker-compose.yml` is provided that runs both services together with shared persistent storage:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# fill in .env, then:
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
| Service | What it runs |
|
||||
|---|---|
|
||||
| `web` | Chainlit web chat at `http://localhost:8000` |
|
||||
| `email-worker` | Email polling agent (`main.py`) |
|
||||
|
||||
Both services mount `./data` for shared registration storage and `./openspec` (read-only) for the knowledge base. Restarting a service does not lose conversation state.
|
||||
|
||||
To view logs:
|
||||
|
||||
```bash
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
To rebuild after a code change:
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Running tests
|
||||
|
||||
Reference in New Issue
Block a user