server/CLAUDE.md
vegard 4b56560bf9 Lokalt utviklingsmiljø, Whisper-benchmark, AI Gateway og repostruktur
- Sett opp docker-compose.dev.yml med PostgreSQL, Redis, Caddy og Whisper
- Benchmarket faster-whisper (small/medium/large-v3) med norsk tale
- Besluttet medium + initial_prompt som standard, SRT som master-format
- Ny feature-spec: AI Gateway (LiteLLM) med BYOK og Promptfoo-testing
- Definert dataklassifisering (kritisk/gjenskapbar/avledet/flyktig)
- Konkretisert backup-strategi med pg_dump, rsync og restore-prosedyre
- Splittet repos: sidelinja/server (kode) + sidelinja/sidelinja (innhold)
- Oppdatert lokal.md: utviklingsmiljø for kode, ikke prod-replika
- Dokumentert transkripsjonspipeline: Whisper SRT → Git → PG (avledet)
- Live AI-assistent: small-modell, flyktig logg med 30d TTL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:51:15 +01:00

2.9 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
    • ai_gateway.md — LiteLLM som sentralisert AI-ruter (BYOK + OpenRouter fallback)

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), LiteLLM (AI Gateway → Gemini/Claude/Grok/OpenRouter)
  • Infra: Docker Compose, Caddy, Authentik (SSO), Forgejo (Git)

Produksjonsserver

  • IP: 157.180.81.26
  • SSH: ssh sidelinja@157.180.81.26 (nøkkelbasert, sudo uten passord)
  • Filer: /srv/sidelinja/ (docker-compose.yml, .env, config/, data/, media/, logs/)
  • Git repos:
    • server — app-kode, infra, arkitektur: ssh://git@git.sidelinja.org:222/sidelinja/server.git
    • sidelinja — podcastinnhold (transkripsjoner, show notes, research): ssh://git@git.sidelinja.org:222/sidelinja/sidelinja.git
  • Domener: sidelinja.org, auth.sidelinja.org (Authentik), git.sidelinja.org (Forgejo), vegard.info
  • Status: Lag A komplett (PostgreSQL, Caddy, Authentik, Forgejo, Redis). Lag B-C gjenstår.

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, LLM-kall) skal aldri blokkere web-requests
  • All AI-kode peker på http://ai-gateway:4000/v1 — aldri direkte til leverandør-APIer
  • 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