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>
This commit is contained in:
commit
8605b1b517
37 changed files with 1197 additions and 0 deletions
13
apps/web/src/app.d.ts
vendored
Normal file
13
apps/web/src/app.d.ts
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// See https://kit.svelte.dev/docs/types#app
|
||||
// for information about these interfaces
|
||||
declare global {
|
||||
namespace App {
|
||||
// interface Error {}
|
||||
// interface Locals {}
|
||||
// interface PageData {}
|
||||
// interface PageState {}
|
||||
// interface Platform {}
|
||||
}
|
||||
}
|
||||
|
||||
export {};
|
||||
13
apps/web/src/app.html
Normal file
13
apps/web/src/app.html
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content="Cards — Karteikarten-App des Vereins mana e.V." />
|
||||
<title>Cards</title>
|
||||
%sveltekit.head%
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover">
|
||||
<div style="display: contents">%sveltekit.body%</div>
|
||||
</body>
|
||||
</html>
|
||||
6
apps/web/src/lib/index.ts
Normal file
6
apps/web/src/lib/index.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
// Re-exports for $lib/...
|
||||
//
|
||||
// Phase 4: api-clients, auth, components, stores, i18n.
|
||||
// Heute: Stub.
|
||||
|
||||
export const APP_NAME = 'cards';
|
||||
20
apps/web/src/routes/+layout.svelte
Normal file
20
apps/web/src/routes/+layout.svelte
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<script lang="ts">
|
||||
let { children } = $props();
|
||||
</script>
|
||||
|
||||
<main>
|
||||
{@render children?.()}
|
||||
</main>
|
||||
|
||||
<style>
|
||||
main {
|
||||
font-family:
|
||||
-apple-system,
|
||||
BlinkMacSystemFont,
|
||||
'Segoe UI',
|
||||
sans-serif;
|
||||
max-width: 64rem;
|
||||
margin: 0 auto;
|
||||
padding: 2rem 1rem;
|
||||
}
|
||||
</style>
|
||||
16
apps/web/src/routes/+page.svelte
Normal file
16
apps/web/src/routes/+page.svelte
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<script lang="ts">
|
||||
// Phase-0-Skelett. Sobald Auth-Föderation steht (Phase 2),
|
||||
// redirected diese Seite zu /(app) für eingeloggte User
|
||||
// und zu auth.mana.how/login für anonyme.
|
||||
</script>
|
||||
|
||||
<h1>Cards</h1>
|
||||
<p>
|
||||
Karteikarten-App des Vereins <strong>mana e.V.</strong>
|
||||
— Phase 0, Repo-Skelett.
|
||||
</p>
|
||||
<p>
|
||||
Plan: <a href="https://github.com/mana-ev/mana/blob/main/docs/playbooks/CARDS_GREENFIELD.md">
|
||||
CARDS_GREENFIELD.md
|
||||
</a>
|
||||
</p>
|
||||
Loading…
Add table
Add a link
Reference in a new issue