Files
Cibello-app/docs/namnbyte.md
T

53 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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) |