mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:41:09 +02:00
Server (cards-server):
- ModerationService: createReport, listOpen, resolveReport,
takedownDeck, banAuthor, setVerifiedMana, restoreDeck. Takedown
also auto-closes any sibling open reports against the deck and
closes any open PRs (so contributors see clean state). Ban
cascades to all of the author's decks.
- routes/moderation.ts: POST /v1/reports (any authed user),
GET /v1/admin/reports (admin only), POST /v1/admin/reports/:id/
resolve, POST /v1/admin/decks/:slug/{takedown,restore}, POST
/v1/admin/authors/:slug/verify. Admin gate is `role === 'admin'`
for now — verified-mana-only mods land later.
- Notify hooks: takedown emails the deck owner, mana-verify status
change emails the author.
Frontend (cards-web):
- <ReportButton> (icon or inline variant) with category picker
+ optional explanation. On /d/<slug> as a discreet 🚩 next to
the published-date stamp; in <CardDiscussions> per non-own
comment.
- /d/<slug> shows a red "wurde von der Moderation entfernt" banner
when isTakedown is true.
- /admin/reports inbox: lists open reports with category badges,
Abweisen / Deck entfernen / Author bannen actions. Renders a
forbidden state if the current user isn't admin.
|
||
|---|---|---|
| .. | ||
| apps/web | ||
| docs | ||
| COMPETITORS_2026-05.md | ||
| GUIDELINES.md | ||
| package.json | ||
| README.md | ||
Cards
Spaced-repetition flashcards on cards.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 Cards 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 # cards.mana.how on http://localhost:5180