# Namnbyte – status och runbook (spec §65) ## Status **Namnet är inte beslutat.** Projektet använder neutrala platshållare (`Matappen`, `com.example.matappen`, `api.example.com`) tills ett slutgiltigt namn är valt. Varumärket definieras på EXAKT ett ställe: `brand.config.json` i repo-roten. Ingen kod, dokumentation, databas, migrering eller infrastrukturfil innehåller något riktigt varumärkesnamn. ## Så här styr `brand.config.json` allt | Fält | Används av | | ---------------- | ------------------------------------------------------------------------------------------------- | | `name` | Mobilappens visningsnamn, iOS-behörighetstexter, alla UI-strängar (`{brand}` i i18n), admin-titel | | `slug` | BullMQ-könamn, healthz-tjänstnamn, S3-bucket-default (`-production`), Expo-slug | | `urlScheme` | Deep links i mobilappen | | `iosBundleId` | Expo iOS bundle ID, Apple-produkt-ID:n (`._monthly`) | | `androidPackage` | Expo Android-paket, Google Play-verifiering | | `apiDomain` | Dokumentation/drift; API:s bas-URL i produktion | | `adminDomain` | Adminpanelens produktionsdomän | | `supportEmail` | Supportlänkar i appen | ## Runbook vid namnbeslut 1. Uppdatera samtliga fält i `brand.config.json` (enda kodändringen). 2. Drift: sätt riktiga värden i produktions-`.env` om de ska avvika från brand-defaults (S3_BUCKET, APPLE_BUNDLE_ID, GOOGLE_PACKAGE_NAME – tomma värden faller automatiskt tillbaka på brand.config.json). 3. Butikskonsoler: skapa appen med `iosBundleId`/`androidPackage` och produkt-ID:n enligt tabellen ovan (App Store Connect + Play Console). 4. Domäner: registrera `apiDomain`/`adminDomain`, uppdatera TLS/reverse proxy. 5. Databas/infra: skapa databas + användare enligt `infrastructure/deployment/create-database.sql` (namn efter `slug`). 6. Verifiera: `pnpm typecheck && pnpm test && pnpm build` samt `grep -ri ""` ska ge noll träffar utanför `brand.config.json`. ## Vakt mot återinträde - Inga hårdkodade namn i kod, tester, seed, docs eller infrastruktur – kontrollerat med grind-grep (se commit-historik). - CI-förslag: lägg ett lint-steg som failar på varumärkesnamn utanför `brand.config.json` när namnet är beslutat. ## Deploya före namnbeslut? Gränsdragningen | Åtgärd | Före namn? | Varför | | ------------------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | Staging i egen infra + testning | ✅ Gör det | Noll varumärke i DB/API; namnbyte = konfigrad + omstart | | Riktiga AAMOS + eval-svit | ✅ Gör det | Största tekniska risken – avverka den tidigt | | Produktionsinfra (RDS, server, larm) | ✅ Går bra | Välj NEUTRALT S3-bucketnamn (buckets kan aldrig döpas om) och gärna en varumärkesfri infra-domän för API:t | | Riktiga användare | ⚠️ Undvik | Fungerar tekniskt, men mejl hälsar med platshållarnamnet | | App Store / Google Play-inlämning | ❌ ALDRIG | Bundle-ID och produkt-ID:n blir permanenta vid publicering – kan aldrig bytas, bara ersättas med ny app (recensioner/prenumeranter går förlorade) |