Initial commit (unpacked platform)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# 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 (`<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) |
|
||||
Reference in New Issue
Block a user