Lokalt utviklingsmiljo
Denne guiden dekker alt du trenger for a sette opp et komplett lokalt utviklingsmiljo for Impulse AI, inkludert backend, database og iOS/KMP-utvikling.
Forutsetninger
heading.anchorLabelInstaller folgende verktoy for du starter:
| Verktoy | Versjon | Installasjon |
|---|---|---|
| Node.js | 22+ | brew install node@22 |
| pnpm | 9+ | npm install -g pnpm |
| Docker Desktop | Nyeste | docker.com |
| Xcode | 16+ | Mac App Store (for iOS-utvikling) |
| JDK | 17 | brew install openjdk@17 |
| Doppler CLI | Nyeste | brew install dopplerhq/cli/doppler |
| Supabase CLI | Nyeste | brew install supabase/tap/supabase |
| GitHub CLI | Nyeste | brew install gh |
Klone og installer
heading.anchorLabel# 1. Klone repoetgit clone git@github.com:<org>/im.gitcd im
# 2. Installer avhengigheterpnpm installDoppler-oppsett (hemmeligheter)
heading.anchorLabelImpulse AI bruker Doppler for a haandtere hemmeligheter og miljovaribler. Ingen .env-filer commites.
# 1. Logg inn i Dopplerdoppler login
# 2. Koble til prosjektet (i repo-roten)doppler setup# Velg prosjekt: im# Velg config: devEtter oppsett kjorer du alle kommandoer gjennom Doppler:
# Start utvikling med injiserte hemmeligheterdoppler run -- pnpm dev
# Eller start kun APIdoppler run -- pnpm --filter api devStart lokale tjenester
heading.anchorLabelImpulse AI bruker Supabase (PostgreSQL + Auth) og Redis lokalt via Docker.
# Start Docker-containere (Supabase + Redis)pnpm docker:start
# Verifiser at alt kjorerpnpm db:statuspnpm docker:verifyForste gangs oppsett
heading.anchorLabel# Kjor alle migrasjoner og seed-datapnpm db:reset
# Generer TypeScript-typer fra databaseskjemapnpm db:typesKjor utvikling
heading.anchorLabel# Start alle apper (API + web)doppler run -- pnpm dev
# Eller start kun det du trengerdoppler run -- pnpm --filter api dev # Kun APIdoppler run -- pnpm --filter @im/console dev # Kun Consoledoppler run -- pnpm --filter @im/landing dev # Kun LandingPortliste
heading.anchorLabel| Port | Tjeneste | Beskrivelse |
|---|---|---|
| 3001 | API (Fastify) | Backend API-server |
| 3003 | Landing | Offentlig nettside |
| 3004 | Console | Intern kontrollrom |
| 5173 | Docs (Starlight) | Denne dokumentasjonen |
| 54323 | Supabase Studio | Databaseadministrasjon (GUI) |
| 54332 | PostgreSQL | Databasetilkobling |
| 6380 | Redis | Cache og jobbkoer |
Dev API token (auth bypass)
heading.anchorLabelFor raskere testing av API-et uten autentisering:
# 1. Generer en dev-tokenopenssl rand -hex 32
# 2. Legg til i Doppler (dev config) eller apps/api/.env.local# DEV_API_TOKEN=din-genererte-token
# 3. Bruk i API-kallcurl -H "X-Dev-Token: din-genererte-token" http://localhost:3001/api/v1/impulsesTilgjengelige testbrukere (fra seed.sql):
| Tier | User ID | E-post |
|---|---|---|
| trial | 11111111-1111-1111-1111-111111111111 | trial@test.rm |
| foundation | 22222222-2222-2222-2222-222222222222 | foundation@test.rm |
| mastery | 33333333-3333-3333-3333-333333333333 | mastery@test.rm |
| partner | 44444444-4444-4444-4444-444444444444 | partner@test.rm |
Du kan spesifisere bruker-tier med header:
curl -H "X-Dev-Token: token" -H "X-Dev-User-Tier: trial" http://localhost:3001/api/v1/impulsesKMP/iOS-utvikling med Cursor
heading.anchorLabeliOS-appen kan utvikles i Cursor (eller VS Code) uten a apne Xcode GUI, ved hjelp av Sweetpad og xcode-build-server.
Installer Homebrew-verktoy
heading.anchorLabel# LSP utenfor Xcode (autocomplete, jump to definition)brew install xcode-build-server
# Pen output fra xcodebuildbrew install xcbeautify
# Swift-formattering (valgfritt)brew install swiftformatInstaller Cursor-extensions
heading.anchorLabelApne Cursor, ga til Extensions (CMD+SHIFT+X):
- Swift (
sswg.swift-lang) — syntax highlighting og Swift-stotte - Sweetpad (sweetpad.hyzyla.dev) — bygg, kjor og administrer schemes fra Cursor
Generer Build Server Config
heading.anchorLabel1. Apne repo-roten (im/) i Cursor2. CMD+SHIFT+P -> "Sweetpad: Generate Build Server Config"3. Bygg minst en gang (neste steg) for at LSP skal fungereBygg og kjor
heading.anchorLabel1. Pin Sweetpad-panelet i sidebaren2. Velg target "iosApp" og destination (simulator/enhet)3. CMD+SHIFT+B = Build & Run| Endring | Oppdatering |
|---|---|
| Swift-filer | Full build (CMD+SHIFT+B) eller hot reload med InjectionIII |
| KMP (shared) | Alltid full build (CMD+SHIFT+B) |
Debug
heading.anchorLabel1. Bygg og kjor appen (CMD+SHIFT+B)2. F5 eller Run & Debug -> "Attach to running app (SweetPad)"3. Sett breakpoints i Swift-kodenHot reload med InjectionIII (kun Swift)
heading.anchorLabelProsjektet er allerede konfigurert med nodvendige linker-flagg og DebugInjection.swift.
- Installer InjectionIII fra Mac App Store
- Bygg og kjor appen en gang (CMD+SHIFT+B)
- Start InjectionIII.app -> File -> Open -> velg
apps/mobile-kmp/iosApp - Rediger Swift-fil -> lagre (CMD+S) -> simulator oppdateres (~1s)
Sweetpad-feilsoking
heading.anchorLabelHvis Sweetpad ikke finner prosjektet fra repo-roten:
- CMD+SHIFT+P -> Sweetpad: Generate Build Server Config, eller
- Opprett
apps/mobile-kmp/.vscode/settings.json:
{ "sweetpad.workspacePath": "iosApp/iosApp.xcodeproj", "sweetpad.build.scheme": "iosApp", "sweetpad.build.configuration": "Debug"}Cursor CLI
heading.anchorLabel# Apne prosjektet i Cursor fra terminalcursor .cursor apps/mobile-kmp
# Verifiser Cursor Agent CLIagent --versionFor a installere shell-kommandoene: Cursor -> CMD+SHIFT+P -> “Install ‘cursor’ to shell”.
Stoppe tjenester
heading.anchorLabel# Stopp Docker-containerepnpm docker:stop
# Stopp Supabasepnpm db:stop