個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A personal filing cabinet for German paperwork that explains each document in plain English. Moving to Germany means a flood of contracts and official letters: Mietvertrag, Krankenversicherung, Internetvertrag, Behördenbriefe. Klartext stores them and, for each one, produces an Extraction: what kind of document it is, an English summary, the key takeaways (amounts, dates, obligations), and the critical warnings (notice periods, hidden fees, liabilities) that cost you money or rights if you miss them. Live at klartext.nooney.dev — single-user deployment; sign-in is allowlist-gated.檢視完整 README ↗
A personal filing cabinet for German paperwork that explains each document in plain English.
Moving to Germany means a flood of contracts and official letters: Mietvertrag, Krankenversicherung, Internetvertrag, Behördenbriefe. Klartext stores them and, for each one, produces an Extraction: the document type, an English summary, the key takeaways (amounts, dates, obligations), and the Action Items (notice periods, deadlines, hidden fees) that cost you money or rights if you miss them.
Live at klartext.nooney.dev. Sign-in is allowlist-gated.
Requires Node 24 and pnpm 9.
git clone https://github.com/JohnNooney/KlartextDMS.git && cd KlartextDMS
pnpm install
pnpm dev:demo
Open http://localhost:4200 and sign in with [email protected] / test1234 (emulator only). The seeded Documents open with their Extractions already filled in, and dev:demo swaps the AI provider for deterministic fixtures, so no API keys are needed. Plain pnpm dev calls the real Gemini model and needs Firebase credentials (see development internals).
Klartext is also a sandbox for an enterprise integration problem: embedding a newly acquired Vue product inside a legacy Angular dashboard when the only integration point is an <iframe>. So it is two independent frontends that talk only over window.postMessage: no Module Federation, no Web Components.
| Host | Guest | |
|---|---|---|
| Stack | Angular 21, SCSS | Vue 3.5, Vite 8, Tailwind 4 |
| Role | Sign-in, library, uploads, PDF reader, the frame the Guest renders in | Extraction panel; calls the AI |
| Dev port | :4200 | :5173 |
{ v, type, sessionId, payload }, defined in packages/bus-contract. The Host queues Extractions as background jobs after upload and opens a Session (INIT_SESSION) when a Document is clicked; the Guest reports progress back while you keep browsing.Domain terms (Host, Guest, Document, Extraction, Action Item, Bus, Envelope, Session, ...) are defined in CONTEXT.md.
v1 is shipped: sign-in, folder library, uploads, the reader, and persisted Extractions. v2 is in progress: the Extraction v2 schema, Action Items, and the Host extraction index are done; library search, calendar reminders, and per-page Translation are planned. See docs/spec.md.
apps/host Angular dashboard
apps/guest Vue insights panel rendered in the Host's iframe
packages/ shared theme tokens, Bus contract, Firebase config
e2e/ Playwright suite and screenshot composites
scripts/ emulator seed, fixtures, build helpers
emulator-data/ committed emulator snapshot
docs/ documentation, ADRs, spec
firebase.json, firestore.rules, storage.rules Firebase config and security rules
pnpm dev # Host + Guest + Auth/Firestore/Storage emulators (seeded)
pnpm dev:demo # same, with fixture Extractions instead of Gemini
pnpm typecheck
pnpm test # unit suites across the workspace
pnpm e2e # Playwright under the emulators
pnpm screenshots # regenerate docs/screenshots/*.png
The documentation index covers architecture, ADRs, deployment, and development internals (ports, e2e wiring, App Check tokens, the full script list).
Contributing: issues live in GitHub Issues (see docs/agents/issue-tracker.md); agent conventions are in AGENTS.md.