Erste lauffähige Version der Reader-App des Vereins mana e.V. Drei Use-Cases unter einem Dach: kuratierter News-Feed, Pocket-Style Save-it-later mit Highlights, RSS-Recherche. Standalone-Peer-App: eigene DB (mana_lesen, Schema reader), eigene Webapp, Föderation HTTP/JWT mit mana-auth + mana-news-pool + mana-research. Pattern aus seepuls/cards übernommen. Phasen: - λ-0 Repo-Skelett (pnpm-workspace, turbo, docker-compose, app-manifest, CLAUDE.md, STATUS.md, README.md) - λ-0 packages/lesen-domain — Pure-TS Feed-Engine + Types + Source-Meta-Liste; 9/9 Vitest grün - λ-0 PORTS.md-Eintrag in mana/docs (lesen-api 3099, lesen-web 3100) - λ-1 DB-Schema mit 8 Tabellen (saved_articles, highlights, article_tags, preferences, reactions, import_jobs, import_items, extract_pickup); db:push grün - λ-2 Auth-Föderation: JWKS-Cache-Middleware aus mana-auth, Service-Key-Middleware; Pflicht-Endpoints (dsgvo, search, share/receive, tools/:name) - λ-3 Core-API: /articles CRUD + /extract/preview, /highlights, /preferences (singleton + auto-create), /reactions mit Auto-Weight-Diff via applyReaction, /feed (Pool-Proxy mit server-side feed-engine-Ranking) - λ-4 Web-UI minimal: API-Client, Feed-Page + Lese-Liste mit Save-Form, Recherche-Tab-Stub Plattform-Lifts (parallel, vor Deploy): shared-rss → mana/packages (Lift-A, vendored bis dahin), news-ingester → mana-news-pool (Lift-B, Port 3079 reserviert in PORTS.md), News-Research → mana-research integrieren (Lift-C deferred). Encryption initial AUS (Cards-Konvention). lesen.dev_token im localStorage als DEV-Auth-Stub bis Auth-Portal-Migration. Lokal verifiziert: - pnpm install / docker:up / db:push / dev → grün - Type-Check apps/api + apps/web → 0 errors - Build apps/web → grün - Smoke-Probes: /healthz, /.well-known/mana-app.json, JWT-Gate, Service-Key-Gate, DSGVO-Export
17 lines
406 B
JSON
17 lines
406 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ES2022",
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"allowImportingTsExtensions": true,
|
|
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
"strict": true,
|
|
"esModuleInterop": true,
|
|
"skipLibCheck": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"isolatedModules": true,
|
|
"verbatimModuleSyntax": true,
|
|
"noEmit": true,
|
|
"resolveJsonModule": true
|
|
}
|
|
}
|