Better Auth - Next.js Showcase
Über dieses Projekt

Open-Source-Lern-Boilerplate, von Grund auf gebaut, um die Trade-offs zwischen client- und serverseitiger Authentifizierung greifbar zu machen — zwei optisch identische Dashboards, zwei komplett unterschiedliche Mechaniken.
Meine Rolle
- Alleiniger Autor: Architektur, Code, Schema, Deployment und Doku - Design des pädagogischen Kontrasts: clientuseSession() + router.replace() vs server auth.api.getSession() + unauthorized()-Interrupt
- Prisma über den HTTP-Adapter (@prisma/adapter-neon) an Neon angebunden — Edge/Serverless-kompatibel
- E-Mail/Passwort + GitHub + Google OAuth über better-auth implementiert
- Resend-basierte E-Mail-Verifizierung mit autoSignInAfterVerification hinzugefügt
- React Server Components CVE-Schwachstellen gepatcht (Security-Härtung)
- CLAUDE.md + README.md + .env.template verfasst, damit jeder klonen, konfigurieren und starten kann
Technische Highlights
- Bewusst keinmiddleware.ts — jede geschützte Route übernimmt ihren eigenen Session-Check und macht den Trade-off sichtbar
- Catch-all Auth-Route unter /api/auth/[...all] deckt sämtliche better-auth HTTP-Aufrufe in 4 Zeilen ab
- experimental.authInterrupts aktiviert — unauthorized() wirft echten HTTP 401 aus dem RSC, rendert app/unauthorized.tsx in-place, URL bleibt erhalten, kein Client-Flash
- Server Actions für Sign-out, Multi-Session-Revoke und Profil-Updates mit revalidatePath()
- Turbopack für dev und build
- Prisma-Schema mit Cascading Deletes, FK-Indizes, Unique Constraints auf E-Mail + Token
Gelöste Herausforderungen
- Zwei Routen, die identisch aussehen, aber gegensätzlich funktionieren — visuell synchron über eine geteilteUnauthorizedScreen-Komponente
- Neon-HTTP- vs TCP-Falle: @prisma/client allein fällt still auf TCP zurück und bricht in Edge-Runtimes — durch verpflichtenden Adapter im Singleton gelöst
- Resend-Sandbox-Falle: onboarding@resend.dev liefert nur an die registrierte E-Mail — als Lernpunkt dokumentiert
- Session-Wahrheitsgrenze: "better-auth ist die einzige Quelle der Session-Wahrheit" durchgesetzt — kein localStorage-Drift, kein spoofbarer Client-Zustand
Gezeigte Expertise
✅ Beherrschung des Next.js 15 App Routers — RSC, Server Actions, Route-Interceptors,experimental.authInterrupts
✅ Tiefes Verständnis der Auth-Trade-offs: Client-Hooks vs Server-Session, 200 vs 401, URL-Erhalt, Content-Leak-Fenster
✅ Edge/Serverless-Datenbank-Muster mit Neons HTTP-Treiber + Prisma-Adapter
✅ Security-Bewusstsein: CVE-Behebung, Env-Validierung, kein clientseitiger Auth-Zustand
✅ Lehren durch Code: bewusste architektonische Kontraste, eingebettete Docs, MIT-lizenzierter wiederverwendbarer Seed