# Plattformen (arbetsnamn: se `brand.config.json`)

> AI-baserat operativsystem för hushållets mat, recept, nutrition, inköp och matsvinn.

Monorepo för hela plattformen: mobilapp (iOS/Android), Food API, worker, adminpanel och
alla delade paket. Byggd enligt master-specifikationen i `docs/`.

## Struktur

```text
<repo-rot>/
  apps/
    mobile/        Expo/React Native-app (iOS + Android)
    api/           Food API (Fastify) – enda ingången för mobilappen
    worker/        BullMQ-workers (bildanalys, kvitton, notiser, subscriptions …)
    admin/         Adminpanel (Vite + React)

  packages/
    shared-types/            Domäntyper, enums och konstanter
    validation/              Zod-scheman för API-kontrakt
    database/                Drizzle-schema, migrationer, seed, repositories
    inventory-engine/        Transaktionsbaserat matlager (Food Twin), FEFO, bäst före
    recipe-engine/           Receptmatchning, filtrering, substitution, skalning
    nutrition-engine/        Deterministisk näringsberäkning, BMR/TDEE, dagsmål
    recommendation-engine/   "Vad ska vi äta?" – poängsättning + förklaringar
    ai-contracts/            Typade AAMOS-kontrakt + HTTP-klient (mock för dev/test)
    memory-client/           AAMOS Memory – lager, samtycken, "Vad appen vet om mig"
    subscriptions/           Planer, entitlements, StoreKit/Play-verifiering
    connectors/              Connector-interface + Livsmedelsverket/OFF/hälso-stubs
    events/                  Eventkatalog + outbox-publicering
    feature-flags/           Feature flags (env + databas)

  infrastructure/
    docker/        Dockerfiles + docker-compose
    deployment/    Deploy-skript för befintlig server (steg 1) → ECS (steg 2–3)
    migrations/    Genererade SQL-migrationer (källa: packages/database)
    monitoring/    Larm, dashboards, healthchecks
    security/      IAM-policies, hardening-checklista

  docs/            Produkt- och teknikdokumentation (Del 1–20)
```

## Kom igång (lokal utveckling)

Krav: Node ≥ 22, pnpm ≥ 10, Docker.

```bash
# 1. Installera beroenden
pnpm install

# 2. Starta Postgres + Redis
docker compose -f infrastructure/docker/docker-compose.dev.yml up -d

# 3. Miljövariabler
cp -n .env.example .env # -n = skriv inte over en befintlig .env

# 4. Migrera + seeda databasen
pnpm db:migrate
pnpm db:seed

# 5. Starta API + worker + admin
pnpm api:dev
pnpm worker:dev
pnpm admin:dev

# 6. Mobilappen
pnpm mobile:start
```

API:t svarar på `http://localhost:4000` (Swagger UI på `/docs`).
Adminpanelen på `http://localhost:5173`.

## Vanliga kommandon

```bash
pnpm typecheck     # TypeScript i hela repot
pnpm test          # Alla tester (Vitest)
pnpm build         # Bygg api/worker/admin
pnpm db:generate   # Generera ny SQL-migration från Drizzle-schemat
```

## Kritiska regler (spec §61 – gäller all kod)

1. AI får inte hitta på kalorier eller allergener – all nutrition och allergihantering är deterministisk kod.
2. Mobilappen pratar aldrig direkt med modelleverantörer – allt går `Mobil → Food API → AAMOS`.
3. Mobilappen innehåller aldrig AI-hemligheter; backend verifierar Premium.
4. AI ska visa osäkerhet, och korrigering ska vara enkel.
5. Extern data måste vara juridiskt tillåten. Recept och produkter versionshanteras.

## Dokumentation

Börja i `docs/README.md` – där ligger executive summary, beslutslogg, arkitektur,
datamodell, API-referens, säkerhets-/GDPR-checklista, utvecklingsfaser och launch-checklista.

## Status

Se `docs/STATUS.md` för vad som är byggt, vad som är stubbar och vad som står näst på tur.
