53 lines
4.1 KiB
Markdown
53 lines
4.1 KiB
Markdown
# Namnbyte – status och runbook (spec §65)
|
||
|
||
## Status
|
||
|
||
**Namnet är beslutat: Cibello** (2026-08-06). Varumärket definieras på
|
||
EXAKT ett ställe: `brand.config.json` i repo-roten. Ingen kod, dokumentation,
|
||
databas, migrering eller infrastrukturfil innehåller hårdkodade
|
||
varumärkesnamn – allt utgår från konfigurationen.
|
||
|
||
## 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 (`<slug>-production`), Expo-slug |
|
||
| `urlScheme` | Deep links i mobilappen |
|
||
| `iosBundleId` | Expo iOS bundle ID, Apple-produkt-ID:n (`<iosBundleId>.<plan>_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 "<gamla namnet>"` 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) |
|