CLAUDE.md för en webbapp med TypeScript och Postgres

En projektinstruktion som ger agenten det den behöver för att bidra som en ny kollega dag ett: kommandon, struktur, konventioner och vad den aldrig får göra.

Typ
Instruktionsfil
Område
Kod
Verktyg
Claude Code
Uppdaterad
8 september 2026
CLAUDE.md
# Projekt: Bokningstjänsten

Webbapp för bokning av tider. Next.js App Router, TypeScript, Postgres via
Drizzle, Tailwind. Driftas på Vercel. Svenska i UI och i all text som
användare ser, engelska i kod och commit-meddelanden.

## Kommandon

- Installera: `pnpm install`
- Utveckling: `pnpm dev` (port 3000)
- Typkontroll: `pnpm typecheck`
- Tester: `pnpm test` (Vitest). Ett enskilt test: `pnpm test -- <sökväg>`
- Lint och format: `pnpm lint` och `pnpm format`
- Databas: `pnpm db:migrate` kör migrationer, `pnpm db:studio` öppnar Drizzle Studio
- Innan du säger att något är klart: `pnpm typecheck && pnpm lint && pnpm test`

## Struktur

- `app/` routes och layouts. Server components som standard.
- `components/` delade UI-komponenter. En komponent per fil.
- `lib/` domänlogik utan React. All databasåtkomst går via `lib/db/`.
- `db/schema.ts` är sanningen om datamodellen. Migrationer i `db/migrations/`.
- `tests/` speglar `lib/` och `app/`.

## Konventioner

- Lägg "use client" bara på komponenter som faktiskt behöver state, effekter
  eller webbläsar-API:er. Hämta data i server components.
- Validera all indata från klienten med Zod i `lib/validation/` innan den
  rör databasen.
- Fel: kasta `AppError` från `lib/errors.ts` med en användarvänlig svensk
  text. Logga aldrig personuppgifter.
- Datum: lagra som UTC, visa i Europe/Stockholm med `lib/time.ts`. Använd
  aldrig `new Date()` direkt i komponenter.
- Formatera pengar med `formatSEK` i `lib/format.ts`.
- Inga nya beroenden utan att fråga. Om du föreslår ett, säg varför och
  hur stort det är.

## Tester

- Skriv test för domänlogik i `lib/` innan du skriver koden när uppgiften
  är en bugg. Testet ska fallera först.
- Mocka inte databasen i integrationstester. Använd testdatabasen som
  `pnpm test` startar.
- Ändra inte befintliga tester för att få dem gröna utan att förklara
  varför testet var fel.

## Git

- Arbeta på en gren, aldrig direkt på main.
- Små commits med beskrivande meddelande på engelska i imperativ:
  "Add cancellation window to booking form".
- Kör inte `git push --force`, `git reset --hard` eller något som raderar
  arbete utan att fråga först.

## Gör inte

- Rör inte `db/migrations/` som redan är körda. Skapa nya.
- Ändra inte `.env*`. Säg vilka variabler som behövs.
- Ta inte bort loggning eller felhantering för att "förenkla".
- Skriv inte kommentarer som beskriver vad koden gör. Skriv kommentarer
  som förklarar varför, när det inte är uppenbart.

## När du är osäker

Fråga hellre än att gissa när det gäller datamodellen, betalningar eller
allt som rör personuppgifter. För UI-detaljer: välj det som liknar
befintliga sidor mest och nämn valet i din sammanfattning.

När den gör nytta

  • Första dagen du använder Claude Code i ett befintligt projekt.
  • När agenten gång på gång gör samma fel: kör fel testkommando, lägger filer på fel plats.
  • När flera personer i teamet kör agenter mot samma repo och behöver samma spelregler.

Så installerar du

Claude Code
Spara som CLAUDE.md i projektets rot. Om du redan har en AGENTS.md räcker en CLAUDE.md med raden @AGENTS.md.

Om instruktionsfiler

CLAUDE.md eller AGENTS.md i projektets rot. Talar om hur just det här projektet fungerar innan agenten rör en fil.

Närliggande