Grunnleggende arkitekturbeslutninger tatt og dokumentert: - Alt er noder (brukere, team, innhold, mediefiler, samlings-noder) - Edges definerer hva en node er (freeform typer, metadata i JSONB) - Materialisert tilgangsmatrise (node_access) erstatter workspace-RLS - Visibility (hidden/discoverable/readable/open) på noder - Aliaser via usynlige system-edges - Maskinrommet eier all skriving (SpacetimeDB først, PG asynk) - SpacetimeDB holder hele grafen, PG er persistent backup - Node- og edge-skjema spesifisert (docs/primitiver/) Fjernet workspace-konseptet fra hele dokumentasjonen (~40 filer). Fem retninger besluttet, én åpen (rom, ikke forum). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
81 lines
2.4 KiB
Markdown
81 lines
2.4 KiB
Markdown
# Oppsett: Lokalt Utviklingsmiljø (WSL2)
|
|
**Filsti:** `docs/setup/lokal.md`
|
|
|
|
Det lokale miljøet er et **utviklingsmiljø for kode**. Frontend (SvelteKit) kjøres lokalt med HMR, Rust bygges lokalt. Alle tjenester (PG, SpacetimeDB, AI Gateway, etc.) kjører 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
cd ~
|
|
git clone ssh://git@git.sidelinja.org:222/vegard/synops.git
|
|
cd synops
|
|
```
|
|
|
|
## 3. Miljøvariabler (.env.local)
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# SvelteKit med HMR
|
|
cd web && npm run dev
|
|
|
|
# Rust maskinrom
|
|
cd rust && cargo run
|
|
```
|
|
|
|
## 5. Deploy
|
|
|
|
```bash
|
|
# 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. 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 |
|