4.9 KiB
4.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 infrastrukturdocs/setup/produksjon.md— Steg-for-steg oppsett av Hetzner VPS fra scratchdocs/setup/lokal.md— Steg-for-steg oppsett av lokalt WSL2 utviklingsmiljødocs/setup/migration_safety.md— Sjekkliste for PostgreSQL-migrasjoner (RLS-verifisering)docs/concepts/— Brukeropplevelser (integrerte produkter):studioet.md— Podcast-innspilling (LiveKit + Live AI + Aha-markør)møterommet.md— Interne møter (LiveKit + AI-referent + Whiteboard)redaksjonen.md— Daglig redaksjonelt arbeid (Chat + Kanban + Research)podcastfabrikken.md— Publiseringspipeline (Whisper + AI + RSS)kunnskapsgrafen.md— Utforsking og redigering av kunnskapsnettverkvalgomaten.md— Publikumsrettet crowdsourced valgomatden_asynkrone_gjesten.md— Asynkrone gjestebidrag via tidsbegrenset lenke
docs/features/— Tekniske byggeklosser (brukes av flere konsepter):kunnskapsgraf_og_relasjoner.md— Nodes & Edges datamodell i PostgreSQLchat.md— Trådet chat med mentions og autocomplete (SpacetimeDB)kanban.md— Drag-and-drop planleggingwhiteboard.md— Sanntids frihåndstavle (møterom, chat, solo)live_transkripsjon.md— Whisper-pipeline (felles motor for studio/møter/fabrikk)live_ai.md— Live AI: faktoid-oppslag (studio) + referent (møter)visuell_graf.md— Interaktiv graf-visning (D3.js/Vis.js)ai_research_klipper.md— AI-drevet research-inntak til kunnskapsgrafenlydmeldinger.md— Lydmeldinger, diktering og tale-til-tekstpodcast_statistikk.md— IAB-kompatibel lytterstatistikk fra Caddy-loggerkunnskaps_bridge.md— Cross-workspace discovery via vector embeddingsprompt_lab.md— Internt verktøy for testing og deploy av LLM-promptskalender.md— Redaksjonell kalender med abonnementsmodell og ICS-eksportnotater.md— Scratchpad/notatblokk med auto-save og debounce
docs/infra/— Infrastruktur (ikke brukersynlig):jobbkø.md— Felles PostgreSQL-basert køsystem for alle bakgrunnsjobbersynkronisering.md— PostgreSQL ↔ SpacetimeDB dataflyt og eierskapsmodellapi_grensesnitt.md— Kommunikasjonskart: SvelteKit er web-API, Rust er workerai_gateway.md— LiteLLM som sentralisert AI-ruter (BYOK + OpenRouter fallback)
docs/proposals/— Halvtenkte idéer og kreative innfall (seREADME.mdfor oversikt)docs/erfaringer/— Lærdommer fra implementering (feller, anti-patterns, løsninger):svelte5_reaktivitet.md— $state-getters, SSR-feller, polling-mønsterspacetimedb_integrasjon.md— SDK-konvensjoner, BigInt, Rust borrow-felleradapter_moenster.md— Hybrid PG+SpacetimeDB, anti-patterns, anbefaling for neste komponentauthentik_oidc.md— Sub-claim er SHA256, @auth/sveltekit JWT-quirks, redirect URI
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.gitsidelinja— 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 + SvelteKit deployet (PG-adapter, Authentik OIDC, workspace-modell). SpacetimeDB kun lokalt.
Viktige regler
- Aldri eksponere databaseporter mot internett (kun port 80/443 via Caddy)
- Bruk
teaCLI, ikkegh(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 relevant doc i
docs/concepts/,docs/features/ellerdocs/infra/før du implementerer - Sjekk
docs/erfaringer/for kjente feller før du implementerer med Svelte 5, SpacetimeDB eller adapter-mønsteret - Etter ferdig implementering av en komponent: dokumenter lærdommer i
docs/erfaringer/