# deathkernel/filebridge architecture

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

- Interactive diagram: https://gitdiagram.com/deathkernel/filebridge
- Repository: https://github.com/deathkernel/filebridge

## Overview

FileBridge shares a user-selected PC folder with authenticated devices on the same trusted Wi-Fi. The desktop app selects the folder, starts the HTTP server, and displays the LAN address and a fresh session password; a phone or other device then browses, previews, and transfers files through the browser UI. Server-side routes handle listing, file delivery, archives, uploads, and file management against the shared folder. The excerpts show the desktop/server startup and parts of the browser and server routing; additional capabilities and their links are retained where the README documents them.

Main entry points: [`filebridge/server.py`](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py) (HTTP server), [`filebridge/web/app.js`](https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js) (Browser UI), [`filebridge/desktop.py`](https://github.com/deathkernel/filebridge/blob/main/filebridge/desktop.py) (Desktop launcher), [`main.py`](https://github.com/deathkernel/filebridge/blob/main/main.py) (App entry point)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop control"]
  node_desktop_app["Desktop launcher<br/>[desktop.py]"]
  node_entrypoint["App entry point<br/>[main.py]"]
end

subgraph group_browser["Browser experience"]
  node_browser_ui["Browser UI<br/>[app.js]"]
  node_browse_search["Browse and search<br/>[app.js]"]
  node_preview["File preview<br/>[app.js]"]
  node_transfer_queue["Transfer queue<br/>[app.js]"]
end

subgraph group_server["HTTP file service"]
  node_http_server["HTTP server<br/>[server.py]"]
  node_auth["Session authentication<br/>[server.py]"]
  node_listing["Directory listing<br/>[server.py]"]
  node_file_delivery["File delivery<br/>[server.py]"]
  node_archive["Folder archives<br/>[server.py]"]
  node_upload["Chunked uploads<br/>[server.py]"]
  node_file_management["File management<br/>[server.py]"]
end

subgraph group_storage["Shared files"]
  node_shared_folder[("Selected folder")]
end

node_device(("LAN device"))

node_entrypoint -->|"starts"| node_desktop_app
node_desktop_app -->|"starts server"| node_http_server
node_device -->|"opens LAN address"| node_browser_ui
node_browser_ui -->|"loads folders"| node_browse_search
node_browser_ui -->|"previews files"| node_preview
node_browser_ui -->|"queues uploads"| node_transfer_queue
node_browse_search -->|"requests listing"| node_listing
node_preview -->|"fetches file"| node_file_delivery
node_transfer_queue -->|"sends chunks"| node_upload
node_http_server -->|"checks requests"| node_auth
node_http_server -->|"routes requests"| node_listing
node_http_server -->|"routes requests"| node_file_delivery
node_http_server -->|"routes requests"| node_archive
node_http_server -->|"routes requests"| node_upload
node_http_server -->|"routes requests"| node_file_management
node_listing -->|"reads entries"| node_shared_folder
node_file_delivery -->|"reads files"| node_shared_folder
node_archive -->|"packages folder"| node_shared_folder
node_upload -->|"writes files"| node_shared_folder
node_file_management -->|"modifies items"| node_shared_folder

click node_desktop_app "https://github.com/deathkernel/filebridge/blob/main/filebridge/desktop.py"
click node_entrypoint "https://github.com/deathkernel/filebridge/blob/main/main.py"
click node_browser_ui "https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js"
click node_browse_search "https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js"
click node_preview "https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js"
click node_transfer_queue "https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js"
click node_http_server "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_auth "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_listing "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_file_delivery "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_archive "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_upload "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"
click node_file_management "https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py"

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_desktop_app,node_entrypoint toneBlue
class node_browser_ui,node_browse_search,node_preview,node_transfer_queue toneAmber
class node_http_server,node_auth,node_listing,node_file_delivery,node_archive,node_upload,node_file_management toneMint
class node_shared_folder toneRose
class node_device toneIndigo
```

## Components

### Desktop control

- [Desktop launcher](https://github.com/deathkernel/filebridge/blob/main/filebridge/desktop.py): `filebridge/desktop.py`
- [App entry point](https://github.com/deathkernel/filebridge/blob/main/main.py): `main.py`

### Browser experience

- [Browser UI](https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js): `filebridge/web/app.js`
- [Browse and search](https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js): `filebridge/web/app.js`
- [File preview](https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js): `filebridge/web/app.js`
- [Transfer queue](https://github.com/deathkernel/filebridge/blob/main/filebridge/web/app.js): `filebridge/web/app.js`

### HTTP file service

- [HTTP server](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [Session authentication](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [Directory listing](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [File delivery](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [Folder archives](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [Chunked uploads](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`
- [File management](https://github.com/deathkernel/filebridge/blob/main/filebridge/server.py): `filebridge/server.py`

### Shared files

- **Selected folder**

### Other components

- **LAN device**

## Connections

- App entry point → Desktop launcher: starts (evidence: `main.py`)
- Desktop launcher → HTTP server: starts server (evidence: `filebridge/desktop.py`)
- LAN device → Browser UI: opens LAN address (evidence: `README.md`)
- Browser UI → Browse and search: loads folders (evidence: `filebridge/web/app.js`)
- Browser UI → File preview: previews files (evidence: `filebridge/web/app.js`)
- Browser UI → Transfer queue: queues uploads (evidence: `filebridge/web/app.js`)
- Browse and search → Directory listing: requests listing (evidence: `filebridge/web/app.js`)
- File preview → File delivery: fetches file (evidence: `filebridge/web/app.js`)
- Transfer queue → Chunked uploads: sends chunks (evidence: `filebridge/web/app.js`)
- HTTP server → Session authentication: checks requests (evidence: `filebridge/server.py`)
- HTTP server → Directory listing: routes requests (evidence: `filebridge/server.py`)
- HTTP server → File delivery: routes requests (evidence: `filebridge/server.py`)
- HTTP server → Folder archives: routes requests (evidence: `filebridge/server.py`)
- HTTP server → Chunked uploads: routes requests (evidence: `filebridge/server.py`)
- HTTP server → File management: routes requests (evidence: `filebridge/server.py`)
- Directory listing → Selected folder: reads entries (evidence: `README.md`)
- File delivery → Selected folder: reads files (evidence: `README.md`)
- Folder archives → Selected folder: packages folder (evidence: `README.md`)
- Chunked uploads → Selected folder: writes files (evidence: `README.md`)
- File management → Selected folder: modifies items (evidence: `README.md`)
