# alef-freitas/overdrive architecture

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

- Interactive diagram: https://gitdiagram.com/alef-freitas/overdrive
- Repository: https://github.com/alef-freitas/overdrive

## Overview

Overdrive is a Windows desktop browser built in Go around WebView2, with an Android port. The principal workflow is entering a URL or search, viewing it in browser tabs and panels, then using page features such as translation or reader mode; downloads, capture/OCR, clipboard history and VPN are additional branches. The README documents these capabilities, but most implementation excerpts do not show their callers, so uncertain connections are omitted or marked dashed rather than inferred.

Main entry points: [`src/main.go`](https://github.com/alef-freitas/overdrive/blob/main/src/main.go) (Desktop app), [`src/reader.go`](https://github.com/alef-freitas/overdrive/blob/main/src/reader.go) (Reader mode), [`src/captura.go`](https://github.com/alef-freitas/overdrive/blob/main/src/captura.go) (Screen capture), [`src/extensions_config.go`](https://github.com/alef-freitas/overdrive/blob/main/src/extensions_config.go) (Extensions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser shell"]
  node_app["Desktop app<br/>[main.go]"]
  node_webview["WebView2 runtime<br/>[com_webview2.go]"]
  node_window["Window and layout<br/>[win_window.go]"]
  node_tabs["Tabs<br/>[tabs.go]"]
  node_search["Address and search<br/>[engine.go]"]
  node_panes["WebView panes<br/>[webview_panes.go]"]
  node_settings["Settings pages<br/>[app.js]"]
end

subgraph group_page["Page features"]
  node_reader["Reader mode<br/>[reader.go]"]
  node_readability["Readability parser<br/>[Readability.js]"]
  node_translation["Page translation<br/>[traducao.go]"]
  node_downloads["Downloads<br/>[downloads.go]"]
  node_capture["Screen capture<br/>[captura.go]"]
  node_ocr["OCR<br/>[ocr.go]"]
end

subgraph group_utility["Browser utilities"]
  node_clipboard["Clipboard history<br/>[clipboard.go]"]
  node_security["Privacy and security<br/>[security.go]"]
  node_extensions["Extensions"]
  node_chat["AI panels<br/>[panel_chat.go]"]
  node_images["Image panel<br/>[panel_images.go]"]
  node_sandbox["Extension sandbox<br/>[sandbox_ubol.go]"]
end

subgraph group_integrations["Integrations"]
  node_vpn["WireGuard VPN<br/>[vpn.go]"]
  node_tun["VPN network stack<br/>[tun.go]"]
  node_utube["UTube<br/>[utube.go]"]
  node_credential["Windows credentials<br/>[credman.go]"]
  node_android["Android port<br/>[MainActivity.java]"]
  node_android_translation["Android translation<br/>[Traducao.java]"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -.->|"hosts"| node_webview
node_user -->|"enters query"| node_search
node_user -->|"manages tabs"| node_tabs
node_user -->|"opens panels"| node_panes
node_user -->|"reads page"| node_reader
node_user -->|"translates page"| node_translation
node_user -->|"manages downloads"| node_downloads
node_user -->|"captures screen"| node_capture
node_capture -->|"recognizes text"| node_ocr
node_user -->|"views history"| node_clipboard
node_user -->|"uses AI panels"| node_chat
node_user -->|"uses image panel"| node_images
node_user -->|"manages extensions"| node_extensions
node_extensions -->|"runs Lite"| node_sandbox
node_user -->|"connects VPN"| node_vpn
node_vpn -.->|"uses network stack"| node_tun
node_user -->|"uses UTube"| node_utube
node_user -->|"uses private mode"| node_security
node_user -->|"stores credentials"| node_credential
node_user -->|"uses Android port"| node_android
node_android -->|"translates page"| node_android_translation
node_reader -.->|"parses article"| node_readability
node_user -->|"manages settings"| node_settings

click node_app "https://github.com/alef-freitas/overdrive/blob/main/src/main.go"
click node_webview "https://github.com/alef-freitas/overdrive/blob/main/src/com_webview2.go"
click node_window "https://github.com/alef-freitas/overdrive/blob/main/src/win_window.go"
click node_tabs "https://github.com/alef-freitas/overdrive/blob/main/src/tabs.go"
click node_search "https://github.com/alef-freitas/overdrive/blob/main/src/engine.go"
click node_panes "https://github.com/alef-freitas/overdrive/blob/main/src/webview_panes.go"
click node_settings "https://github.com/alef-freitas/overdrive/blob/main/lib/paginas/app.js"
click node_reader "https://github.com/alef-freitas/overdrive/blob/main/src/reader.go"
click node_readability "https://github.com/alef-freitas/overdrive/blob/main/lib/Readability.js"
click node_translation "https://github.com/alef-freitas/overdrive/blob/main/src/traducao.go"
click node_downloads "https://github.com/alef-freitas/overdrive/blob/main/src/downloads.go"
click node_capture "https://github.com/alef-freitas/overdrive/blob/main/src/captura.go"
click node_ocr "https://github.com/alef-freitas/overdrive/blob/main/src/ocr.go"
click node_clipboard "https://github.com/alef-freitas/overdrive/blob/main/src/clipboard.go"
click node_security "https://github.com/alef-freitas/overdrive/blob/main/src/security.go"
click node_extensions "https://github.com/alef-freitas/overdrive/blob/main/src/extensions_config.go"
click node_chat "https://github.com/alef-freitas/overdrive/blob/main/src/panel_chat.go"
click node_images "https://github.com/alef-freitas/overdrive/blob/main/src/panel_images.go"
click node_sandbox "https://github.com/alef-freitas/overdrive/blob/main/src/sandbox_ubol.go"
click node_vpn "https://github.com/alef-freitas/overdrive/blob/main/src/vpn.go"
click node_tun "https://github.com/alef-freitas/overdrive/blob/main/src/wgnetstack/tun.go"
click node_utube "https://github.com/alef-freitas/overdrive/blob/main/src/utube.go"
click node_credential "https://github.com/alef-freitas/overdrive/blob/main/src/credman.go"
click node_android "https://github.com/alef-freitas/overdrive/blob/main/android/src/com/overdrive/app/MainActivity.java"
click node_android_translation "https://github.com/alef-freitas/overdrive/blob/main/android/src/com/overdrive/app/Traducao.java"

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_app,node_webview,node_window,node_tabs,node_search,node_panes,node_settings,node_user toneBlue
class node_reader,node_readability,node_translation,node_downloads,node_capture,node_ocr toneAmber
class node_clipboard,node_security,node_extensions,node_chat,node_images,node_sandbox toneMint
class node_vpn,node_tun,node_utube,node_credential,node_android,node_android_translation toneRose
```

## Components

### Browser shell

- [Desktop app](https://github.com/alef-freitas/overdrive/blob/main/src/main.go): `src/main.go`
- [WebView2 runtime](https://github.com/alef-freitas/overdrive/blob/main/src/com_webview2.go): `src/com_webview2.go`
- [Window and layout](https://github.com/alef-freitas/overdrive/blob/main/src/win_window.go): `src/win_window.go`
- [Tabs](https://github.com/alef-freitas/overdrive/blob/main/src/tabs.go): `src/tabs.go`
- [Address and search](https://github.com/alef-freitas/overdrive/blob/main/src/engine.go): `src/engine.go`
- [WebView panes](https://github.com/alef-freitas/overdrive/blob/main/src/webview_panes.go): `src/webview_panes.go`
- [Settings pages](https://github.com/alef-freitas/overdrive/blob/main/lib/paginas/app.js): `lib/paginas/app.js`

### Page features

- [Reader mode](https://github.com/alef-freitas/overdrive/blob/main/src/reader.go): `src/reader.go`
- [Readability parser](https://github.com/alef-freitas/overdrive/blob/main/lib/Readability.js): `lib/Readability.js`
- [Page translation](https://github.com/alef-freitas/overdrive/blob/main/src/traducao.go): `src/traducao.go`
- [Downloads](https://github.com/alef-freitas/overdrive/blob/main/src/downloads.go): `src/downloads.go`
- [Screen capture](https://github.com/alef-freitas/overdrive/blob/main/src/captura.go): `src/captura.go`
- [OCR](https://github.com/alef-freitas/overdrive/blob/main/src/ocr.go): `src/ocr.go`

### Browser utilities

- [Clipboard history](https://github.com/alef-freitas/overdrive/blob/main/src/clipboard.go): `src/clipboard.go`
- [Privacy and security](https://github.com/alef-freitas/overdrive/blob/main/src/security.go): `src/security.go`
- [Extensions](https://github.com/alef-freitas/overdrive/blob/main/src/extensions_config.go): `src/extensions_config.go`
- [AI panels](https://github.com/alef-freitas/overdrive/blob/main/src/panel_chat.go): `src/panel_chat.go`
- [Image panel](https://github.com/alef-freitas/overdrive/blob/main/src/panel_images.go): `src/panel_images.go`
- [Extension sandbox](https://github.com/alef-freitas/overdrive/blob/main/src/sandbox_ubol.go): `src/sandbox_ubol.go`

### Integrations

- [WireGuard VPN](https://github.com/alef-freitas/overdrive/blob/main/src/vpn.go): `src/vpn.go`
- [VPN network stack](https://github.com/alef-freitas/overdrive/blob/main/src/wgnetstack/tun.go): `src/wgnetstack/tun.go`
- [UTube](https://github.com/alef-freitas/overdrive/blob/main/src/utube.go): `src/utube.go`
- [Windows credentials](https://github.com/alef-freitas/overdrive/blob/main/src/credman.go): `src/credman.go`
- [Android port](https://github.com/alef-freitas/overdrive/blob/main/android/src/com/overdrive/app/MainActivity.java): `android/src/com/overdrive/app/MainActivity.java`
- [Android translation](https://github.com/alef-freitas/overdrive/blob/main/android/src/com/overdrive/app/Traducao.java): `android/src/com/overdrive/app/Traducao.java`

### Other components

- **User**

## Connections

- User → Desktop app: uses
- Desktop app → WebView2 runtime: hosts
- User → Address and search: enters query (evidence: `src/engine.go`)
- User → Tabs: manages tabs
- User → WebView panes: opens panels
- User → Reader mode: reads page
- User → Page translation: translates page
- User → Downloads: manages downloads
- User → Screen capture: captures screen
- Screen capture → OCR: recognizes text
- User → Clipboard history: views history
- User → AI panels: uses AI panels
- User → Image panel: uses image panel
- User → Extensions: manages extensions
- Extensions → Extension sandbox: runs Lite
- User → WireGuard VPN: connects VPN
- WireGuard VPN → VPN network stack: uses network stack
- User → UTube: uses UTube
- User → Privacy and security: uses private mode
- User → Windows credentials: stores credentials
- User → Android port: uses Android port
- Android port → Android translation: translates page (evidence: `android/src/com/overdrive/app/MainActivity.java`)
- Reader mode → Readability parser: parses article
- User → Settings pages: manages settings
