feat: production deployment - full update with providers, admin, glossaries, pricing, tests

Major changes across backend, frontend, infrastructure:
- Provider system with model selection (Google, DeepL, OpenAI, Ollama, Google Cloud)
- Admin panel: user management, pricing, settings
- Glossary system with CSV import/export
- Subscription and tier quota management
- Security hardening (rate limiting, API key auth, path traversal fixes)
- Docker compose for dev, prod, and IONOS deployment
- Alembic migrations for new tables
- Frontend: dashboard, pricing page, landing page, i18n (en/fr)
- Test suite and verification scripts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sepehr Ramezani
2026-04-25 15:01:47 +02:00
parent 2ba4fedfc8
commit 26bd096a06
1178 changed files with 136435 additions and 3047 deletions

50
scripts/verify-dev-compose.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Verify docker-compose.dev.yml: syntax, required services, and optional config check
# Usage: ./scripts/verify-dev-compose.sh
# Run from project root. Requires: bash, optional docker compose / docker-compose
set -e
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
COMPOSE_FILE="docker-compose.dev.yml"
echo "Checking $COMPOSE_FILE exists..."
test -f "$COMPOSE_FILE" || { echo "Missing $COMPOSE_FILE"; exit 1; }
echo "Validating YAML syntax and required services (Python)..."
python3 - "$COMPOSE_FILE" <<'PY'
import sys
try:
import yaml
except ImportError:
print("PyYAML not installed, skipping YAML check")
sys.exit(0)
path = sys.argv[1]
with open(path) as f:
data = yaml.safe_load(f)
if not data or "services" not in data:
print("YAML error: no 'services' key")
sys.exit(1)
services = data["services"]
required = {"postgres", "redis", "backend", "frontend"}
missing = required - set(services)
if missing:
print("YAML error: missing required services:", ", ".join(sorted(missing)))
sys.exit(1)
print("YAML OK, required services present (postgres, redis, backend, frontend)")
PY
if command -v docker-compose &>/dev/null; then
echo "Running docker-compose config..."
docker-compose -f "$COMPOSE_FILE" config >/dev/null && echo "docker-compose config OK"
elif docker compose version &>/dev/null 2>&1; then
echo "Running docker compose config..."
docker compose -f "$COMPOSE_FILE" config >/dev/null && echo "docker compose config OK"
else
echo "Docker Compose not found; skip config validation. Run manually: docker compose -f $COMPOSE_FILE up"
fi
echo "Done. To start dev stack: docker compose -f $COMPOSE_FILE up (or docker-compose -f $COMPOSE_FILE up)"