En moderne web-applikasjon bygget med Next.js, Prisma, og PostgreSQL.
- Frontend: Next.js 15, React 19, TypeScript
- Backend: tRPC, Better Auth
- Database: PostgreSQL (via Docker), Prisma ORM
- Styling: TailwindCSS v4
- Pakkebehandler: pnpm
- Code Quality: Biome (linting og formatering)
Før du starter, sørg for at du har følgende installert:
- Node.js (versjon 18 eller nyere)
- pnpm pakkebehandler
- Docker for databasen
- Make (eller bruk kommandoene direkte)
Følg disse stegene for å sette opp prosjektet lokalt:
pnpm installOpprett en PostgreSQL database i Docker:
make db-createStart database-kontaineren:
make db-startAnvend database-migreringer:
make migrateGenerer TypeScript-typer for databasen:
make generateStart Next.js utviklingsserver:
pnpm devApplikasjonen vil nå være tilgjengelig på http://localhost:3000.
Prosjektet inkluderer flere nyttige database-kommandoer via Makefile:
make db-create- Opprett ny PostgreSQL database i Dockermake db-start- Start eksisterende database-kontainermake db-stop- Stopp database-kontainermake db-remove- Fjern database-kontainer (data går tapt)make db-logs- Vis database-loggermake db-connect- Koble til database med psqlmake db-status- Vis status for database-kontainermake migrate- Kjør Prisma migreringermake migrate-reset- Tilbakestill database og anvend alle migreringermake generate- Generer Prisma Clientmake studio- Åpne Prisma Studio (database GUI)
Prosjektet bruker Biome for linting og formatering:
# Sjekk kode-kvalitet
pnpm check
# Fiks automatisk rettbare problemer
pnpm check:write
# Fiks med usikre endringer
pnpm check:unsafe# Bygg for produksjon
pnpm build
# Start produksjonsserver
pnpm start
# Forhåndsvis produksjonsbygg
pnpm previewsrc/
├── app/ # Next.js App Router
├── components/ # React komponenter
│ ├── ui/ # UI komponenter (shadcn/ui)
│ └── form/ # Skjema-komponenter
├── lib/ # Hjelpefunksjoner og konfigurasjon
├── schemas/ # Zod-skjemaer for validering
├── server/ # Server-side kode og tRPC API
├── services/ # Business logic
└── trpc/ # tRPC konfigurasjon
Kopier .env.example til .env og fyll inn nødvendige miljøvariabler:
cp .env.example .envDATABASE_URL="postgresql://postgres:password@localhost:5452/proton"
BETTER_AUTH_SECRET="your-secret-key"
BETTER_AUTH_URL="http://localhost:3000"Prosjektet bruker PostgreSQL som database med Prisma som ORM. Database-skjemaet finnes i prisma/schema.prisma.
Applikasjonen bruker Better Auth for autentisering med støtte for:
- E-post/passord pålogging med TIHLDE bruker
- Lag-basert tilgangskontroll
Applikasjonen kan lastes ned som en PWA. For å opprette nøkler for web pushvarsler kjør følgende kommando:
- npx web-push generate-vapid-keys
- Fyll inn returnerte verdier i .env filen din