# jiajin182/github-quick-jump architecture

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

- Interactive diagram: https://gitdiagram.com/jiajin182/github-quick-jump
- Repository: https://github.com/jiajin182/github-quick-jump

## Overview

GitHub Quick Jump is a browser extension that recognizes a repository on GitHub or a supported third-party site, then offers a floating panel for opening that repository in another destination or returning to GitHub. Its main workflow is URL parsing, service selection, and opening a templated link in a new tab. Users can also manage custom destinations and reposition the panel; these settings are stored separately. The central runtime is concentrated in content.js, so several capabilities share that implementation path. Relationships for the popup and cross-site behavior are documented in the README; unsampled implementation details are not expanded.

Main entry points: [`content.js`](https://github.com/jiajin182/github-quick-jump/blob/main/content.js) (Content runtime), [`options.js`](https://github.com/jiajin182/github-quick-jump/blob/main/options.js) (Options page), [`popup.js`](https://github.com/jiajin182/github-quick-jump/blob/main/popup.js) (Toolbar popup), [`manifest.json`](https://github.com/jiajin182/github-quick-jump/blob/main/manifest.json) (Extension configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Repository jump"]
  node_content_runtime["Content runtime<br/>[content.js]"]
  node_repo_parser["Repository parsing<br/>[content.js]"]
  node_service_catalog["Jump destinations<br/>[content.js]"]
  node_floating_panel["Jump panel<br/>[content.js]"]
  node_position_control["Drag positioning<br/>[content.js]"]
  node_route_sync["Route tracking<br/>[content.js]"]
end

subgraph group_settings["Destination settings"]
  node_options_page["Options page<br/>[options.js]"]
  node_custom_editor["Custom destinations<br/>[options.js]"]
end

subgraph group_browser["Browser integration"]
  node_popup["Toolbar popup<br/>[popup.js]"]
  node_extension_manifest["Extension configuration<br/>[manifest.json]"]
  node_sync_storage[("Synced settings")]
  node_local_storage[("Local position")]
end

node_user(("User"))
node_repo_page["Repository page"]
node_destination_sites["Destination sites"]

node_user -->|"opens repository"| node_repo_page
node_repo_page -->|"injects on supported pages"| node_content_runtime
node_extension_manifest -->|"configures injection"| node_content_runtime
node_content_runtime -->|"parses page URL"| node_repo_parser
node_content_runtime -->|"tracks navigation"| node_route_sync
node_content_runtime -->|"builds panel"| node_floating_panel
node_floating_panel -->|"shows destinations"| node_service_catalog
node_floating_panel -->|"opens selected link"| node_destination_sites
node_content_runtime -->|"enables dragging"| node_position_control
node_content_runtime -->|"loads and saves position"| node_local_storage
node_content_runtime -->|"loads custom destinations"| node_sync_storage
node_user -->|"opens toolbar popup"| node_popup
node_popup -->|"opens options"| node_options_page
node_user -->|"manages destinations"| node_options_page
node_options_page -->|"edits destinations"| node_custom_editor
node_custom_editor -->|"saves and loads"| node_sync_storage

click node_content_runtime "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_repo_parser "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_service_catalog "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_floating_panel "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_position_control "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_route_sync "https://github.com/jiajin182/github-quick-jump/blob/main/content.js"
click node_options_page "https://github.com/jiajin182/github-quick-jump/blob/main/options.js"
click node_custom_editor "https://github.com/jiajin182/github-quick-jump/blob/main/options.js"
click node_popup "https://github.com/jiajin182/github-quick-jump/blob/main/popup.js"
click node_extension_manifest "https://github.com/jiajin182/github-quick-jump/blob/main/manifest.json"

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_content_runtime,node_repo_parser,node_service_catalog,node_floating_panel,node_position_control,node_route_sync,node_user toneBlue
class node_options_page,node_custom_editor toneAmber
class node_popup,node_extension_manifest,node_sync_storage,node_local_storage toneMint
class node_repo_page,node_destination_sites toneIndigo
```

## Components

### Repository jump

- [Content runtime](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`
- [Repository parsing](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`
- [Jump destinations](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`
- [Jump panel](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`
- [Drag positioning](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`
- [Route tracking](https://github.com/jiajin182/github-quick-jump/blob/main/content.js): `content.js`

### Destination settings

- [Options page](https://github.com/jiajin182/github-quick-jump/blob/main/options.js): `options.js`
- [Custom destinations](https://github.com/jiajin182/github-quick-jump/blob/main/options.js): `options.js`

### Browser integration

- [Toolbar popup](https://github.com/jiajin182/github-quick-jump/blob/main/popup.js): `popup.js`
- [Extension configuration](https://github.com/jiajin182/github-quick-jump/blob/main/manifest.json): `manifest.json`
- **Synced settings**
- **Local position**

### Other components

- **User**
- **Repository page**
- **Destination sites**

## Connections

- User → Repository page: opens repository (evidence: `README.md`)
- Repository page → Content runtime: injects on supported pages (evidence: `README.md`)
- Extension configuration → Content runtime: configures injection (evidence: `README.md`)
- Content runtime → Repository parsing: parses page URL (evidence: `content.js`)
- Content runtime → Route tracking: tracks navigation (evidence: `README.md`)
- Content runtime → Jump panel: builds panel (evidence: `content.js`)
- Jump panel → Jump destinations: shows destinations (evidence: `README.md`)
- Jump panel → Destination sites: opens selected link (evidence: `README.md`)
- Content runtime → Drag positioning: enables dragging (evidence: `content.js`)
- Content runtime → Local position: loads and saves position (evidence: `content.js`)
- Content runtime → Synced settings: loads custom destinations (evidence: `content.js`)
- User → Toolbar popup: opens toolbar popup (evidence: `README.md`)
- Toolbar popup → Options page: opens options (evidence: `popup.js`)
- User → Options page: manages destinations (evidence: `README.md`)
- Options page → Custom destinations: edits destinations (evidence: `options.js`)
- Custom destinations → Synced settings: saves and loads (evidence: `options.js`)
