# mendeo/web-shared-folder architecture

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

- Interactive diagram: https://gitdiagram.com/mendeo/web-shared-folder
- Repository: https://github.com/mendeo/web-shared-folder

## Overview

web-shared-folder serves a configured directory or static site through a browser interface. The main path is client request → server authentication and routing → directory listing or file delivery; with uploads enabled, clients can also upload and manage files. The README documents HTTPS, per-user folder restrictions, themes, localization, and clustering. Most server behavior is concentrated in server.js; because its excerpt is partial, the graph omits uncertain internal call relationships.

Main entry points: [`server.js`](https://github.com/mendeo/web-shared-folder/blob/master/server.js) (Request handling), [`app_files/index.js`](https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.js) (Browser interactions), [`app_files/index.html`](https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.html) (Web pages), [`app_files/locale/en-US.json`](https://github.com/mendeo/web-shared-folder/blob/master/app_files/locale/en-US.json) (Language resources)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Server entry"]
  node_server["Server startup<br/>[server.js]"]
  node_routing["Request handling<br/>[server.js]"]
end

subgraph group_content["Shared content"]
  node_listing["Directory browsing<br/>[server.js]"]
  node_static["Static site serving<br/>[server.js]"]
  node_files["File download<br/>[server.js]"]
  node_mutations["Upload and file management<br/>[server.js]"]
  node_archives["ZIP operations<br/>[server.js]"]
  node_shared[("Shared filesystem")]
  node_ziplib["JSZip library"]
end

subgraph group_access["Access and transport"]
  node_auth["User authentication<br/>[server.js]"]
  node_sessions["Session management<br/>[server.js]"]
  node_https["HTTPS and redirect<br/>[server.js]"]
  node_cluster["Cluster workers<br/>[server.js]"]
  node_tls["TLS credentials"]
end

subgraph group_interface["Web interface"]
  node_client["Browser interactions<br/>[index.js]"]
  node_pages["Web pages<br/>[index.html]"]
  node_locales["Language resources<br/>[en-US.json]"]
end

node_operator(("Server operator"))
node_browser(("Browser user"))

node_operator -->|"configures and starts"| node_server
node_server -->|"starts serving"| node_routing
node_browser -->|"sends requests"| node_routing
node_routing -->|"checks access"| node_auth
node_auth -->|"uses sessions"| node_sessions
node_routing -->|"dispatches browsing"| node_listing
node_routing -->|"dispatches site requests"| node_static
node_routing -->|"dispatches downloads"| node_files
node_routing -->|"dispatches changes"| node_mutations
node_listing -->|"reads entries"| node_shared
node_static -->|"reads site files"| node_shared
node_files -->|"reads files"| node_shared
node_mutations -->|"writes files"| node_shared
node_archives -->|"reads and extracts"| node_shared
node_mutations -->|"requests extraction"| node_archives
node_archives -.->|"uses"| node_ziplib
node_server -->|"configures secure service"| node_https
node_https -->|"loads credentials"| node_tls
node_server -->|"starts workers"| node_cluster
node_cluster -->|"synchronizes sessions"| node_sessions
node_routing -->|"serves interface"| node_pages
node_browser -->|"runs scripts"| node_client
node_client -->|"submits actions"| node_routing
node_routing -->|"serves language data"| node_locales

click node_server "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_routing "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_auth "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_sessions "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_https "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_cluster "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_listing "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_static "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_files "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_mutations "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_archives "https://github.com/mendeo/web-shared-folder/blob/master/server.js"
click node_client "https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.js"
click node_pages "https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.html"
click node_locales "https://github.com/mendeo/web-shared-folder/blob/master/app_files/locale/en-US.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_server,node_routing,node_browser toneBlue
class node_listing,node_static,node_files,node_mutations,node_archives,node_shared,node_ziplib toneAmber
class node_auth,node_sessions,node_https,node_cluster,node_tls,node_operator toneMint
class node_client,node_pages,node_locales toneRose
```

## Components

### Server entry

- [Server startup](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [Request handling](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`

### Shared content

- [Directory browsing](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [Static site serving](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [File download](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [Upload and file management](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [ZIP operations](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- **Shared filesystem**
- **JSZip library**

### Access and transport

- [User authentication](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [Session management](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [HTTPS and redirect](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- [Cluster workers](https://github.com/mendeo/web-shared-folder/blob/master/server.js): `server.js`
- **TLS credentials**

### Web interface

- [Browser interactions](https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.js): `app_files/index.js`
- [Web pages](https://github.com/mendeo/web-shared-folder/blob/master/app_files/index.html): `app_files/index.html`
- [Language resources](https://github.com/mendeo/web-shared-folder/blob/master/app_files/locale/en-US.json): `app_files/locale/en-US.json`

### Other components

- **Server operator**
- **Browser user**

## Connections

- Server operator → Server startup: configures and starts
- Server startup → Request handling: starts serving
- Browser user → Request handling: sends requests
- Request handling → User authentication: checks access
- User authentication → Session management: uses sessions
- Request handling → Directory browsing: dispatches browsing
- Request handling → Static site serving: dispatches site requests
- Request handling → File download: dispatches downloads
- Request handling → Upload and file management: dispatches changes
- Directory browsing → Shared filesystem: reads entries
- Static site serving → Shared filesystem: reads site files
- File download → Shared filesystem: reads files
- Upload and file management → Shared filesystem: writes files
- ZIP operations → Shared filesystem: reads and extracts
- Upload and file management → ZIP operations: requests extraction
- ZIP operations → JSZip library: uses
- Server startup → HTTPS and redirect: configures secure service
- HTTPS and redirect → TLS credentials: loads credentials
- Server startup → Cluster workers: starts workers
- Cluster workers → Session management: synchronizes sessions
- Request handling → Web pages: serves interface
- Browser user → Browser interactions: runs scripts
- Browser interactions → Request handling: submits actions
- Request handling → Language resources: serves language data
