docs: add dependency diagram

This commit is contained in:
Tien Do Nam
2026-07-18 02:21:58 +02:00
parent 6f8eff43e3
commit ea7e2cf605
4 changed files with 1089 additions and 9 deletions
+5 -9
View File
@@ -23,10 +23,10 @@
LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection. LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.
- [About](#about) - [About](#about)
- [Sponsors](#sponsors)
- [Screenshots](#screenshots) - [Screenshots](#screenshots)
- [Download](#download) - [Download](#download)
- [How It Works](#how-it-works) - [How It Works](#how-it-works)
- [Dependency Hierarchy](#dependency-hierarchy)
- [Getting Started](#getting-started) - [Getting Started](#getting-started)
- [Contributing](#contributing) - [Contributing](#contributing)
- [Translation](#translation) - [Translation](#translation)
@@ -43,14 +43,6 @@ LocalSend is a free, open-source app that allows you to securely share files and
LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication. LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication.
## Sponsors
Browser testing via
<a href="https://www.testmuai.com/?utm_medium=sponsor&utm_source=localsend" target="_blank">
<img src="https://localsend.org/img/sponsors/tesmu.svg" style="vertical-align: middle;" width="250" height="45" />
</a>
## Screenshots ## Screenshots
<img src="https://localsend.org/img/screenshot-iphone.webp" alt="iPhone screenshot" height="300"/> <img src="https://localsend.org/img/screenshot-pc.webp" alt="PC screenshot" height="300"/> <img src="https://localsend.org/img/screenshot-iphone.webp" alt="iPhone screenshot" height="300"/> <img src="https://localsend.org/img/screenshot-pc.webp" alt="PC screenshot" height="300"/>
@@ -136,6 +128,10 @@ LocalSend uses a secure communication protocol that allows devices to communicat
For more information on the LocalSend Protocol, see the [documentation](https://github.com/localsend/protocol). For more information on the LocalSend Protocol, see the [documentation](https://github.com/localsend/protocol).
## Dependency Hierarchy
![Dependency hierarchy](support/docs/dependency-hierarchy.svg)
## Getting Started ## Getting Started
To compile LocalSend from the source code, follow these steps: To compile LocalSend from the source code, follow these steps:
+7
View File
@@ -0,0 +1,7 @@
# Dependency Diagram
From the repository root, generate the SVG with [D2](https://d2lang.com):
```sh
d2 --theme 4 --dark-theme 200 --layout elk --pad 32 support/docs/dependency-hierarchy.d2 support/docs/dependency-hierarchy.svg
```
+116
View File
@@ -0,0 +1,116 @@
# Render with:
# d2 --theme 4 --dark-theme 200 --layout elk --pad 32 support/docs/dependency-hierarchy.d2 support/docs/dependency-hierarchy.svg
direction: down
classes: {
card: {
shape: text
}
}
consumers: "" {
direction: right
style: {
border-radius: 16
stroke-dash: 4
}
app: ||md
<table>
<tr>
<td style="width:100%"><h6 style="margin:0;font-size:1em;color:inherit">App</h6></td>
<td align="right" style="white-space:nowrap">Dart/Flutter</td>
</tr>
<tr>
<td colspan="2">/app/</td>
</tr>
<tr>
<td colspan="2">Cross-platform App</td>
</tr>
</table>
|| {
class: card
}
cli: ||md
<table>
<tr>
<td style="width:100%"><h6 style="margin:0;font-size:1em;color:inherit">CLI</h6></td>
<td align="right" style="white-space:nowrap">Rust</td>
</tr>
<tr>
<td colspan="2">/cli/</td>
</tr>
<tr>
<td colspan="2">Command line interface</td>
</tr>
</table>
|| {
class: card
}
server: ||md
<table>
<tr>
<td style="width:100%"><h6 style="margin:0;font-size:1em;color:inherit">Server</h6></td>
<td align="right" style="white-space:nowrap">Rust</td>
</tr>
<tr>
<td colspan="2">/server/</td>
</tr>
<tr>
<td colspan="2">WebRTC signaling server</td>
</tr>
</table>
|| {
class: card
}
}
localsend_isolates: ||md
<table>
<tr>
<td style="width:100%"><h6 style="margin:0;font-size:1em;color:inherit">LocalSend Isolates</h6></td>
<td align="right" style="white-space:nowrap">Dart + Rust</td>
</tr>
<tr>
<td colspan="2">/packages/localsend_isolates/</td>
</tr>
<tr>
<td colspan="2">Background thread and Rust bindings</td>
</tr>
</table>
|| {
class: card
}
core: ||md
<table>
<tr>
<td style="width:100%"><h6 style="margin:0;font-size:1em;color:inherit">Core</h6></td>
<td align="right" style="white-space:nowrap">Rust</td>
</tr>
<tr>
<td colspan="2">/packages/core/</td>
</tr>
<tr>
<td colspan="2">Library implementing the LocalSend protocol</td>
</tr>
</table>
|| {
class: card
}
core_hub: "" {
shape: circle
width: 1
height: 1
style.opacity: 0
}
consumers.app -> localsend_isolates
consumers.cli -- core_hub
consumers.server -- core_hub
localsend_isolates -- core_hub
core_hub -> core
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 43 KiB