2.3 KiB
2.3 KiB
Feature Spec: Produktivitetssuiten
Filsti: docs/features/produktivitetssuite.md
1. Konsept
En asynkron og synkron arbeidsflate der Kunnskapsgrafen møter prosjektstyring. Temaet er hovedobjektet, ikke episoden.
2. Datastrukturer og Ansvarsfordeling
Dette systemet bruker SpacetimeDB tungt for sanntidsopplevelsen.
- Tema-bassenget (PostgreSQL + SpacetimeDB): Alle pågående "Saker". PostgreSQL er kilden til sannhet (langtidslagring), mens SpacetimeDB holder de aktive temaene i minnet slik at chat og oppdateringer skjer uten page-reloads.
- Trådet Chat (SpacetimeDB): Meldinger sendes via SpacetimeDB. Hver melding tilhører et
Tema. Meldinger kan ha enparent_message_idfor å skape tråder. - Sanntids Autocomplete & Mentions (Mobil-optimalisert):
- Siden SpacetimeDB synkroniserer data til klienten, skal Svelte-grensesnittet ha umiddelbar autocomplete på tekstfeltet.
- Trigger-tegn:
/(for kommandoer som/oppgave),@(for brukere/redaksjonsmedlemmer), og feks#(for Temaer/Aktører fra Kunnskapsgrafen). - Skriver man
#Ha...filtrerer Svelte-klienten umiddelbart den lokale SpacetimeDB-cachen og viser en klikkbar/tappbar liste (f.eks. "Hans Petter Sjøli", "Høyre"). Ved trykk settes hele navnet inn, og det lenkes automatisk opp i databasen.
- Kanban / Kjøreplan (SpacetimeDB): Opprettelse av en
Episodefungerer som en container. Brukerne drar Temaer fra Tema-bassenget og inn i en Episodes Kjøreplan (Drag and Drop i SvelteKit). Posisjon/Rekkefølge synkroniseres til alle klienter via SpacetimeDB. - Kollaborative Show Notes: Et tekstfelt koblet til et Tema. Enkle "Operational Transformation"-aktige oppdateringer (eller felt-låsing) håndteres i Rust-modulen til SpacetimeDB.
- Live Studio-Markører ("Blooper-knapp"): En funksjon i Svelte-studioet der brukere kan trykke på en knapp under innspilling. Dette fanger opp gjeldende opptakstid (timer/min/sek) og lagrer det i SpacetimeDB som et "Klippepunkt" koblet til episoden.
3. Instruks for Claude Code
- Bruk SvelteKit for Drag-and-Drop grensesnitt. Unngå tunge biblioteker hvis native HTML5 Drag and Drop er tilstrekkelig.
- SpacetimeDB skal fungere som "State Manager". Frontend bør ikke ha kompleks lokal state (f.eks. Redux); den skal speile SpacetimeDB sin tilstand.