From 0dbf89dfa25d61ed2c7500d0e556dfe98147e5a1 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Fri, 17 Jul 2026 20:07:53 +0200 Subject: [PATCH] Erreichbarkeit auf 0.0.0.0; Projekt zu "canteen-menu" umbenannt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - next dev/start binden jetzt explizit an 0.0.0.0 statt nur localhost (Docker war über die Port-Freigabe bereits erreichbar, jetzt auch beim nativen npm-Betrieb); docker-compose.yml macht das Binden an alle Interfaces zusätzlich explizit - package.json-Name, Docker-Image/Container/Netzwerk-Namen, lokaler DB-Name (canteen_menu), Browser-Tab-Titel und README auf den englischen Projektnamen "canteen-menu" umgestellt; deutsche In-App-Texte für die Kantinen-Mitarbeiter bleiben unverändert - Supabase-Projekt (Anzeigename) und native lokale Postgres-DB entsprechend umbenannt (Ref/URL/Keys unverändert) --- .claude/launch.json | 2 +- README.md | 12 ++++++------ app/layout.tsx | 2 +- docker-compose.yml | 25 ++++++++++++------------- package-lock.json | 4 ++-- package.json | 6 +++--- scripts/sync-local-db.ps1 | 8 ++++---- 7 files changed, 29 insertions(+), 30 deletions(-) diff --git a/.claude/launch.json b/.claude/launch.json index b539ad4..ce63214 100644 --- a/.claude/launch.json +++ b/.claude/launch.json @@ -2,7 +2,7 @@ "version": "0.0.1", "configurations": [ { - "name": "speisekarte-dev", + "name": "canteen-menu-dev", "runtimeExecutable": "C:\\Program Files\\nodejs\\npm.cmd", "runtimeArgs": ["run", "dev"], "port": 3000 diff --git a/README.md b/README.md index d677a02..754a829 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Speisekarte – Betriebskantine +# Canteen Menu – Speisekarte für die Betriebskantine Digitale Speisekarte für eine Firmenkantine (ca. 250 Mitarbeiter) mit öffentlicher Wochenansicht, Kantinen-Bereich zur Pflege der Gerichte und @@ -53,7 +53,7 @@ docker compose --env-file .env.local --profile dev up dev ```bash npm install -npm run dev # http://localhost:3000 +npm run dev # http://localhost:3000 (bindet an 0.0.0.0, auch im LAN erreichbar) ``` ## Umgebungsvariablen (Live-Betrieb) @@ -81,7 +81,7 @@ Oder klassisch ohne Docker: ```bash npm ci npm run build -npm run start # Port 3000 (hinter Reverse-Proxy betreiben) +npm run start # Port 3000, bindet an 0.0.0.0 (hinter Reverse-Proxy betreiben) ``` ### Passkeys für die Produktions-Domain freischalten @@ -90,8 +90,8 @@ Passkeys sind an die Domain gebunden. Aktuell ist `localhost` konfiguriert. Vor dem Livegang in der Supabase-Konfiguration (Management API oder Dashboard → Authentication → Settings) anpassen: -- `webauthn_rp_id` = `speisekarte.example.de` (die echte Domain, ohne Protokoll) -- `webauthn_rp_origins` = `https://speisekarte.example.de` +- `webauthn_rp_id` = `menu.example.de` (die echte Domain, ohne Protokoll) +- `webauthn_rp_origins` = `https://menu.example.de` - `passkey_enabled` = `true` (bereits aktiv) ## Datenbank @@ -116,7 +116,7 @@ Sicherheitsmodell (Row Level Security): ### Lokale PostgreSQL-Kopie -Die Datenbank `speisekarte` (Kopie von Schema + Daten aus Supabase, inkl. +Die Datenbank `canteen_menu` (Kopie von Schema + Daten aus Supabase, inkl. Minimal-Stubs für `auth`/`storage`) gibt es in zwei Varianten: **Per Docker:** Der Dienst `db` aus `docker-compose.yml` spielt die diff --git a/app/layout.tsx b/app/layout.tsx index aa0b6b3..a149d48 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -13,7 +13,7 @@ const geistSans = Geist({ }); export const metadata: Metadata = { - title: "Speisekarte", + title: "Canteen Menu", description: "Speisekarte der Betriebskantine", }; diff --git a/docker-compose.yml b/docker-compose.yml index 4774b7e..923930f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,5 @@ # ============================================================= -# Speisekarte – Docker-Setup +# Canteen Menu – Docker-Setup # # Produktion (App + lokale PostgreSQL-Kopie): # docker compose --env-file .env.local up -d --build @@ -10,12 +10,11 @@ # Die --env-file-Angabe speist NEXT_PUBLIC_* in den Build und # SUPABASE_SERVICE_ROLE_KEY in die Laufzeit-Umgebung. # -# "name" fixiert den Compose-Projektnamen explizit auf "speisekarte" – -# ohne diese Angabe leitet Compose ihn aus dem Ordnernamen ab und wirft -# dabei nicht-alphanumerische Zeichen (das "ß" in "Speißekarte") weg. +# "name" fixiert den Compose-Projektnamen explizit auf "canteen-menu" – +# ohne diese Angabe leitet Compose ihn aus dem Ordnernamen ab. # ============================================================= -name: speisekarte +name: canteen-menu services: # ---------- Next.js-App (Produktions-Build) ---------- @@ -25,14 +24,14 @@ services: args: NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY} - image: speisekarte-app - container_name: speisekarte-app + image: canteen-menu-app + container_name: canteen-menu-app environment: NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY} SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY} ports: - - "3000:3000" + - "0.0.0.0:3000:3000" restart: unless-stopped # ---------- Lokale PostgreSQL-Kopie (Ablage/Auswertungen) ---------- @@ -40,10 +39,10 @@ services: # automatisch in alphabetischer Reihenfolge eingespielt. db: image: postgres:17-alpine - container_name: speisekarte-db + container_name: canteen-menu-db environment: - POSTGRES_DB: speisekarte - POSTGRES_PASSWORD: ${LOCAL_PG_PASSWORD:-speisekarte} + POSTGRES_DB: canteen_menu + POSTGRES_PASSWORD: ${LOCAL_PG_PASSWORD:-canteen_menu} ports: # Host-Port 5433, da 5432 meist schon von einer nativen # PostgreSQL-Installation belegt ist. @@ -56,7 +55,7 @@ services: # ---------- Dev-Server (nur mit --profile dev) ---------- dev: image: node:24-alpine - container_name: speisekarte-dev + container_name: canteen-menu-dev profiles: ["dev"] working_dir: /app command: sh -c "npm install && npm run dev" @@ -65,7 +64,7 @@ services: NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY} SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY} ports: - - "3000:3000" + - "0.0.0.0:3000:3000" volumes: - .:/app - dev_node_modules:/app/node_modules diff --git a/package-lock.json b/package-lock.json index dee072c..350c6ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "speisekarte", + "name": "canteen-menu", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "speisekarte", + "name": "canteen-menu", "version": "0.1.0", "dependencies": { "@supabase/ssr": "^0.12.3", diff --git a/package.json b/package.json index f75855c..7a2bcf4 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { - "name": "speisekarte", + "name": "canteen-menu", "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev -H 0.0.0.0", "build": "next build", - "start": "next start", + "start": "next start -H 0.0.0.0", "lint": "eslint" }, "dependencies": { diff --git a/scripts/sync-local-db.ps1 b/scripts/sync-local-db.ps1 index c90b55d..c60af92 100644 --- a/scripts/sync-local-db.ps1 +++ b/scripts/sync-local-db.ps1 @@ -37,11 +37,11 @@ $SchemaFile = Join-Path $LocalDir "10_schema.sql" # 2. Lokale Datenbank neu aufbauen $env:PGPASSWORD = $env:LOCAL_PG_PASSWORD -& "$PgBin\psql" -h localhost -U postgres -c "drop database if exists speisekarte;" -& "$PgBin\psql" -h localhost -U postgres -c "create database speisekarte;" +& "$PgBin\psql" -h localhost -U postgres -c "drop database if exists canteen_menu;" +& "$PgBin\psql" -h localhost -U postgres -c "create database canteen_menu;" foreach ($file in @("00_stubs.sql", "10_schema.sql", "15_auth_users.sql", "20_data.sql")) { - & "$PgBin\psql" -h localhost -U postgres -d speisekarte -q -f (Join-Path $LocalDir $file) + & "$PgBin\psql" -h localhost -U postgres -d canteen_menu -q -f (Join-Path $LocalDir $file) } -Write-Host "Lokale Datenbank 'speisekarte' wurde aktualisiert." +Write-Host "Lokale Datenbank 'canteen_menu' wurde aktualisiert."