{"id":50325683,"url":"https://github.com/peab-dev/md.view","last_synced_at":"2026-05-29T06:01:13.291Z","repository":{"id":360050881,"uuid":"1248502002","full_name":"peab-dev/md.view","owner":"peab-dev","description":"Lightweight Markdown viewer — macOS app + browser webview, shared rendering core","archived":false,"fork":false,"pushed_at":"2026-05-24T18:30:14.000Z","size":4009,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T20:24:37.927Z","etag":null,"topics":["markdown","markdown-viewer","md"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peab-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-24T18:14:45.000Z","updated_at":"2026-05-24T18:30:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/peab-dev/md.view","commit_stats":null,"previous_names":["peab-dev/md.view"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/peab-dev/md.view","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peab-dev%2Fmd.view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peab-dev%2Fmd.view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peab-dev%2Fmd.view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peab-dev%2Fmd.view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peab-dev","download_url":"https://codeload.github.com/peab-dev/md.view/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peab-dev%2Fmd.view/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33639055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["markdown","markdown-viewer","md"],"created_at":"2026-05-29T06:00:28.521Z","updated_at":"2026-05-29T06:01:13.272Z","avatar_url":"https://github.com/peab-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# md.view\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/img/md-view-logo-long.png\" alt=\"md.view logo\" width=\"420\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLeichtgewichtiger Markdown-Viewer — als macOS-App und als Browser-Webview.\u003c/strong\u003e\u003cbr/\u003e\n  Pixel-identische Darstellung über beide Targets via gemeinsamem Rendering-Core.\n\u003c/p\u003e\n\n---\n\n## Features\n\n- **CommonMark + GFM** — Tabellen, Task-Lists, Strikethrough, Footnotes\n- **Syntax-Highlighting** via [Shiki](https://shiki.style/) — VS-Code-Optik, präzise Grammatiken\n- **GitHub-Style Rendering** — vertraut, lesbar, konservativ\n- **TOC-Sidebar** mit Klick-Scroll und Scroll-Spy\n- **Live-Reload** bei Datei-Änderungen (Mac-App)\n- **Dark Mode** — folgt automatisch dem OS-Setting\n- **Drag \u0026 Drop** — `.md`-Datei auf das App-Icon oder ins Fenster\n- **Lokal \u0026 privat** — Web-Version lädt nichts hoch, alles bleibt im Browser\n- **Native macOS-Integration** — `.md`-Dateien werden im Finder mit dem App-Icon angezeigt\n\n## Architektur\n\nMonorepo, npm workspaces. Vier Pakete, zwei Ziele:\n\n| Pfad | Zweck |\n|---|---|\n| `packages/core` | Markdown → HTML Rendering (markdown-it + Shiki) |\n| `packages/ui`   | Geteilte UI — HTML-Skelett, Sidebar, `mountViewer()` |\n| `apps/mac`      | Electron-App, baut `md.view.app` |\n| `apps/web`      | Statische Browser-App für `md.view` |\n\nDer gemeinsame `core` + `ui` garantiert, dass Mac-App und Browser-Build **identisch** rendern — kein Drift zwischen Targets.\n\n## Quickstart\n\n```bash\n# 1) Repo klonen\ngit clone https://github.com/peab-dev/md.view.git\ncd md.view\n\n# 2) Dependencies installieren (npm workspaces)\nnpm install\n\n# 3a) Web-Viewer im Dev-Modus starten\nnpm run dev:web\n#     → http://localhost:5173\n\n# 3b) Mac-App im Dev-Modus starten\nnpm run dev:mac\n#     → Electron-Fenster mit Hot-Reload\n```\n\n### Produktions-Builds\n\n```bash\n# Web — statische Dateien in apps/web/dist/\nnpm run build:web\n\n# Mac — signierte .dmg + .zip in apps/mac/release/\nnpm run build:mac\n\n# Beides\nnpm run build:all\n```\n\nDie fertige `md.view.app` aus `apps/mac/release/` kann nach `/Applications` gezogen werden. Danach öffnet ein Doppelklick auf jede `.md`-Datei im Finder den Viewer; das Doc-Icon wird ebenfalls gebrandet.\n\n## Verwendung\n\n### Web\n\n```bash\nnpm run dev:web\n```\n\nDrop a `.md` file onto the page, or use the file picker. Alles passiert lokal — kein Upload, keine Telemetrie.\n\n### macOS\n\n- `⌘O` — Datei öffnen\n- Drag \u0026 Drop ins Fenster oder auf das Dock-Icon\n- Auto-Reload bei Änderungen der geöffneten Datei\n- `⌘W` schließt das Fenster, `⌘Q` beendet die App\n\n## Tech-Stack\n\n- **TypeScript** — strikt, monorepo-weit\n- **markdown-it** — robuster CommonMark-Parser mit GFM-Plugins\n- **Shiki** — TextMate-Grammatiken, WASM-basiert (CSP-konform)\n- **Vite** — Dev-Server \u0026 Bundler\n- **Electron 32** — macOS-Wrapper\n- **electron-builder** — Code-Signing, DMG, `.icns`, File-Associations\n\n## Projekt-Struktur\n\n```\nmd.view/\n├── apps/\n│   ├── mac/          # Electron-App\n│   │   ├── src/main/         # Main-Prozess (window, file watcher, IPC)\n│   │   ├── src/preload/      # Kontextisolierte Bridge\n│   │   ├── src/renderer/     # Renderer (HTML + UI-Mount)\n│   │   └── electron-builder.yml\n│   └── web/          # Statischer Browser-Build\n├── packages/\n│   ├── core/         # renderMarkdown(src) → HTML\n│   └── ui/           # mountViewer(root), Sidebar, Styles\n├── resources/        # icon.icns, icon-doc.icns, logo PNGs\n└── examples/         # Beispiel-Markdown-Dateien\n```\n\n## Entwicklung\n\n```bash\n# Einzelpakete bauen\nnpm run build:core\nnpm run build:ui\n\n# TypeScript-Watch im einzelnen Workspace\nnpm run dev -w packages/core\n```\n\nBei Änderungen am `core` oder `ui` Paket muss in den meisten Fällen einmal gebaut werden, damit die Apps die neuen Outputs sehen — Vite löst die Workspace-Symlinks gegen die `dist/` der Pakete auf.\n\n## Lizenz\n\nMIT © Peter\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMade with \u003ccode\u003e.md\u003c/code\u003e in mind.\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeab-dev%2Fmd.view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeab-dev%2Fmd.view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeab-dev%2Fmd.view/lists"}