cards-native/PLAN.md
Till JS 28b20cd934 v0.1.0 — Phase β-0 Setup
Repo-Skelett für cards-native, native SwiftUI-Universal-App
für Cardecky (mana e.V.). Web-Parität zu cardecky.mana.how.

- project.yml mit Bundle ev.mana.cards, ManaSwiftCore-Dep via path
- AppConfig: auth.mana.how + cardecky-api.mana.how, Keychain ev.mana.cards
- CardsTheme: forest-Werte aus mana/packages/themes/.../forest.css
- LoginView (Email/PW gegen mana-auth via ManaCore.AuthClient)
- DashboardView als β-1-Placeholder mit cardecky-api-Reachability-Probe
- Log unter Subsystem ev.mana.cards
- 3 AppConfig-Tests
- iOS-Simulator-Build grün

Phasen-Plan: mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 19:29:45 +02:00

2.4 KiB

Plan — cards-native (SwiftUI Universal)

Stand: 2026-05-12 — Phase β-0 abgeschlossen. Repo lebt lokal, ManaCore + ManaTokens als Package-Dependency, Login funktioniert, Cardecky-API-Reachability-Probe.

SOT: ../mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md. Dieses File ist die App-lokale Status-Spur, das Greenfield-Doc hat die ganze Architektur-Begründung.

Aktueller Stand

β-0 — Setup

  • Repo-Skelett unter git.mana.how/till/cards-native
  • project.yml mit Bundle-ID ev.mana.cards, ManaSwiftCore via path: ../mana-swift-core
  • AppConfig als ManaAppConfig-Provider:
    • Auth: https://auth.mana.how
    • API: https://cardecky-api.mana.how
    • Keychain-Service: ev.mana.cards
  • CardsTheme.swift mit forest-Werten (lokal nachgebaut aus mana/packages/themes/src/variants/forest.css)
  • LoginView (Email/PW gegen mana-auth)
  • DashboardView als β-1-Placeholder mit API-Reachability-Indikator
  • 3 Unit-Tests (AppConfig)
  • iOS-Simulator-Build grün

Phasen (Detail in Greenfield-Plan)

Phase Status Inhalt
β-0 2026-05-12 Setup, Login, API-Probe
β-1 Decks lesen, SwiftData-Cache
β-2 Study-Loop, Offline-Grade-Queue, Endurance-Test
β-3 Card-/Deck-Editor (basic, cloze, typing, multiple-choice)
β-4 Media, image-occlusion (PencilKit), audio-front
β-5 Marketplace, Universal-Links
β-6 Native-Polish (Widgets, Notifications, Share-Extension)
β-7 App-Store-Submission

Nächste Schritte für β-1

Aus Greenfield-Plan-Sektion "Phase β-1 — Decks lesen":

  1. Deck-Codable-Struct nach Wire-Format aus ../cards/apps/api/src/routes/decks.ts + cards/packages/cards-domain/src/schemas/
  2. CardsAPI.decks() -> [Deck] mit GET /api/v1/decks
  3. DeckListView mit Pull-to-Refresh, Card/Due-Counts
  4. CachedDeck als SwiftData-Model mit lastFetchedAt
  5. Offline-Display bei fehlendem Netz
  6. Inbox-Banner aus ?forked_from_marketplace=true-Query

Erfolgskriterium: Web-Account-Decks vollständig in identischer Reihenfolge sichtbar, Pull-to-Refresh aktualisiert Counts.

Cross-Refs

  • ../mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md — Greenfield-Plan SOT
  • ../mana/docs/MANA_SWIFT.md — Plattform-SOT
  • ../cards/CLAUDE.md — Cards-Repo
  • ../cards/STATUS.md — Web-Phasenstand (Referenz)
  • ../mana-swift-core/CLAUDE.md — ManaCore-Konventionen
  • CLAUDE.md — Repo-Konventionen