Next.js-platform med PostgreSQL: offentlig oversigt over partnere (virksomheder), og efter login med Mercantec Auth mulighed for at se og administrere elever (søgende eller placeret hos partner).
- Node.js 22+ (lokal udvikling)
- Docker med Compose (valgfrit hele stacken)
- En OAuth-klient hos Mercantec Auth
- Registrér en klient med redirect URI der matcher præcist (inkl. trailing slash hvis I bruger den):
- Lokal:
http://localhost:3000/api/auth/callback/mercantec - Produktion:
https://<jeres-domæne>/api/auth/callback/mercantec
- Lokal:
- Brug PKCE (påkrævet for mange offentlige klienter). Uden
client_secretsættes automatisktoken_endpoint_auth_method: nonei appen. - Efter log ud ryddes Mercantec-session via
GET https://auth.mercantec.tech/signout?returnUrl=...(allerede koblet på Log ud).
Kopier .env.example til .env og udfyld:
| Variabel | Beskrivelse |
|---|---|
DATABASE_URL |
PostgreSQL-forbindelse |
AUTH_SECRET |
Hemmelighed til Auth.js (fx openssl rand -base64 32) |
AUTH_URL |
Appens offentlige base-URL (fx http://localhost:3000) |
MERCANTEC_CLIENT_ID |
Client id fra Mercantec |
MERCANTEC_CLIENT_SECRET |
Valgfri, kun for fortrolig klient |
# Opret .env med mindst AUTH_SECRET og MERCANTEC_CLIENT_ID
docker compose up --buildApp: http://localhost:3000. Postgres eksponeres på port 5432 (bruger/adgangskode/database: fee / fee / fee som i Compose-filen).
Ved docker compose up kører servicen migrate først (prisma migrate deploy med fuldt build-image); når den er færdig, starter app (Next.js standalone).
- Start kun databasen:
docker compose up -d db .envmedDATABASE_URL=postgresql://fee:fee@localhost:5432/feeog øvrige variablernpm installnpx prisma migrate deploy(ellernpm run db:migrateunder udvikling)npm run dev
Valgfri demo-data: npm run db:seed
npm run dev— udviklingsserver (Turbopack)npm run build/npm start— produktionnpm run db:migrate— Prisma migrate devnpm run db:deploy— migrate deploy (fx CI/prod)npm run db:seed— seed
src/app/(public)/page.tsx— offentlig partnerlistesrc/app/(protected)/elever/— elever (kræver login)src/app/(protected)/partnere/— CRUD partnere (kræver login)src/auth.ts— Auth.js + Mercantec OAuth (PKCE, profil fra access token JWT)
Alle indloggede brugere kan oprette/rette/slette data (som aftalt). I kan senere begrænse dette via role-claims i Mercantec-JWT i server actions.