chore(brand): rename Cards → Cardecky (display, infra, license-IDs)

- App display name → Cardecky in mana-apps.ts, MODULE_REGISTRY, alle Docs
- Domains: cardecky.mana.how (App), cardecky-api.mana.how (Marketplace
  API), cardecky.com (Marketing-Landing — cloudflared-route + nginx-Block
  vorbereitet, DNS muss noch gesetzt werden)
- 301-Redirect cards.mana.how → cardecky.mana.how (nginx + cloudflared)
  für alte Bookmarks; kann nach 6–12 Monaten wieder raus
- SPDX license IDs Cards-Personal-Use/Pro-Only-1.0 → Cardecky-* via
  Drizzle 0001-Migration (DROP CHECK → UPDATE rows → SET DEFAULT → ADD
  CHECK), inkl. _journal- und 0001_snapshot-Update
- In-mana cards-Modul: dezenter Banner zur Standalone-App (GUIDELINES
  §12), einmal schließbar via localStorage
- Docker-CORS-Listen, sso-origins.ts, Prometheus-Target aktualisiert

Technische IDs bleiben bewusst: appId 'cards', schema
mana_platform.cards.*, Verzeichnis apps/cards/, Package @cards/web,
services/cards-server, Env-Vars CARDS_*, UMAMI_WEBSITE_ID_CARDS*, Class
CardsEvents — Mana-Konvention (Brand ≠ technischer Identifier).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-08 13:49:47 +02:00
parent a6a003fa5e
commit 61f2772789
52 changed files with 2149 additions and 141 deletions

View file

@ -1,8 +1,8 @@
# Cards: Migration zu PostgreSQL + Drizzle ORM
# Cardecky: Migration zu PostgreSQL + Drizzle ORM
## Übersicht
Dieses Dokument beschreibt die Migration von Cards von Supabase zu einer selbst-gehosteten PostgreSQL-Datenbank mit Drizzle ORM.
Dieses Dokument beschreibt die Migration von Cardecky von Supabase zu einer selbst-gehosteten PostgreSQL-Datenbank mit Drizzle ORM.
---
@ -10,14 +10,14 @@ Dieses Dokument beschreibt die Migration von Cards von Supabase zu einer selbst-
```
┌─────────────────┐ ┌─────────────────┐
│ Cards Web │ │ Cards Mobile │
│ Cardecky Web │ │ Cardecky Mobile │
│ (SvelteKit) │ │ (Expo) │
└────────┬────────┘ └────────┬────────┘
│ │
└───────────┬───────────┘
┌───────────▼───────────┐
│ Cards Backend │
│ Cardecky Backend │
│ (NestJS) │
└───────────┬───────────┘
@ -36,14 +36,14 @@ Dieses Dokument beschreibt die Migration von Cards von Supabase zu einer selbst-
```
┌─────────────────┐ ┌─────────────────┐
│ Cards Web │ │ Cards Mobile │
│ Cardecky Web │ │ Cardecky Mobile │
│ (SvelteKit) │ │ (Expo) │
└────────┬────────┘ └────────┬────────┘
│ │
└───────────┬───────────┘
┌───────────▼───────────┐
│ Cards Backend │
│ Cardecky Backend │
│ (NestJS + Drizzle) │
└───────────┬───────────┘
@ -733,14 +733,14 @@ async function migrateDecks() {
console.log(`Migrated ${supabaseDecks.length} decks`);
}
async function migrateCards() {
async function migrateCardecky() {
console.log('Migrating cards...');
const { data: supabaseCards, error } = await supabase.from('cards').select('*');
const { data: supabaseCardecky, error } = await supabase.from('cards').select('*');
if (error) throw error;
for (const card of supabaseCards) {
for (const card of supabaseCardecky) {
await newDb
.insert(cards)
.values({
@ -760,13 +760,13 @@ async function migrateCards() {
.onConflictDoNothing();
}
console.log(`Migrated ${supabaseCards.length} cards`);
console.log(`Migrated ${supabaseCardecky.length} cards`);
}
async function main() {
try {
await migrateDecks();
await migrateCards();
await migrateCardecky();
// ... andere Tabellen
console.log('Migration completed successfully!');
} catch (error) {