Konzepte, Nutzen und typische Clone-Szenarien — weniger Code.
Konzepte, Nutzen und typische Clone-Szenarien — weniger Code.
Preparing Ring content
Preparing Ring content
Preparing Ring content
Fertig, wenn: npm run dev Seiten ausliefert, GET /api/health healthy meldet (oder du AUTH_SECRET korrigiert hast), eine Auth.js-Anmeldung eine Sitzung herstellt und ein authentifizierter CRUD-Weg funktioniert (Entitäten oder Opportunities). Tunnel ready und der Smoke-Test für Mitgliedschaften über PaymentConductor sind erweitert: Sie blockieren das Branding am ersten Tag nicht.
Filtere mit Gründer / Entwickler in der Seitenleiste. Führe das nach der Installation und den Migrationen aus. Die Kernprüfungen sind ein kurzer Durchgang im Browser. Zahlungen brauchen das PSP-Env + 004_payment_transactions, bevor du den Checkout als grün betrachtest.
Erster Erfolg bedeutet: Der eigene server.ts / die Next-App liefert Seiten aus, Auth.js v5 kann eine Sitzung herstellen, DatabaseService liest und schreibt ohne Adapter-Abstürze, und die zentralen Marketplace-Routen laden. Am ersten Tag sind WayForPay, Stripe, PayPal, FCM oder eine Wallet-Verbindung nicht erforderlich.
| Stufe | Was funktionieren muss | Gut genug, um… |
|---|---|---|
| Kern | Startseite + /api/health + Anmeldung über einen Anbieter + ein CRUD-Weg | Branding anpassen, Tester einladen |
| Erweitert | GET /api/tunnel/test → status: ready; UI für Entitäten + Opportunities | Echtzeit / Discovery vorführen |
| Optionale Zahlung | Mitgliedschaft starten → Weiterleitung durch PaymentConductor oder Abrechnung über Guthaben | Sandbox-Checkout / Probe eines Rollen-Upgrades |
Nutze das LegioX-MCP legiox-env-validator (oder frag den Agenten mit dem Prompt unten), bevor du UI-Fehlern nachjagst. Es meldet fehlende Env-Werte. Es ändert keine .env, startet keine Prozesse neu und ruft keine PSPs auf, bis du zustimmst.
Start-Prompt:
Prüfe diesen Klon für den Smoke-Test des ersten Erfolgs:
AUTH_SECRET,DB_BACKEND_MODE/ Postgres-DB_*und optionalWAYFORPAY_*/STRIPE_*/PAYPAL_*. Liste fehlende Variablen und die Checkliste Kern gegenüber Optionale Zahlung aus/docs/getting-started/first-successauf. Schreibe keine Secrets und starte den Server nicht neu, bis ich zustimme.
Checkliste der Eingaben
.env.local aus env.local.template (oder ein eingebundenes k8s-Secret)http://localhost:3000 (oder deiner konfigurierten Site-URL)Geh vor Demos für Stakeholder den Happy Path eines Mitglieds selbst durch:
Kein leerer Bildschirm und kein Absturz des Datenbankadapters im Terminal.
Google, Apple oder Ring Mailer, je nachdem, was du konfiguriert hast (SMTP oder Ethereal).
Belegt JSONB-Schreibzugriffe in Postgres und die Rollenprüfungen.
| Prüfung | Bestanden? |
|---|---|
npm run dev startet ohne Absturz des Datenbankadapters | ☐ |
GET /api/health → healthy (oder AUTH_SECRET korrigiert) | ☐ |
| Anmeldung über einen Auth.js-Anbieter funktioniert | ☐ |
| Entität anlegen/auflisten oder Liste der Opportunities funktioniert in der UI | ☐ |
GET /api/tunnel/test → status: ready | ☐ |
| Optional: Start der Mitgliedschaft liefert Weiterleitung / Erfolg über Guthaben | ☐ |
Ja. Der erste Erfolg im Kern besteht aus Authentifizierung + Datenweg. PaymentConductor ist optional, bis du bezahlte Mitgliedschaften oder den Shop-Checkout vorführst.
ready, dass SSE live ist?Nein. /api/tunnel/test bestätigt Konfiguration und Anbietererkennung. Live-Streams brauchen einen angemeldeten Client, der /api/tunnel/sse (oder deinen konfigurierten Anbieter) aufruft.
004_payment_transactions für den Kern?Nein. Wende sie vor dem Smoke-Test für Optionale Zahlung an, damit das Ledger Mitgliedschafts- und Shop-Intents erfassen kann.
firebase-full kann bei einem Prototyp Startseite + Authentifizierung bestehen, aber die Tiefe von PaymentConductor und die ERP-/News-Funktionen setzen Postgres als Primärdatenbank voraus (k8s-postgres-fcm / supabase-fcm). Siehe Datenbankauswahl.
degraded: Ist die App ausgefallen?Der Prozess läuft. Ein fehlendes AUTH_SECRET (Postgres-Weg) oder fehlende kritische Firebase-Variablen verschlechtern den Status. Setze die Secrets, starte neu und wiederhole den curl.
GET /api/wallet/balance liefert 404, wenn noch keine Wallet-Zeile existiert. Das ist kein Fehler im Kern. Lege die Wallet nach der Authentifizierung über die Wallet-Abläufe an oder lade sie auf.
Voraussetzung: Installation und Env vor dieser Smoke-Checkliste.
Voraussetzung: Schema + 004_payment_transactions vor dem Smoke-Test von PaymentConductor.
Vertiefung: Auth.js-Anbieter und Sitzungsstruktur, sobald die Registrierung funktioniert.
Nächster Schritt: Rails, Ledger und Webhooks, nachdem der Start der Mitgliedschaft funktioniert.
Fertig, wenn: npm run dev Seiten ausliefert, GET /api/health healthy meldet (oder du AUTH_SECRET korrigiert hast), eine Auth.js-Anmeldung eine Sitzung herstellt und ein authentifizierter CRUD-Weg funktioniert (Entitäten oder Opportunities). Tunnel ready und der Smoke-Test für Mitgliedschaften über PaymentConductor sind erweitert: Sie blockieren das Branding am ersten Tag nicht.
Filtere mit Gründer / Entwickler in der Seitenleiste. Führe das nach der Installation und den Migrationen aus. Die Kernprüfungen sind ein kurzer Durchgang im Browser. Zahlungen brauchen das PSP-Env + 004_payment_transactions, bevor du den Checkout als grün betrachtest.
Erster Erfolg bedeutet: Der eigene server.ts / die Next-App liefert Seiten aus, Auth.js v5 kann eine Sitzung herstellen, DatabaseService liest und schreibt ohne Adapter-Abstürze, und die zentralen Marketplace-Routen laden. Am ersten Tag sind WayForPay, Stripe, PayPal, FCM oder eine Wallet-Verbindung nicht erforderlich.
| Stufe | Was funktionieren muss | Gut genug, um… |
|---|---|---|
| Kern | Startseite + /api/health + Anmeldung über einen Anbieter + ein CRUD-Weg | Branding anpassen, Tester einladen |
| Erweitert | GET /api/tunnel/test → status: ready; UI für Entitäten + Opportunities | Echtzeit / Discovery vorführen |
| Optionale Zahlung | Mitgliedschaft starten → Weiterleitung durch PaymentConductor oder Abrechnung über Guthaben | Sandbox-Checkout / Probe eines Rollen-Upgrades |
Nutze das LegioX-MCP legiox-env-validator (oder frag den Agenten mit dem Prompt unten), bevor du UI-Fehlern nachjagst. Es meldet fehlende Env-Werte. Es ändert keine .env, startet keine Prozesse neu und ruft keine PSPs auf, bis du zustimmst.
Start-Prompt:
Prüfe diesen Klon für den Smoke-Test des ersten Erfolgs:
AUTH_SECRET,DB_BACKEND_MODE/ Postgres-DB_*und optionalWAYFORPAY_*/STRIPE_*/PAYPAL_*. Liste fehlende Variablen und die Checkliste Kern gegenüber Optionale Zahlung aus/docs/getting-started/first-successauf. Schreibe keine Secrets und starte den Server nicht neu, bis ich zustimme.
Checkliste der Eingaben
.env.local aus env.local.template (oder ein eingebundenes k8s-Secret)http://localhost:3000 (oder deiner konfigurierten Site-URL)Geh vor Demos für Stakeholder den Happy Path eines Mitglieds selbst durch:
Kein leerer Bildschirm und kein Absturz des Datenbankadapters im Terminal.
Google, Apple oder Ring Mailer, je nachdem, was du konfiguriert hast (SMTP oder Ethereal).
Belegt JSONB-Schreibzugriffe in Postgres und die Rollenprüfungen.
| Prüfung | Bestanden? |
|---|---|
npm run dev startet ohne Absturz des Datenbankadapters | ☐ |
GET /api/health → healthy (oder AUTH_SECRET korrigiert) | ☐ |
| Anmeldung über einen Auth.js-Anbieter funktioniert | ☐ |
| Entität anlegen/auflisten oder Liste der Opportunities funktioniert in der UI | ☐ |
GET /api/tunnel/test → status: ready | ☐ |
| Optional: Start der Mitgliedschaft liefert Weiterleitung / Erfolg über Guthaben | ☐ |
Ja. Der erste Erfolg im Kern besteht aus Authentifizierung + Datenweg. PaymentConductor ist optional, bis du bezahlte Mitgliedschaften oder den Shop-Checkout vorführst.
ready, dass SSE live ist?Nein. /api/tunnel/test bestätigt Konfiguration und Anbietererkennung. Live-Streams brauchen einen angemeldeten Client, der /api/tunnel/sse (oder deinen konfigurierten Anbieter) aufruft.
004_payment_transactions für den Kern?Nein. Wende sie vor dem Smoke-Test für Optionale Zahlung an, damit das Ledger Mitgliedschafts- und Shop-Intents erfassen kann.
firebase-full kann bei einem Prototyp Startseite + Authentifizierung bestehen, aber die Tiefe von PaymentConductor und die ERP-/News-Funktionen setzen Postgres als Primärdatenbank voraus (k8s-postgres-fcm / supabase-fcm). Siehe Datenbankauswahl.
degraded: Ist die App ausgefallen?Der Prozess läuft. Ein fehlendes AUTH_SECRET (Postgres-Weg) oder fehlende kritische Firebase-Variablen verschlechtern den Status. Setze die Secrets, starte neu und wiederhole den curl.
GET /api/wallet/balance liefert 404, wenn noch keine Wallet-Zeile existiert. Das ist kein Fehler im Kern. Lege die Wallet nach der Authentifizierung über die Wallet-Abläufe an oder lade sie auf.
Voraussetzung: Installation und Env vor dieser Smoke-Checkliste.
Voraussetzung: Schema + 004_payment_transactions vor dem Smoke-Test von PaymentConductor.
Vertiefung: Auth.js-Anbieter und Sitzungsstruktur, sobald die Registrierung funktioniert.
Nächster Schritt: Rails, Ledger und Webhooks, nachdem der Start der Mitgliedschaft funktioniert.
Fertig, wenn: npm run dev Seiten ausliefert, GET /api/health healthy meldet (oder du AUTH_SECRET korrigiert hast), eine Auth.js-Anmeldung eine Sitzung herstellt und ein authentifizierter CRUD-Weg funktioniert (Entitäten oder Opportunities). Tunnel ready und der Smoke-Test für Mitgliedschaften über PaymentConductor sind erweitert: Sie blockieren das Branding am ersten Tag nicht.
Filtere mit Gründer / Entwickler in der Seitenleiste. Führe das nach der Installation und den Migrationen aus. Die Kernprüfungen sind ein kurzer Durchgang im Browser. Zahlungen brauchen das PSP-Env + 004_payment_transactions, bevor du den Checkout als grün betrachtest.
Erster Erfolg bedeutet: Der eigene server.ts / die Next-App liefert Seiten aus, Auth.js v5 kann eine Sitzung herstellen, DatabaseService liest und schreibt ohne Adapter-Abstürze, und die zentralen Marketplace-Routen laden. Am ersten Tag sind WayForPay, Stripe, PayPal, FCM oder eine Wallet-Verbindung nicht erforderlich.
| Stufe | Was funktionieren muss | Gut genug, um… |
|---|---|---|
| Kern | Startseite + /api/health + Anmeldung über einen Anbieter + ein CRUD-Weg | Branding anpassen, Tester einladen |
| Erweitert | GET /api/tunnel/test → status: ready; UI für Entitäten + Opportunities | Echtzeit / Discovery vorführen |
| Optionale Zahlung | Mitgliedschaft starten → Weiterleitung durch PaymentConductor oder Abrechnung über Guthaben | Sandbox-Checkout / Probe eines Rollen-Upgrades |
Nutze das LegioX-MCP legiox-env-validator (oder frag den Agenten mit dem Prompt unten), bevor du UI-Fehlern nachjagst. Es meldet fehlende Env-Werte. Es ändert keine .env, startet keine Prozesse neu und ruft keine PSPs auf, bis du zustimmst.
Start-Prompt:
Prüfe diesen Klon für den Smoke-Test des ersten Erfolgs:
AUTH_SECRET,DB_BACKEND_MODE/ Postgres-DB_*und optionalWAYFORPAY_*/STRIPE_*/PAYPAL_*. Liste fehlende Variablen und die Checkliste Kern gegenüber Optionale Zahlung aus/docs/getting-started/first-successauf. Schreibe keine Secrets und starte den Server nicht neu, bis ich zustimme.
Checkliste der Eingaben
.env.local aus env.local.template (oder ein eingebundenes k8s-Secret)http://localhost:3000 (oder deiner konfigurierten Site-URL)Geh vor Demos für Stakeholder den Happy Path eines Mitglieds selbst durch:
Kein leerer Bildschirm und kein Absturz des Datenbankadapters im Terminal.
Google, Apple oder Ring Mailer, je nachdem, was du konfiguriert hast (SMTP oder Ethereal).
Belegt JSONB-Schreibzugriffe in Postgres und die Rollenprüfungen.
| Prüfung | Bestanden? |
|---|---|
npm run dev startet ohne Absturz des Datenbankadapters | ☐ |
GET /api/health → healthy (oder AUTH_SECRET korrigiert) | ☐ |
| Anmeldung über einen Auth.js-Anbieter funktioniert | ☐ |
| Entität anlegen/auflisten oder Liste der Opportunities funktioniert in der UI | ☐ |
GET /api/tunnel/test → status: ready | ☐ |
| Optional: Start der Mitgliedschaft liefert Weiterleitung / Erfolg über Guthaben | ☐ |
Ja. Der erste Erfolg im Kern besteht aus Authentifizierung + Datenweg. PaymentConductor ist optional, bis du bezahlte Mitgliedschaften oder den Shop-Checkout vorführst.
ready, dass SSE live ist?Nein. /api/tunnel/test bestätigt Konfiguration und Anbietererkennung. Live-Streams brauchen einen angemeldeten Client, der /api/tunnel/sse (oder deinen konfigurierten Anbieter) aufruft.
004_payment_transactions für den Kern?Nein. Wende sie vor dem Smoke-Test für Optionale Zahlung an, damit das Ledger Mitgliedschafts- und Shop-Intents erfassen kann.
firebase-full kann bei einem Prototyp Startseite + Authentifizierung bestehen, aber die Tiefe von PaymentConductor und die ERP-/News-Funktionen setzen Postgres als Primärdatenbank voraus (k8s-postgres-fcm / supabase-fcm). Siehe Datenbankauswahl.
degraded: Ist die App ausgefallen?Der Prozess läuft. Ein fehlendes AUTH_SECRET (Postgres-Weg) oder fehlende kritische Firebase-Variablen verschlechtern den Status. Setze die Secrets, starte neu und wiederhole den curl.
GET /api/wallet/balance liefert 404, wenn noch keine Wallet-Zeile existiert. Das ist kein Fehler im Kern. Lege die Wallet nach der Authentifizierung über die Wallet-Abläufe an oder lade sie auf.
Voraussetzung: Installation und Env vor dieser Smoke-Checkliste.
Voraussetzung: Schema + 004_payment_transactions vor dem Smoke-Test von PaymentConductor.
Vertiefung: Auth.js-Anbieter und Sitzungsstruktur, sobald die Registrierung funktioniert.
Nächster Schritt: Rails, Ledger und Webhooks, nachdem der Start der Mitgliedschaft funktioniert.
Erwartet wird Next.js bereit unter http://localhost:3000. Das Paket-Skript führt node --import tsx server.ts aus. Mit RING_DEPLOY_TARGET=self-hosted kann der eigene Server natives WSS protokollieren.
Geprüfte Struktur (app/api/health/route.ts): status ist healthy | degraded | unhealthy (nicht "ok"). services.database ist postgresql oder firebase. Fehlendes AUTH_SECRET → degraded und HTTP 503. HEAD liefert 200, wenn der Prozess läuft.
/: Erwartet wird HTTP 200, kein leerer Bildschirm und kein Adapter-Absturz im Terminal./login auf (ein Sprachpräfix kann gelten: /en/login).auth.ts ab: Google OAuth, Apple, Ring Mailer (OTP / Magic Link / E-Mail + Passwort), Google One Tap oder Krypto-Wallet-Credentials. Der Standardbaum liefert GitHub/Discord nicht mit./profile zeigt die Benutzerdaten, und sie bleiben nach dem Neuladen erhalten. Optional: GET /api/auth/session mit den Browser-Cookies liefert { user: { id, email, role, … } }./api/entities und /api/opportunities erfordern eine Sitzung: 401 ohne Cookies ist zu erwarten.
Nach der Anmeldung im Browser:
/entities: Liste und Erstellformular werden abgeschickt (ein Visitor kann beim Schreiben 403 erhalten; nutze ein Testkonto mit member/admin)./opportunities: Die Liste lädt für deine Rolle.Optionale Prüfung in Postgres:
Nach der ersten Anmeldung ist ein Zählwert ≥ 1 zu erwarten. Eine Route /api/test-db gibt es nicht: nutze psql oder die authentifizierten APIs.
Erwartet werden "ready" und eine Anbieterliste aus lib/tunnel/config. Live-SSE: Tab Network → /api/tunnel/sse nach der Anmeldung. Siehe Tunnel-Protokoll.
Erst nachdem die Migrationen 004_payment_transactions.sql angewendet haben und du das Env des Zahlungsanbieters aus env.local.template gesetzt hast (WAYFORPAY_* und/oder STRIPE_* und/oder PAYPAL_*).
UPGRADEABLE_ROLES, kein Kauf durch platform-admin)./membership → wähle eine höhere Stufe und eine konfigurierte Rail (card → WayForPay/Stripe über PaymentConductor, paypal oder credit_balance, wenn die Wallet Guthaben hat).initiateMembershipPayment (app/_actions/membership-payment.ts) ruft PaymentConductor.createCheckout({ purpose: 'membership_upgrade', … }) auf (bei manchen Rails zuerst SubscriptionConductor)./api/payments/wayforpay/webhook, /api/payments/stripe/webhook, /api/payments/paypal/webhook (getWebhookUrl in lib/payments/payment.config.ts).checkout.session.completed / PayPal-Capture landet die UI auf /membership/success oder /membership/failure.Erkläre den Produktions-Checkout nicht für fertig, solange HMAC-/Signaturprüfung und Rücksprung-URLs nicht zu deiner öffentlichen Site-URL passen. Im Detail: PaymentConductor.
Sandbox-Gebühr → PaymentConductor → Webhook. Erst, wenn das Zahlungs-Env gesetzt ist.
Authentifizierung + ein CRUD-Ablauf ohne Push-Benachrichtigungen oder Wallet ist trotzdem ein gültiger Entwicklungsklon. Binde FCM und PaymentConductor an, bevor du bezahlte Mitgliedschaften oder einen Shop-Checkout versprichst (Umgebung).
DB_* / DB_BACKEND_MODE in den Voraussetzungen.AUTH_SECRET und OAuth-Weiterleitungs-URIs (http://localhost:3000/api/auth/callback/google).WAYFORPAY_* / Stripe / PayPal setzen und erneut versuchen.| Skripte | npm run type-check, npm run build (der Build führt type-check aus) |
Die Postgres-Erkennung der Health-Route nutzt DATABASE_BACKEND=postgresql oder DB_HOST / POSTGRES_HOST, nicht allein den String DB_BACKEND_MODE. Halte beide Variablengruppen mit env.local.template abgestimmt, damit services.database postgresql meldet, wenn du es erwartest.
Gleicher Ablauf: Korrekturen an Authentifizierung und Datenbank, wenn eine Zeile der Checkliste rot bleibt.
Erwartet wird Next.js bereit unter http://localhost:3000. Das Paket-Skript führt node --import tsx server.ts aus. Mit RING_DEPLOY_TARGET=self-hosted kann der eigene Server natives WSS protokollieren.
Geprüfte Struktur (app/api/health/route.ts): status ist healthy | degraded | unhealthy (nicht "ok"). services.database ist postgresql oder firebase. Fehlendes AUTH_SECRET → degraded und HTTP 503. HEAD liefert 200, wenn der Prozess läuft.
/: Erwartet wird HTTP 200, kein leerer Bildschirm und kein Adapter-Absturz im Terminal./login auf (ein Sprachpräfix kann gelten: /en/login).auth.ts ab: Google OAuth, Apple, Ring Mailer (OTP / Magic Link / E-Mail + Passwort), Google One Tap oder Krypto-Wallet-Credentials. Der Standardbaum liefert GitHub/Discord nicht mit./profile zeigt die Benutzerdaten, und sie bleiben nach dem Neuladen erhalten. Optional: GET /api/auth/session mit den Browser-Cookies liefert { user: { id, email, role, … } }./api/entities und /api/opportunities erfordern eine Sitzung: 401 ohne Cookies ist zu erwarten.
Nach der Anmeldung im Browser:
/entities: Liste und Erstellformular werden abgeschickt (ein Visitor kann beim Schreiben 403 erhalten; nutze ein Testkonto mit member/admin)./opportunities: Die Liste lädt für deine Rolle.Optionale Prüfung in Postgres:
Nach der ersten Anmeldung ist ein Zählwert ≥ 1 zu erwarten. Eine Route /api/test-db gibt es nicht: nutze psql oder die authentifizierten APIs.
Erwartet werden "ready" und eine Anbieterliste aus lib/tunnel/config. Live-SSE: Tab Network → /api/tunnel/sse nach der Anmeldung. Siehe Tunnel-Protokoll.
Erst nachdem die Migrationen 004_payment_transactions.sql angewendet haben und du das Env des Zahlungsanbieters aus env.local.template gesetzt hast (WAYFORPAY_* und/oder STRIPE_* und/oder PAYPAL_*).
UPGRADEABLE_ROLES, kein Kauf durch platform-admin)./membership → wähle eine höhere Stufe und eine konfigurierte Rail (card → WayForPay/Stripe über PaymentConductor, paypal oder credit_balance, wenn die Wallet Guthaben hat).initiateMembershipPayment (app/_actions/membership-payment.ts) ruft PaymentConductor.createCheckout({ purpose: 'membership_upgrade', … }) auf (bei manchen Rails zuerst SubscriptionConductor)./api/payments/wayforpay/webhook, /api/payments/stripe/webhook, /api/payments/paypal/webhook (getWebhookUrl in lib/payments/payment.config.ts).checkout.session.completed / PayPal-Capture landet die UI auf /membership/success oder /membership/failure.Erkläre den Produktions-Checkout nicht für fertig, solange HMAC-/Signaturprüfung und Rücksprung-URLs nicht zu deiner öffentlichen Site-URL passen. Im Detail: PaymentConductor.
Sandbox-Gebühr → PaymentConductor → Webhook. Erst, wenn das Zahlungs-Env gesetzt ist.
Authentifizierung + ein CRUD-Ablauf ohne Push-Benachrichtigungen oder Wallet ist trotzdem ein gültiger Entwicklungsklon. Binde FCM und PaymentConductor an, bevor du bezahlte Mitgliedschaften oder einen Shop-Checkout versprichst (Umgebung).
DB_* / DB_BACKEND_MODE in den Voraussetzungen.AUTH_SECRET und OAuth-Weiterleitungs-URIs (http://localhost:3000/api/auth/callback/google).WAYFORPAY_* / Stripe / PayPal setzen und erneut versuchen.| Skripte | npm run type-check, npm run build (der Build führt type-check aus) |
Die Postgres-Erkennung der Health-Route nutzt DATABASE_BACKEND=postgresql oder DB_HOST / POSTGRES_HOST, nicht allein den String DB_BACKEND_MODE. Halte beide Variablengruppen mit env.local.template abgestimmt, damit services.database postgresql meldet, wenn du es erwartest.
Gleicher Ablauf: Korrekturen an Authentifizierung und Datenbank, wenn eine Zeile der Checkliste rot bleibt.
Erwartet wird Next.js bereit unter http://localhost:3000. Das Paket-Skript führt node --import tsx server.ts aus. Mit RING_DEPLOY_TARGET=self-hosted kann der eigene Server natives WSS protokollieren.
Geprüfte Struktur (app/api/health/route.ts): status ist healthy | degraded | unhealthy (nicht "ok"). services.database ist postgresql oder firebase. Fehlendes AUTH_SECRET → degraded und HTTP 503. HEAD liefert 200, wenn der Prozess läuft.
/: Erwartet wird HTTP 200, kein leerer Bildschirm und kein Adapter-Absturz im Terminal./login auf (ein Sprachpräfix kann gelten: /en/login).auth.ts ab: Google OAuth, Apple, Ring Mailer (OTP / Magic Link / E-Mail + Passwort), Google One Tap oder Krypto-Wallet-Credentials. Der Standardbaum liefert GitHub/Discord nicht mit./profile zeigt die Benutzerdaten, und sie bleiben nach dem Neuladen erhalten. Optional: GET /api/auth/session mit den Browser-Cookies liefert { user: { id, email, role, … } }./api/entities und /api/opportunities erfordern eine Sitzung: 401 ohne Cookies ist zu erwarten.
Nach der Anmeldung im Browser:
/entities: Liste und Erstellformular werden abgeschickt (ein Visitor kann beim Schreiben 403 erhalten; nutze ein Testkonto mit member/admin)./opportunities: Die Liste lädt für deine Rolle.Optionale Prüfung in Postgres:
Nach der ersten Anmeldung ist ein Zählwert ≥ 1 zu erwarten. Eine Route /api/test-db gibt es nicht: nutze psql oder die authentifizierten APIs.
Erwartet werden "ready" und eine Anbieterliste aus lib/tunnel/config. Live-SSE: Tab Network → /api/tunnel/sse nach der Anmeldung. Siehe Tunnel-Protokoll.
Erst nachdem die Migrationen 004_payment_transactions.sql angewendet haben und du das Env des Zahlungsanbieters aus env.local.template gesetzt hast (WAYFORPAY_* und/oder STRIPE_* und/oder PAYPAL_*).
UPGRADEABLE_ROLES, kein Kauf durch platform-admin)./membership → wähle eine höhere Stufe und eine konfigurierte Rail (card → WayForPay/Stripe über PaymentConductor, paypal oder credit_balance, wenn die Wallet Guthaben hat).initiateMembershipPayment (app/_actions/membership-payment.ts) ruft PaymentConductor.createCheckout({ purpose: 'membership_upgrade', … }) auf (bei manchen Rails zuerst SubscriptionConductor)./api/payments/wayforpay/webhook, /api/payments/stripe/webhook, /api/payments/paypal/webhook (getWebhookUrl in lib/payments/payment.config.ts).checkout.session.completed / PayPal-Capture landet die UI auf /membership/success oder /membership/failure.Erkläre den Produktions-Checkout nicht für fertig, solange HMAC-/Signaturprüfung und Rücksprung-URLs nicht zu deiner öffentlichen Site-URL passen. Im Detail: PaymentConductor.
Sandbox-Gebühr → PaymentConductor → Webhook. Erst, wenn das Zahlungs-Env gesetzt ist.
Authentifizierung + ein CRUD-Ablauf ohne Push-Benachrichtigungen oder Wallet ist trotzdem ein gültiger Entwicklungsklon. Binde FCM und PaymentConductor an, bevor du bezahlte Mitgliedschaften oder einen Shop-Checkout versprichst (Umgebung).
DB_* / DB_BACKEND_MODE in den Voraussetzungen.AUTH_SECRET und OAuth-Weiterleitungs-URIs (http://localhost:3000/api/auth/callback/google).WAYFORPAY_* / Stripe / PayPal setzen und erneut versuchen.| Skripte | npm run type-check, npm run build (der Build führt type-check aus) |
Die Postgres-Erkennung der Health-Route nutzt DATABASE_BACKEND=postgresql oder DB_HOST / POSTGRES_HOST, nicht allein den String DB_BACKEND_MODE. Halte beide Variablengruppen mit env.local.template abgestimmt, damit services.database postgresql meldet, wenn du es erwartest.
Gleicher Ablauf: Korrekturen an Authentifizierung und Datenbank, wenn eine Zeile der Checkliste rot bleibt.