- 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>
48 lines
2.9 KiB
Markdown
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
|