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>
27 lines
640 B
TypeScript
27 lines
640 B
TypeScript
import { Hono } from 'hono';
|
|
|
|
export const healthRoute = new Hono();
|
|
|
|
healthRoute.get('/healthz', (c) => c.json({ status: 'ok' }));
|
|
|
|
healthRoute.get('/healthz/details', (c) =>
|
|
c.json({
|
|
status: 'ok',
|
|
app: 'cards',
|
|
version: process.env.CARDS_API_VERSION ?? '0.0.0',
|
|
uptime_s: Math.floor(process.uptime()),
|
|
mana_packages: {
|
|
// In Phase 5 mit @mana/shared-app-tpl ersetzen.
|
|
'@mana/shared-share-protocol': 'TBD',
|
|
'@mana/shared-app-tpl': 'TBD',
|
|
},
|
|
})
|
|
);
|
|
|
|
healthRoute.get('/version', (c) =>
|
|
c.json({
|
|
app: 'cards',
|
|
version: process.env.CARDS_API_VERSION ?? '0.0.0',
|
|
build: process.env.CARDS_BUILD_SHA ?? 'dev',
|
|
})
|
|
);
|