synops/docs/setup/lokal.md
vegard b5aa5bb243 Fjern SpacetimeDB komplett (oppgave 22.4)
SpacetimeDB er nå helt fjernet fra Synops. Sanntid håndteres av
PG LISTEN/NOTIFY + WebSocket i portvokteren (maskinrommet).

Kode fjernet:
- spacetimedb/ Rust-modul og spacetime.json
- maskinrommet/src/stdb.rs (HTTP-klient for STDB-reducers)
- frontend module_bindings/ (23 auto-genererte filer)
- spacetimedb npm-avhengighet fra package.json
- scripts/test-sanntid.sh (testet STDB-flyt)

Infrastruktur:
- Docker-container stoppet og fjernet fra docker-compose.yml
- Caddy: fjernet /spacetime/* reverse proxy
- maskinrommet-env.sh: fjernet STDB_IP og SPACETIMEDB_*-variabler
- .env.example: fjernet SpacetimeDB-seksjoner

Dokumentasjon oppdatert:
- CLAUDE.md: stack, lagmodell, kjerneprinsipper, driftsmodell
- docs/arkitektur.md: skrivestien, lesestien, datalag, teknologivalg
- docs/retninger/datalaget.md: migrasjonshistorikk, status "fjernet"
- 37 andre docs oppdatert (features, concepts, infra, ops, retninger)
- Alle kode-kommentarer med STDB-referanser oppdatert

Verifisert: maskinrommet bygger og starter OK, frontend bygger OK,
helsesjekk returnerer 200. Caddy reloadet.
2026-03-18 13:39:09 +00:00

2.9 KiB

Oppsett: Lokalt Utviklingsmiljø (WSL2) — UTDATERT

Filsti: docs/setup/lokal.md

MERK: Denne guiden er utdatert. All utvikling skjer nå direkte på produksjonsserveren via Claude Code. Dokumentet beholdes som referanse i tilfelle lokalt utviklingsmiljø gjeninnføres.

Det lokale miljøet var et utviklingsmiljø for kode. Frontend (SvelteKit) ble kjørt lokalt med HMR, Rust ble bygd lokalt. Alle tjenester (PG, AI Gateway, etc.) kjørte på produksjonsserveren — ingen lokal Docker-replika.

Hva som gjøres hvor

Aktivitet Hvor Hvorfor
Skrive/teste kode (Rust, SvelteKit, TypeScript) Lokalt Rask iterasjon, HMR
PG-skjema og migrasjoner Mot server-PG Én sannhetskilde
Whisper/AI-eksperimentering Via AI Gateway på server Felles tjeneste
Docker-compose endringer Direkte på server Serveren er dev-miljø
Caddy/Authentik/Forgejo config Direkte på server Avhenger av domener, sertifikater, SSO

0. Forutsetninger

  • Windows 11 med WSL2 (Ubuntu 24.04 LTS)
  • Node.js 20+ (via nvm i WSL2)
  • Rust toolchain (via rustup i WSL2)
  • SSH-nøkkel konfigurert mot serveren og Forgejo (~/.ssh/id_ed25519)

1. Installer verktøy i WSL2

# Node.js via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20

# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

2. Klon prosjektet

cd ~
git clone ssh://git@git.sidelinja.org:222/vegard/synops.git
cd synops

3. Miljøvariabler (.env.local)

cp .env.example .env.local
# Fyll inn API-nøkler (Gemini, xAI, etc.)

.env.local inneholder kun lokale variabler (API-nøkler for dev, Authentik-innstillinger). Tjenestekonfigurasjon lever på serveren.

4. Utviklingsflyt

# SvelteKit med HMR (proxy til api.sidelinja.org for /api-kall)
cd frontend && npm run dev

# Rust maskinrom
cd maskinrommet && cargo run

5. Deploy

# 1. Commit og push
git push forgejo main

# 2. Deploy til prod (krever eksplisitt godkjenning)
ssh vegard@157.180.81.26 "cd /srv/synops && git pull && docker compose up -d --build"

6. Server-side Claude Code

Claude Code er også installert direkte på produksjonsserveren (/home/vegard/synops/). Brukes for vedlikehold, feilretting og oppgavekjøring via tmux. Autentiserer med Anthropic Max-abonnement (claude login).

7. Forskjeller fra produksjon (bevisste)

Aspekt Lokalt Produksjon
SvelteKit npm run dev (HMR) Docker container
Rust cargo run Docker container
Database/tjenester Kobler til server Kjører lokalt i Docker
HTTPS Ikke nødvendig Let's Encrypt via Caddy
Auth Authentik bypass eller dev-token Full Authentik OIDC