Sistema Full Stack Next.js
Wann verwenden
Verwenden Sie diese Skill für Login, Registrierung, Dashboard, benutzerspezifische Daten, Upload, Abrechnung oder eine eigene API. Für Landingpages und institutionelle Websites verwenden Sie die Skill site-estatico.
Ein Projekt erstellen
git clone https://github.com/guibean/nextjs-fullstack-template.git <slug>
cd <slug>
pnpm install
cp .env.example .env
Generieren Sie BETTER_AUTH_SECRET mit openssl rand -base64 48, konfigurieren Sie DATABASE_URL und führen Sie aus:
pnpm db:migrate
pnpm dev
Implementierungsreihenfolge
- Modellieren Sie Daten, Beziehungen, Berechtigungen und Bedrohungen.
- Ändern Sie
src/db/schema.tsund führen Siepnpm db:generateaus. - Wenden Sie Migrationen mit
pnpm db:migratean. - Konfigurieren Sie die Umgebungsvariablen in
src/env.ts; verwenden Sie keine Fallbacks außerhalb vonSKIP_ENV_VALIDATION. - Implementieren Sie Authentifizierung und Autorisierung auf dem Server.
- Validieren Sie alle Eingaben serverseitig mit Zod.
- Fügen Sie Rate-Limiting, Logs, Backups und Observability hinzu.
- Bauen Sie erst dann die Dashboard-Oberfläche.
Sicherheitsregeln
- Setzen Sie niemals
DATABASE_URL,BETTER_AUTH_SECRET,RESEND_API_KEYoderTURNSTILE_SECRET_KEYoffen. - Verwenden Sie
auth.api.getSession({ headers: await headers() })in geschützten Serverkomponenten. - Schützen Sie auch Route Handler und Server Actions.
- Verlassen Sie sich nicht auf clientseitige Validierung.
- Verwenden Sie
output: "export"nicht, wenn Authentifizierung, Datenbank oder Mutationen vorhanden sind. - Aktivieren Sie in der Produktion E-Mail-Verifizierung, Rate-Limiting und Passwort-Wiederherstellung.
Deployment auf der VPS
- Bauen Sie mit
pnpm build; das Ausgabeverzeichnis ist.next/standalone. - Ein Multi-Stage-Dockerfile ist enthalten.
- Wenden Sie Migrationen an, bevor Sie die Version wechseln.
- Verwenden Sie HTTPS, Reverse Proxy und einen verwalteten Prozess.
- Erstellen Sie ein Backup der PostgreSQL-Datenbank, bevor Sie destruktive Migrationen durchführen.
Checkliste
- env validiert
- Migrationen angewendet
- Login, Logout und Sitzung getestet
- Geschützte Route leitet ohne Sitzung weiter
- Geschützte API lehnt Anfragen ohne Sitzung ab
- Formular mit doppelter Validierung
-
pnpm lint,pnpm typecheck,pnpm build - Lighthouse ≥ 95 auf öffentlichen Seiten
- Backups und Rate-Limiting definiert