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>
22 lines
780 B
Swift
22 lines
780 B
Swift
import Foundation
|
|
import ManaCore
|
|
|
|
/// Cards-spezifischer API-Client. Wrapper um `AuthenticatedTransport`
|
|
/// aus ManaCore, der die Cardecky-Endpoints kennt.
|
|
///
|
|
/// In Phase β-0 ist die API leer — Endpoints kommen ab β-1 (Decks),
|
|
/// β-2 (Reviews), β-3 (Editor), β-4 (Media), β-5 (Marketplace).
|
|
actor CardsAPI {
|
|
private let transport: AuthenticatedTransport
|
|
|
|
init(auth: AuthClient) {
|
|
transport = AuthenticatedTransport(baseURL: AppConfig.apiBaseURL, auth: auth)
|
|
}
|
|
|
|
/// Health-Probe für β-0 — verifiziert dass cardecky-api erreichbar
|
|
/// ist und der eigene JWT akzeptiert wird.
|
|
func healthCheck() async throws -> Bool {
|
|
let (_, http) = try await transport.request(path: "/healthz")
|
|
return http.statusCode == 200
|
|
}
|
|
}
|