# markedit-app/markedit architecture

> Architecture diagram of the GitHub repository markedit-app/markedit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/markedit-app/markedit
- Repository: https://github.com/markedit-app/markedit

## Overview

MarkEdit is a native macOS Markdown editor whose principal workflow opens a text document, edits and formats it in an embedded CodeMirror-based editor, and saves it through macOS document handling. The repository separates the native app shell from the TypeScript editor and connects them through bridges. README-described capabilities also include Quick Look, extensions, Shortcuts and AppleScript, text statistics, and automatic updates. Some subsystem links rely on the documented product capabilities and tree; sampled source is limited, so uncertain internal call wiring is omitted.

Main entry points: [`MarkEditMac/Sources/Editor/Models/EditorDocument.swift`](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Models/EditorDocument.swift) (Editor document), [`MarkEditMac/Sources/Editor/Controllers/EditorViewController.swift`](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Controllers/EditorViewController.swift) (Editor controller), [`MarkEditMac/Sources/Editor/Views/EditorWebView.swift`](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Views/EditorWebView.swift) (Editor WebView), [`CoreEditor/src/core.ts`](https://github.com/markedit-app/markedit/blob/main/CoreEditor/src/core.ts) (Markdown editing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Native App"]
  node_documents["Document handling"]
  node_editor_document["Editor document"]
  node_editor_ui["Editor controller"]
  node_editor_webview["Editor WebView"]
end

subgraph group_editor["Markdown Editor"]
  node_web_editor["Markdown editing<br/>[core.ts]"]
  node_editor_modules["Editing modules"]
  node_editor_apis["Editor APIs"]
  node_native_bridge["Native bridge"]
  node_web_bridge["Web bridge"]
  node_history["Editing history"]
end

subgraph group_integrations["Extensions And Integrations"]
  node_extension_ui["Extension manager"]
  node_extension_model["Extension lifecycle"]
  node_shortcuts["Shortcuts actions"]
end

subgraph group_support["Preview And Utilities"]
  node_quicklook["Quick Look preview"]
  node_statistics["Text statistics"]
  node_updater["Update service"]
  node_installer["Update installer<br/>[main.swift]"]
end

node_user(("Mac user"))

node_user -->|"opens or saves"| node_documents
node_documents -->|"opens document"| node_editor_document
node_editor_document -->|"presents editor"| node_editor_ui
node_editor_ui -->|"hosts editor"| node_editor_webview
node_editor_webview -->|"embeds editor"| node_web_editor
node_web_editor -->|"uses editing modules"| node_editor_modules
node_web_editor -->|"exposes APIs"| node_editor_apis
node_editor_ui -->|"invokes native bridge"| node_native_bridge
node_editor_webview -->|"exchanges messages"| node_web_bridge
node_editor_document -->|"tracks editing state"| node_history
node_user -->|"manages extensions"| node_extension_ui
node_extension_ui -->|"controls lifecycle"| node_extension_model
node_user -->|"runs actions"| node_shortcuts
node_user -->|"previews file"| node_quicklook
node_user -->|"views statistics"| node_statistics
node_updater -->|"installs update"| node_installer

click node_documents "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Main/AppDocumentController.swift"
click node_editor_document "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Models/EditorDocument.swift"
click node_editor_ui "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Controllers/EditorViewController.swift"
click node_editor_webview "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Views/EditorWebView.swift"
click node_web_editor "https://github.com/markedit-app/markedit/blob/main/CoreEditor/src/core.ts"
click node_editor_modules "https://github.com/markedit-app/markedit/tree/main/CoreEditor/src/modules"
click node_editor_apis "https://github.com/markedit-app/markedit/tree/main/CoreEditor/src/api"
click node_native_bridge "https://github.com/markedit-app/markedit/blob/main/MarkEditKit/Sources/Bridge/Native/NativeModules.swift"
click node_web_bridge "https://github.com/markedit-app/markedit/blob/main/MarkEditKit/Sources/Bridge/Web/WebModuleBridge.swift"
click node_history "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/EditorHistoryStorage.swift"
click node_extension_ui "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Extension/ExtensionsWindowController.swift"
click node_extension_model "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Extension/ExtensionsModel.swift"
click node_shortcuts "https://github.com/markedit-app/markedit/tree/main/MarkEditMac/Sources/Shortcuts/Intents"
click node_quicklook "https://github.com/markedit-app/markedit/blob/main/QuickLookMac/QuickLookViewController.swift"
click node_statistics "https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Modules/Sources/Statistics/StatisticsController.swift"
click node_updater "https://github.com/markedit-app/markedit/blob/main/UpdateInstaller/UpdateService.swift"
click node_installer "https://github.com/markedit-app/markedit/blob/main/UpdateInstaller/main.swift"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_documents,node_editor_document,node_editor_ui,node_editor_webview,node_user toneBlue
class node_web_editor,node_editor_modules,node_editor_apis,node_native_bridge,node_web_bridge,node_history toneAmber
class node_extension_ui,node_extension_model,node_shortcuts toneMint
class node_quicklook,node_statistics,node_updater,node_installer toneRose
```

## Components

### Native App

- [Document handling](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Main/AppDocumentController.swift): `MarkEditMac/Sources/Main/AppDocumentController.swift`
- [Editor document](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Models/EditorDocument.swift): `MarkEditMac/Sources/Editor/Models/EditorDocument.swift`
- [Editor controller](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Controllers/EditorViewController.swift): `MarkEditMac/Sources/Editor/Controllers/EditorViewController.swift`
- [Editor WebView](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/Views/EditorWebView.swift): `MarkEditMac/Sources/Editor/Views/EditorWebView.swift`

### Markdown Editor

- [Markdown editing](https://github.com/markedit-app/markedit/blob/main/CoreEditor/src/core.ts): `CoreEditor/src/core.ts`
- [Editing modules](https://github.com/markedit-app/markedit/tree/main/CoreEditor/src/modules): `CoreEditor/src/modules`
- [Editor APIs](https://github.com/markedit-app/markedit/tree/main/CoreEditor/src/api): `CoreEditor/src/api`
- [Native bridge](https://github.com/markedit-app/markedit/blob/main/MarkEditKit/Sources/Bridge/Native/NativeModules.swift): `MarkEditKit/Sources/Bridge/Native/NativeModules.swift`
- [Web bridge](https://github.com/markedit-app/markedit/blob/main/MarkEditKit/Sources/Bridge/Web/WebModuleBridge.swift): `MarkEditKit/Sources/Bridge/Web/WebModuleBridge.swift`
- [Editing history](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Editor/EditorHistoryStorage.swift): `MarkEditMac/Sources/Editor/EditorHistoryStorage.swift`

### Extensions And Integrations

- [Extension manager](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Extension/ExtensionsWindowController.swift): `MarkEditMac/Sources/Extension/ExtensionsWindowController.swift`
- [Extension lifecycle](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Sources/Extension/ExtensionsModel.swift): `MarkEditMac/Sources/Extension/ExtensionsModel.swift`
- [Shortcuts actions](https://github.com/markedit-app/markedit/tree/main/MarkEditMac/Sources/Shortcuts/Intents): `MarkEditMac/Sources/Shortcuts/Intents`

### Preview And Utilities

- [Quick Look preview](https://github.com/markedit-app/markedit/blob/main/QuickLookMac/QuickLookViewController.swift): `QuickLookMac/QuickLookViewController.swift`
- [Text statistics](https://github.com/markedit-app/markedit/blob/main/MarkEditMac/Modules/Sources/Statistics/StatisticsController.swift): `MarkEditMac/Modules/Sources/Statistics/StatisticsController.swift`
- [Update service](https://github.com/markedit-app/markedit/blob/main/UpdateInstaller/UpdateService.swift): `UpdateInstaller/UpdateService.swift`
- [Update installer](https://github.com/markedit-app/markedit/blob/main/UpdateInstaller/main.swift): `UpdateInstaller/main.swift`

### Other components

- **Mac user**

## Connections

- Mac user → Document handling: opens or saves
- Document handling → Editor document: opens document
- Editor document → Editor controller: presents editor
- Editor controller → Editor WebView: hosts editor
- Editor WebView → Markdown editing: embeds editor
- Markdown editing → Editing modules: uses editing modules
- Markdown editing → Editor APIs: exposes APIs
- Editor controller → Native bridge: invokes native bridge
- Editor WebView → Web bridge: exchanges messages
- Editor document → Editing history: tracks editing state
- Mac user → Extension manager: manages extensions
- Extension manager → Extension lifecycle: controls lifecycle
- Mac user → Shortcuts actions: runs actions
- Mac user → Quick Look preview: previews file
- Mac user → Text statistics: views statistics
- Update service → Update installer: installs update
