- 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>
2.4 KiB
2.4 KiB
Feature Spec: Whiteboard (Frihåndstavle)
Filsti: docs/features/whiteboard.md
1. Konsept
Et delt, sanntids tegnebrett for frihåndsskisser, diagrammer og visuell brainstorming. Whiteboardet er en selvstendig komponent som kan brukes i flere kontekster: i møterom, i chat-tråder knyttet til et Tema, eller alene som personlig skisseblokk.
2. Brukskontekster
| Kontekst | Deltakere | Lagring |
|---|---|---|
| Møterom | Alle møtedeltakere i sanntid | Eksporteres som bilde ved møteslutt, knyttes til møtereferatet |
| Tema-chat | Alle med tilgang til temaet | Lagres som vedlegg til en melding, synlig i chat-historikken |
| Personlig | Kun brukeren selv | Privat skisse, kan deles til et Tema senere |
3. Sanntidssynkronisering
- SpacetimeDB synkroniserer strøk (penseltype, farge, koordinater) mellom alle deltakere i sanntid.
- Hvert whiteboard har en unik ID og tilhører en workspace.
- Tilgangskontroll følger konteksten: møterom-deltakere, tema-medlemmer, eller kun eieren for personlige tavler.
4. Funksjonalitet
- Tegneverktøy: Frihåndstegning, rette linjer, rektangler, ellipser, tekst, piler.
- Interaksjon: Fargevelger, strektykkelse, viskelær, angre/gjør om.
- Implementering: HTML Canvas eller SVG i SvelteKit. Vurder et lett bibliotek (f.eks. tldraw, Excalidraw) hvis frihåndskvaliteten krever det — men foretrekk egenutviklet for å holde avhengigheter nede.
5. Lagring og Eksport
- Sanntidsdata (SpacetimeDB): Strøk-historikk holdes i minnet så lenge tavlen er aktiv.
- Eksport (PostgreSQL + filsystem): Når tavlen "lukkes" eller deles, rendres den til PNG eller SVG og lagres som en
media_filei workspace-mappen. Referansen knyttes til konteksten (melding, møte) viamessage_attachmentseller tilsvarende. - Dataklassifisering: Strøk-data i SpacetimeDB er flyktig (kategori 4). Eksporterte bilder er avledet (kategori 3) — kan gjenskapes fra strøk-data så lenge tavlen er aktiv, men etter lukking er bildet den permanente kopien.
6. Instruks for Claude Code
- Whiteboard-komponenten skal være en gjenbrukbar Svelte-komponent som kan mountes i møterom, chat og som frittstående side.
- SpacetimeDB-tabellen for strøk bør være enkel:
whiteboard_id,stroke_data(JSON),user_id,timestamp. - Ikke bygg et fullverdig tegneprogram — start med frihåndstegning, viskelær og farger. Utvid ved behov.
- Alle whiteboards er workspace-scopet.