Se branchen solutions for eksempler på hvordan løse oppgavene nederst.
Til dette burde du ha følgende installert:
- Node.js (v18)
- Docker Desktop (v4.24) og/eller Docker Engine (v24)
- Om Docker ikke funker kan du også bruke en lokal PostgreSQL-instans
- pnpm (v8)
-
Klon repoet
git clone git@github.com:echo-webkom/next-backend-workshop
-
Sett opp .env-fil
cp .env.example .env
-
Installer avhengigheter
pnpm install
-
(Om du ikke har migrasjoner) Generer migrasjoner
pnpm db:generate
-
Start PostgreSQL-databasen
pnpm db:up
-
(Om du ikke har kjør migrasjoner) Kjør migrasjoner
pnpm db:migrate
-
(Valgfiritt) Seed databasen med testdata
pnpm db:seed
-
Start serveren
pnpm dev
-
Åpne http://localhost:3000 med nettleseren din for å se resultatet.
Inneholder SQL-filer som brukes til å sette opp databasen og migrasjoner. Disse kjøres av pnpm db:migrate
migrate.ts inneholder migrasjons-logikken, og kjører migrasjonsfilene i drizzle/migrations/ i rekkefølge.
seed.ts er et "seed"-script som kan initialisere databasen med testdata.
Inneholder statiske filer som skal serveres av Next.js. F.eks favicon.ico.
app - Inneholder sidene i appen. Disse er bygget opp av komponenter i components/.
db - Inneholder filer relatert til oppsett av databasen til Next.js applikasjonen.
lib - Inneholder hjelpefunksjoner som brukes i appen.
components - Inneholder komponenter som brukes i appen.
styles - Inneholder global CSS som brukes i appen.
constants.ts - Konstanter som brukes i appen. En type config fil.
Inneholder konfigurasjon for Drizzle. Trenger vanligvis ikke å endres på.
Inneholder konfigurasjon for Next.js. Trenger vanligvis ikke å endres på.
Inneholder konfigurasjon for Docker. Setter opp en PostgreSQL-database som brukes av appen.
Inneholder konfigurasjon for Tailwind. Her kan du legge til nye farge-variabler, fonts, osv.
Hint 💭
Lag en ny POST route i src/app/post/route.tsx, som bruker databasen til å lage et nytt innlegg.
Lag en ny side fil src/app/new-post/page.tsx med et skjema som tar inn tittel og innhold, og bruker POST routen til å lage et nytt innlegg.
Hint 💭
Bruk node:crypto (https://nodejs.org/api/crypto.html) til å lage en hash av passordet før det lagres i databasen.
Hint 💭
Lag en ny fil i actions/-mappen.
"use server";
export async function signIn(username: string, password: string) {
// ...
}