server/CLAUDE.md

2 KiB

Sidelinja - Claude Code Prosjektguide

Prosjektoversikt

Sidelinja er et redaksjonelt operativsystem og kunnskapsgraf for podcast-produksjon. Self-hosted på Hetzner VPS med full datakontroll.

Nøkkelfiler

  • ARCHITECTURE.md — Overordnet arkitektur, stack, datamodell og infrastruktur
  • docs/setup/produksjon.md — Steg-for-steg oppsett av Hetzner VPS fra scratch
  • docs/setup/lokal.md — Steg-for-steg oppsett av lokalt WSL2 utviklingsmiljø
  • docs/features/ — Detaljerte feature-spesifikasjoner:
    • kunnskapsgraf_og_relasjoner.md — Nodes & Edges-modell i PostgreSQL
    • ai_research_klipper.md — AI-drevet research-inntak til kunnskapsgrafen
    • live_ai_assistent.md — Sanntids faktoid-oppslag under innspilling
    • produktivitetssuite.md — Kanban, chat, show notes (SpacetimeDB-tung)
    • podcastfabrikken.md — Publiseringspipeline (Whisper + OpenRouter + RSS)
    • podcast_statistikk.md — IAB-kompatibel lytterstatistikk fra Caddy-logger
    • valgomat.md — Publikumsrettet valgomat (SpacetimeDB)
    • jobbkø.md — Felles PostgreSQL-basert køsystem for alle bakgrunnsjobber
    • synkronisering.md — PostgreSQL ↔ SpacetimeDB dataflyt og eierskapsmodell
    • api_grensesnitt.md — Kommunikasjonskart: SvelteKit er web-API, Rust er worker

Stack

  • Backend/Automasjon: Rust
  • Frontend: SvelteKit (TypeScript, PWA)
  • Sanntid: SpacetimeDB (arbeidsflyt/state) + LiveKit (lyd/video)
  • Database: PostgreSQL (persistent/kunnskapsgraf) + SpacetimeDB (in-memory/sanntid)
  • AI: faster-whisper (transkripsjon), OpenRouter (Claude-modeller)
  • Infra: Docker Compose, Caddy, Authentik (SSO), Forgejo (Git)

Viktige regler

  • Aldri eksponere databaseporter mot internett (kun port 80/443 via Caddy)
  • Bruk tea CLI, ikke gh (vi bruker Forgejo, ikke GitHub)
  • Tunge AI-jobber (Whisper, OpenRouter) skal aldri blokkere web-requests
  • Kod og test lokalt i WSL2, deploy via push til Forgejo + SSH pull
  • Sjekk alltid docs/features/<navn>.md før du implementerer en feature