65 lines
2.4 KiB
Bash
Executable File
65 lines
2.4 KiB
Bash
Executable File
#!/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 -euo pipefail
|
|
|
|
# Repo-Root (zwei Ebenen ueber dieser Datei)
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
# Use the repository-pinned Node version via fnm when available.
|
|
if command -v fnm >/dev/null 2>&1; then
|
|
eval "$(fnm env)"
|
|
node_version="$(tr -d '[:space:]' < .nvmrc)"
|
|
if ! fnm use "${node_version#v}" >/dev/null 2>&1; then
|
|
echo "FEHLER: Node ${node_version} aus .nvmrc ist lokal nicht installiert." >&2
|
|
exit 1
|
|
fi
|
|
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
|
|
|
|
# Canonical disposable local credentials. The credential command additionally
|
|
# checks the local DB marker before any password or permission write.
|
|
if [ -n "${NODE_ENV:-}" ] && [ "$NODE_ENV" != "development" ]; then
|
|
echo "FEHLER: pnpm dev:local akzeptiert nur NODE_ENV=development." >&2
|
|
exit 1
|
|
fi
|
|
export NODE_ENV=development
|
|
export LOCAL_DEV_CREDENTIALS=1
|
|
export ADMIN_FALLBACK_LOGIN_ENABLED=true
|
|
export ADMIN_FALLBACK_LOGIN_EMAILS=admin@email.com
|
|
export DEMO_USER=admin@email.com:password
|
|
|
|
pnpm dev:local:credentials
|
|
|
|
# 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; Login: admin@email.com / password)"
|
|
exec pnpm dev
|