98 lines
3.5 KiB
Markdown
98 lines
3.5 KiB
Markdown
# 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 .env.example .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.
|