# Decision Log — Ninja Nexus

Arkitektur- og projektbeslutninger. Nye beslutninger tilføjes øverst.

---

## ADR-001: Ninja Nexus er en platform, ikke et OS

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Kontekst** | Projektets scope og kommunikation skal være entydig |
| **Beslutning** | Ninja Nexus er en arbejdsplatform ovenpå Windows. Vi erstatter brugeroplevelsen, ikke OS'et. |
| **Konsekvens** | Ingen kernel/driver-udvikling. Shell erstatter explorer. Agent er Windows Service. |
| **Alternativer** | Bygge custom Linux OS (afvist: hardware-kompatibilitet, TCO) |

---

## ADR-002: Windows som første underliggende platform

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Kontekst** | Vælg OS-platform for v1 |
| **Beslutning** | Windows 10/11 som eneste underliggende platform i v1 |
| **Konsekvens** | C#/WinUI/WPF, Windows Service, MSI distribution |
| **Alternativer** | macOS (udskudt til år 5), Linux (udskudt) |
| **Detaljer** | [WINDOWS_STRATEGY.md](./WINDOWS_STRATEGY.md) |

---

## ADR-003: Hybrid client-server med offline-first

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Kontekst** | Netværks-afhængighed vs. brugeroplevelse |
| **Beslutning** | Agent og Shell cacher kritisk data lokalt. Cloud er autoritativ men ikke altid påkrævet. |
| **Konsekvens** | SQLite lokal, sync-kø, grace period for offline login |
| **Alternativer** | Cloud-only (afvist: offline-miljøer), Fully local (afvist: central styring) |

---

## ADR-004: Modulær monolit → microservices

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Kontekst** | Backend-arkitektur for Control Center |
| **Beslutning** | Start med modulær monolit (ASP.NET Core), opdel i microservices når skala kræver det |
| **Konsekvens** | Fase 1–4: monolit med modul-boundaries. Fase 8+: split ved behov |
| **Alternativer** | Microservices fra dag 1 (afvist: for tidlig kompleksitet) |

---

## ADR-005: Egen Identity Provider

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt (med federation-plan) |
| **Kontekst** | Kontrol over login, MFA og roller |
| **Beslutning** | Byg egen IdP (OpenIddict/Duende). Federation med AD/Azure AD som supplement i Fase 8 |
| **Konsekvens** | Fuld kontrol over MFA og sessions. Integration kompleksitet i Fase 8 |
| **Alternativer** | Azure AD only (afvist: afhængighed, begrænset MFA-kontrol) |

---

## ADR-006: Design tokens som CSS custom properties

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Kontekst** | Theming på tværs af Shell (WPF/WinUI) og Control Center (React) |
| **Beslutning** | Design tokens defineret som CSS variables. Port til XAML ResourceDictionary for Shell |
| **Konsekvens** | Ét token-sæt, to implementeringer |
| **Alternativer** | Separate design systems (afvist: inkonsistens) |

---

## ADR-POC-001: Prototype 1 scope (Shell + Identity Lite)

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Beslutning** | POC 1 = Shell (login, dashboard, launcher, app-start) + Identity Lite. Ingen Agent, MDM, MFA, deployment, remote support. |
| **Detaljer** | [NEXUS_PHASE_1_POC.md](../docs/NEXUS_PHASE_1_POC.md) |

## ADR-POC-002: WPF for Prototype 1 (WinUI evalueres i POC 2)

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Beslutning** | WPF (.NET 8) for Shell i POC 1. Hurtigere PoC. WinUI 3 evalueres i Prototype 2. |
| **Konsekvens** | ADR-007 udskudt til POC 2 |

## ADR-POC-003: Dashboard = Desktop (ét koncept)

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Beslutning** | "Dashboard" og "desktop med widgets" er samme skærm. Ingen separat dashboard-app. |

## ADR-POC-004: Statisk app-manifest for POC

| | |
|---|---|
| **Dato** | 2026-06-04 |
| **Status** | Godkendt |
| **Beslutning** | App-katalog via `apps.manifest.json` bundled i Shell. Ingen App Center backend. |

---

## Afventende beslutninger

| ID | Emne | Deadline | Options |
|----|------|----------|---------|
| ADR-007 | WinUI 3 vs. WPF for Shell | POC 2 | WinUI 3, WPF (WPF valgt for POC 1) |
| ADR-008 | Database: PostgreSQL vs. SQL Server | Fase 1 | PostgreSQL, SQL Server |
| ADR-009 | Cloud: Azure vs. multi-cloud | Fase 1 | Azure, AWS |
| ADR-010 | Tenant isolation model | Fase 7 | Schema-per-tenant, DB-per-tenant |

---

*Format inspireret af Architecture Decision Records (ADR).*
