- Omorganiser docs/: konsepter, features, infra og proposals i egne mapper - Ny docs/erfaringer/ med lærdommer fra chat-implementering (Svelte 5, SpacetimeDB, adapter-mønster) - Oppdater ARCHITECTURE.md: Lag 1 status, ny §10 Erfaringslogg, SpacetimeDB i lokal dev - Oppdater synkronisering.md med implementeringsstatus og designvalg - Oppdater lokal.md med SpacetimeDB og AI Gateway - Utvid PG-skjema med channels, messages, media_files, message_revisions - Legg til seed_dev.sql, migration_safety.md, .env.example - Nye feature-specs: chat, kanban, whiteboard, live_ai, lydmeldinger m.fl. - Nye konsept-specs: studioet, møterommet, redaksjonen, den asynkrone gjesten m.fl. - SpacetimeDB og AI Gateway i docker-compose.dev.yml - collect-docs.sh inkluderer erfaringer/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.3 KiB
Forslag: Artikkel-publisering
Idé
Utvide Sidelinja fra et rent podcast-verktøy til en fullverdig publiseringsplattform. Brukere kan skrive, redigere og publisere artikler — integrert i kunnskapsgrafen, med støtte for vitenskapelig notasjon og en visuell standard som matcher de beste uavhengige publikasjonene.
Designfilosofi: Vakre tekster
Sidelinja-artikler skal føles som noe mellom en Substack-essay og en akademisk publikasjon. Ingen sidebar-rot, ingen widget-helvete, ingen distraksjoner. Bare tekst, typografi og innhold.
Prinsipper:
- Typografi først. Seriffont for brødtekst (Georgia, Literata eller lignende), god linjehøyde (1.6–1.8), komfortabel lesbredde (60–75 tegn). Overskrifter i sans-serif for kontrast.
- Luft. Generøse marginer. Innholdet puster. Bilder og figurer får plass.
- Mørk/lys. Respekterer
prefers-color-scheme. Begge moduser skal være like gjennomtenkte. - Matematikk er førsteklasses. LaTeX-notasjon rendres med KaTeX (raskere enn MathJax, server-side-kompatibelt). Formler skal se like naturlige ut som brødtekst.
- Ingen visuelt støy. Metadata (forfatter, dato, temaer) er diskret plassert. Delingsknappar og navigasjon forsvinner under lesing. Fokus er teksten.
Inspirasjon: Gwern.net (typografi + fotnoter), Distill.pub (interaktive figurer), Stratechery (ren leseopplevelse), Edward Tufte (informasjonstetthet uten rot).
Hvorfor er det interessant?
- Naturlig forlengelse: Redaksjonen har allerede chat, research-klipper og kunnskapsgraf. Artikler er neste logiske steg — fra intern diskusjon til publisert innhold.
- Grafkobling: Artikler som noder i kunnskapsgrafen arver automatisk koblinger til temaer, aktører og episoder. En artikkel om "Skolepolitikk" kobles til alle podcast-episoder, faktoider og research-klipp om samme tema.
- SEO & Distribusjon: Podcast-innhold er vanskelig å søkemotor-indeksere. Artikler gir tekstlig innhold som rangerer, med innebygde lenker tilbake til lydsegmenter.
- Show notes 2.0: Dagens show notes kan bli fullverdige artikler med egne URL-er, illustrasjoner og grafkoblinger.
- Vitenskapelig troverdighet: LaTeX-støtte gjør det mulig å publisere kvantitative analyser, statistikk og formelle argumenter med presisjon som matcher akademisk standard.
Hva bygger den på?
- Kunnskapsgrafen: Artikkel som ny
node_type('artikkel'), med edges til temaer/aktører - Chat/Channels: Hver artikkel kan ha en diskusjons-channel (kommentarfelt)
- Jobbkø: AI-assistert skriving, faktasjekk mot kunnskapsgrafen, automatisk oppsummering
- Caddy: Servering av publiserte artikler på egne URL-er
- AI Gateway: Forslag til relaterte temaer, faktoider og episodesegmenter under skriving
Skisse
Innholdsformat: Markdown + LaTeX + Embeds
Artikler skrives i utvidet Markdown med tre tillegg:
1. LaTeX-notasjon (KaTeX)
Gini-koeffisienten beregnes som:
$$G = \frac{\sum_{i=1}^{n} \sum_{j=1}^{n} |x_i - x_j|}{2n^2 \bar{x}}$$
der $x_i$ er inntekten til individ $i$ og $\bar{x}$ er gjennomsnittsinntekten.
Inline-matte med $...$, blokk-matte med $$...$$. KaTeX rendrer server-side i SvelteKit (ingen klient-JS for lesere). Editoren viser live preview av formler.
2. Podcast-embeds
{{segment:550e8400-e29b-41d4-a716-446655440000}}
Rendrer en innebygd lydspiller med transkripsjonstekst fra segmentet. Klikk for å lytte til akkurat det øyeblikket i episoden.
3. Sidemerknad-fotnoter (Tufte-stil)
Dette er en påstand som trenger kontekst.^[Sidemerknad som vises i margen
på brede skjermer, som popup på mobil. Kan inneholde $\LaTeX$ og lenker.]
På brede skjermer (>1200px) vises fotnoter i margen ved siden av referansepunktet — aldri nederst på siden. På smale skjermer kollapses de til klikkbare popups.
Datamodell
ALTER TYPE node_type ADD VALUE 'artikkel';
CREATE TABLE articles (
id UUID PRIMARY KEY REFERENCES nodes(id) ON DELETE CASCADE,
title TEXT NOT NULL,
slug TEXT NOT NULL, -- URL-vennlig tittel
body TEXT NOT NULL, -- Markdown + LaTeX + embeds (kildeformat)
body_html TEXT, -- Pre-rendret HTML (KaTeX + Markdown → HTML ved lagring)
excerpt TEXT, -- Kort oppsummering for RSS/OG-tags
status TEXT NOT NULL DEFAULT 'draft', -- 'draft', 'published', 'archived'
author_id TEXT REFERENCES users(authentik_id) ON DELETE SET NULL,
published_at TIMESTAMPTZ,
CONSTRAINT unique_slug_per_workspace UNIQUE (id) -- slug-unikhet via appkode + workspace
);
body er kildeformatet (Markdown + LaTeX). body_html er pre-rendret ved lagring, slik at lesere aldri venter på klient-side rendering. Editoren jobber mot body, leseren får body_html.
Publiseringsflyt
Skriving (draft) → Intern review (channel) → Publisering → RSS + sitemap + OG-tags
Funksjoner
- Markdown + LaTeX editor med split-view live preview i SvelteKit
- KaTeX server-side rendering — ingen JavaScript-avhengighet for lesere
- Sidemerknad-fotnoter (Tufte-stil) på brede skjermer, popup på mobil
- #-mentions i artikkeltekst som automatisk oppretter graf-edges
- Innebygg podcast-klipp:
{{segment:uuid}}rendrer innebygd lydspiller - Relatert innhold: Diskret panel under artikkelen med automatisk foreslåtte temaer, aktører og episoder basert på graf-nabolag
- RSS-feed for artikler: Separat fra podcast-RSS (Atom-format med full HTML-innhold)
- OG-tags / deling: Automatisk generert Open Graph-metadata
Typografi-stack (CSS)
Brødtekst: Literata / Georgia / serif (1.6 linjehøyde, 60–75ch bredde)
Overskrifter: Inter / system-ui / sans-serif (stramt, tydelig hierarki)
Kode: JetBrains Mono / monospace (med ligaturer)
Matematikk: KaTeX default (skalerer med brødtekst)
Fontene lastes som font-display: swap med system-fallback for umiddelbar rendering.
URL-struktur
sidelinja.org/artikler/ → Artikkelliste (ren, minimal)
sidelinja.org/artikler/skolepolitikk-2026 → Enkeltartikkel (full leseopplevelse)
sidelinja.org/feed/artikler.xml → Artikkel-RSS (Atom)
Innsats
Middels — Datamodellen er enkel (ny node_type + detailtabell). KaTeX har ferdig Svelte-integrasjon og SSR-støtte. Sidemerknad-fotnoter krever litt CSS-arbeid. Den tunge delen er å gjøre typografien og embed-syntaksen virkelig god.
Wow-faktor
Høy — Kombinasjonen av vakker typografi, LaTeX-støtte og podcast-embeds skaper noe som ikke finnes andre steder. En publiseringsplattform der en politisk analyse kan ha både formler, lydklipp fra intervjuer, og koblinger til kunnskapsgrafen.
Åpne spørsmål
- Skal artikler være multi-author (wiki-stil) eller single-author?
- Kommentarfelt for publikum, eller kun intern diskusjon?
- Versjonering av publiserte artikler (à la Wikipedia)?
- Skal draft-artikler leve i SpacetimeDB for sanntids-samskriving, eller er PG + autosave tilstrekkelig?
- Bilder: Content-addressable via
media_files, eller ekstern hosting (CDN)? - Skal KaTeX-rendering skje ved lagring (raskere serving) eller ved request (enklere oppdatering)?