#!/usr/bin/env bash # Lokaler Dev-Launcher (sauber, reproduzierbar). # # Warum noetig: `react-router dev` (Vite) laedt `.env`/`.env.local` NICHT in die SSR-`process.env` # (nur VITE_-prefixed in den Client). Die App-Config-Validierung liest aber `process.env` # (DATABASE_URL/APP_NAME/SECRETS ...). Dieser Launcher laedt `.env` + `.env.local` in die echte # Shell-Umgebung, stellt Redis sicher und startet dann `pnpm dev`. # # Lokale Overrides (DB-Port, Host:3000) gehoeren in `.env.local` (gitignored, siehe .env.local.example). # # Nutzung: bash scripts/dev/local.sh # Dann: http://app.localhost:3000 (admin: http://admin.localhost:3000) set -uo pipefail # Repo-Root (zwei Ebenen ueber dieser Datei) ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" cd "$ROOT" # Node 22.12.0 via fnm (falls vorhanden) if command -v fnm >/dev/null 2>&1; then eval "$(fnm env)" fnm use 22.12.0 >/dev/null 2>&1 || true fi # Env laden: zuerst .env (SOPS-pull), dann .env.local (lokale Overrides gewinnen) set -a # shellcheck disable=SC1091 [ -f .env ] && . ./.env # shellcheck disable=SC1091 [ -f .env.local ] && . ./.env.local set +a if [ -z "${DATABASE_URL:-}" ]; then echo "FEHLER: DATABASE_URL nicht gesetzt. Erst 'pnpm env:pull' ausfuehren (.env) und ggf. .env.local anlegen." >&2 exit 1 fi # Lokales Redis (BullMQ / Session-Cache) sicherstellen if ! nc -z localhost 6379 >/dev/null 2>&1; then docker start hg-redis >/dev/null 2>&1 \ || docker run -d --name hg-redis -p 6379:6379 redis:7-alpine >/dev/null 2>&1 \ || echo "WARN: konnte Redis nicht starten (BullMQ/Session-Cache evtl. eingeschraenkt)." >&2 fi echo "Lokaler Dev-Server: http://app.localhost:3000 (admin: http://admin.localhost:3000)" exec pnpm dev