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

48 lines
2.9 KiB
Markdown

# 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