managarten/apps/cards/README.md
Till JS 61f2772789 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>
2026-05-08 13:49:47 +02:00

911 B

Cardecky

Spaced-repetition flashcards on cardecky.mana.how.

Phase-1 standalone web app. The frontend lives here; data, auth, and sync are shared with the rest of the Mana stack:

  • Auth: mana-auth (SSO), *.mana.how
  • Sync: mana-sync, app-id cards
  • Storage: mana_platform.cards.* (Postgres, RLS)

The same cards data backs the mana built-in Cardecky module at mana.how/cards. Schema changes ship to both frontends together — see apps/cards/GUIDELINES.md.

Layout

apps/cards/
├── apps/
│   └── web/        # SvelteKit 2 + Svelte 5 — the Phase-1 surface
├── GUIDELINES.md   # Project rules (read first)
└── README.md

apps/cards/apps/mobile/ and any production apps/cards/apps/landing/ will land in Phase 2/3.

Quick start

pnpm install
pnpm --filter @cards/web dev      # cardecky.mana.how on http://localhost:5180