Till JS
9a07454b75
seed: 3 Cardecky-Decks v1.0.0 + Audit-Trail im Repo
...
Drei Cardecky-Decks live im lokalen Marketplace, mit komplettem
Audit-Trail unter docs/marketplace/seed/:
| Deck | Karten | Lizenz |
|-------------------------------|--------|-----------|
| geografie-welt-top30 | 30 | CC0-1.0 |
| english-a2-grundwortschatz | 500 | CC-BY-4.0 |
| periodensystem-elemente | 118 | CC0-1.0 |
648 Karten gesamt = 1296 FSRS-Reviews. Alle drei via /cards-deck-
Skill 5-Stage-Pipeline (Plan, Recherche, Design, Validate, Publish).
Bulk-Mode mit Python-Heredoc-Generator, Server-Side atomic-Insert
in <1s pro Deck.
Pro Deck im Audit-Trail:
- plan.md (Subtopic-Boundaries, Streitfälle vorab)
- research/sources.md (3-8 nummerierte Quellen)
- research/notes.md (Recherche-Notes, Streitfall-Auflösungen)
- design/build_cards.py (deterministischer Generator mit Sanity-
Checks gegen Front-Duplikate)
- design/cards.jsonl (atomic Output, 1 Karte/Zeile)
- design/outline.md (Subtopic-Counts + F-Range)
- validate/report.md (5 Standard-Checks alle ✓)
- publish/deck.json + cards.log (Server-Response + Round-Trip)
CONTENT_PLAN §8 Phase-1-Seed-Liste: 3/20 done.
README.md erklärt die seed/-Konvention für künftige Cardecky-Decks
sowie das Update-Protokoll bei PR-Merges aus dem Marketplace.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:49:05 +02:00
Till JS
404ddec62d
docs(marketplace): CONTENT_PLAN — bilingualer CH/DE-Lehrplan-Korridor + 20 Phase-1-Seed-Decks
...
Strategie-Dokument für Cardecky-Editorial. Recherche-Synthese aus:
- Lehrplan 21 (CH) — 6 Fachbereiche + 2 Module, 3 Zyklen, 21
deutschsprachige Kantone (Quelle: zh.lehrplan.ch +
zh.ch/.../volksschule-schulinfo-unterricht/fachbereiche-und-module)
- KMK-Bildungsstandards (DE) — Primar 2022, Sek 1 HSA/MSA 2022/2023/
2024, Sek 2 Abi 2012/2020. Bundesländer-Hoheit über Lehrpläne
- SRS-Forschungs-Konsens (Kang 2016, PMC) — Vokabeln + Fakten +
Definitionen Goldstandard, kreatives Schreiben falsches Werkzeug
- Empirische Anki/Quizlet/Brainscape-Top-Domänen — Medizin (US),
Sprachen (Japanisch riesig), Programmierung, Geografie, Geschichte
Kernfindung: Cardecky targetet die deutschsprachige Schul-Lücke
zwischen CH-Sek-1 und DE-Sek-1 (Klasse 7–9 / Zyklus 3), wo es heute
keine kuratierte SRS-Bibliothek gibt. Hot-Five-Schnittmenge:
Deutsch-Grammatik, Mathe, Englisch-Vokabeln, Naturwissenschaften,
Geografie.
Inhalt:
- Domain-Matrix mit SRS-Eignung × CH-Lehrplan × DE-KMK ×
Beliebtheit, Tier A/B/C/D/E
- Stufen-Mapping pro Schulstufe (Zyklus 1 Skip → Sek 1 Kerngeschäft)
- Phase-1-Seed: 20 konkrete Tier-A-Decks (~3.100 Karten gesamt)
mit Slugs, Karten-Counts, Lizenzen (CC-BY-4.0 default, CC0 für
gemeinfreie Inhalte wie 1×1)
- Cold-Start-Hebel 1+2+3: Cardecky-Eigenproduktion (via /cards-deck-
Skill mit menschlichem Reviewer-Stop), Anki-Top-Decks-Import mit
Original-Author-Attribution + verified_mana-Badge, Lehrkräfte-
Outreach
- Anti-Patterns: keine Medizin-Decks (anderer Markt), kein
Religiös-Konfessionelles ohne Editorial-Linie, keine politischen
Fakten ohne Konsens, kein Anki-Bashing, kein nationalistisches
Framing
- Lizenz-Hygiene: Lehrplan-21-Inhalte selbst ist CC-BY-NC-ND, KMK-
Material gemischt — wir formulieren Karten eigenständig neu auf
Basis der Kompetenz-Bereiche, mit Quellen-Belegen pro Karte
- Offene Punkte: CH-Französisch-vs-DE-Englisch-Track, Schweizer
Helvetismen, Jahrgangsstufen-Tagging-Schema-Erweiterung, Editorial-
Gate für Featured, Anki-Importe-Lizenz-Audit, Image-Occlusion-
Verifikation für Bio-Organe + Geografie-Decks
Owner: @till + Cardecky-Skill. Erste Welle: 5 priorisierte Decks
(Englisch A2/B1, Französisch A2, Mathe Sek 1, Geografie Welt).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 17:16:22 +02:00
Till JS
7dbbf63523
Phase 12 R2: Marketplace-Backend α + β — Authors + Deck-Init + Publish
...
Routes (additiv unter /api/v1/marketplace/*):
- POST/GET /authors/me — eigenes Author-Profil anlegen/updaten/lesen
- GET /authors/:slug — public Profile-Lookup (banned-reason gestrippt)
- POST /decks — Deck-Init (Slug-Validation + Pflicht-Author-Profil +
CHECK auf paid + Pro-License)
- POST /decks/:slug/publish — Versions-Snapshot mit per-Karte
cardContentHash aus @cards/domain, per-Version-Hash, AI-Mod-Stub-Log,
atomarer latest_version_id-Bump in Drizzle-Transaction
- PATCH /decks/:slug — Metadaten-Update (Owner-Only)
- GET /decks/:slug — Public-Detail mit optional-auth-Middleware
Geport aus cards-decommission-base:services/cards-server/, mit
Greenfield-Anpassungen:
- Hashing über @cards/domain.cardContentHash (gemeinsame SoT
zwischen privatem cards.cards und marketplace.deck_cards), per-
Version-Hash als SHA-256 über sortierte Karten-Hashes mit Ord-Prefix
- AI-Moderation als R2-Stub (pass+rationale+model='stub'),
echte mana-llm-Anbindung in späterer Welle
- Auth-Middleware-Shape an Greenfield (userId/tier/authMode in
c.get(...) statt user-Object), optional-auth als Schwester für
anonymen Public-Read
- Hono-typing: outer Marketplace-Decks-Router ist Partial<AuthVars>
weil Public-GET kein JWT braucht; Auth-Subroute ist strict
Lese-Referenz:
- 3331 LOC altes cards-server-Code (routes, services, middleware,
lib) unter docs/marketplace/archive/code/ archiviert. Read-only,
nicht im Build-Path.
Verifikation:
- 16 neue Vitest-Tests (Slug + Version-Hash), 72 gesamt grün
- type-check 0 errors
- E2E-Smoke gegen lokale cards-api: Cardecky-Author + Deck
r2-stoische-ethik mit 3 Karten v1.0.0 (basic + basic + cloze),
per-Karten-Hashes geschrieben, ai_moderation_log-Row da, semver-409
+ paid-422-Errors verifiziert. Smoke-Daten danach aufgeräumt.
Verbleibend für R3+: Discovery (explore + search), Engagement (stars/
subscribe/fork), Smart-Merge mit FSRS-State-Erhalt; danach R4 PRs +
Card-Discussions, R5 Frontend-Routes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:13:58 +02:00
Till JS
9a7068dd19
Phase 12 R0+R1: Marketplace-Restore-Plan + Schema in marketplace-pgSchema
...
R0 (Doku):
- Archiv unter docs/marketplace/archive/ aus managarten-Tag
cards-decommission-base: MARKETPLACE_PLAN (654 Z., Vollvision mit
mana-credits-Flow, Anti-Patterns), COMPETITORS, GUIDELINES,
cards-server_CLAUDE.
- docs/playbooks/MARKETPLACE_RESTORE.md mit Schema-Naming-Entscheidung
(eigenes marketplace-pgSchema), Wellen R0-R6, Cardecky-Skill-
Integration, Lizenz-Modell.
- CLAUDE.md Invariante 2: Strategie-B gilt nur für Study-/FSRS-/Sync-
Schicht; Marketplace-Restore ist explizite Ausnahme.
- STATUS.md: Phase 12 R0+R1 durch.
R1 (Schema):
- 16 Tabellen + 5 Enums im neuen marketplace-pgSchema (authors,
decks, deck_versions, deck_cards, tag_definitions, deck_tags,
deck_stars, deck_subscriptions, deck_forks, deck_pull_requests,
card_discussions, deck_reports, ai_moderation_log, deck_purchases,
author_payouts, author_follows).
- drizzle.config.ts: schemaFilter ['cards', 'marketplace'].
- Greenfield cards-pgSchema unangetastet.
- DB-CHECK decks_price_requires_license verifiziert (paid Deck mit
CC-BY wirft sauber ab).
- type-check + 56 API-Tests grün, drizzle-kit push idempotent.
Decks dormant (kein Code-Pfad ruft die Tabellen). R2 (Backend α/β:
Author-Profile + Publish + AI-Mod) als nächstes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:05:22 +02:00
Till
e3b3a2b478
docs: SMOKE_TEST.md — verifizierter E2E-Lauf gegen lokale Postgres
...
Phase-3-Verifikation 2026-05-08:
- Drizzle push erfolgreich: 8 Tabellen, 11 Indizes, 6 FKs in
Schema `cards`
- E2E-Flow durchgespielt: Deck-Create, Card-Create (basic-reverse,
2 Auto-Reviews), Reviews-Due, FSRS-Grade (state new→learning,
stability 0→2.3, learning_steps 0→1), Cross-User-Schutz (403),
Cascade-Delete (Deck→Cards→Reviews alle 0)
- Type-Check + 46 Vitest-Tests grün
Runbook für reproduzierbaren Lauf in docs/SMOKE_TEST.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 16:43:07 +02:00
Till
8605b1b517
Phase 0+1: Repo-Skelett für Cards-Greenfield
...
Strategie B (beschlossen 2026-05-08): Cards wird als eigenständige
föderierte App neu gebaut, ohne Code-Übernahme aus mana-monorepo.
Skelett enthält:
- apps/api: Hono+Bun mit /healthz, /version, Manifest-Endpoint, leere
pgSchema('cards'), Drizzle-Config, erstem Vitest
- apps/web: SvelteKit 2 + Svelte 5 (runes), Vite auf 3082
- packages/cards-domain: Pure-TS, CardType-Discriminated-Union,
SubIndex-Granularität für Reviews, Future-CardType-Set vorbereitet
- infrastructure/docker-compose.yml: Postgres 16 auf 5435
- app-manifest.json: v1.0.0, Verein-owned, beta-tier
- .github/workflows/ci.yml
- docs/LESSONS_FROM_MANA_MONOREPO.md (Read-Day-Output, 15 Lehren)
Pre-Flight für Phase 2 (Auth-Föderation): DNS cardecky.mana.how,
GitHub-Repo mana-ev/cards, Cards-App-Registrierung in mana-auth,
NPM_AUTH_TOKEN für Verdaccio.
Plan: mana/docs/playbooks/CARDS_GREENFIELD.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 14:08:41 +02:00