diff --git a/Assets/ImageSources/DocSources/Application.drawio b/Assets/ImageSources/DocSources/Application.drawio
new file mode 100644
index 000000000..6b0710394
--- /dev/null
+++ b/Assets/ImageSources/DocSources/Application.drawio
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/ImageSources/DocSources/JoplinServer.drawio b/Assets/ImageSources/DocSources/JoplinServer.drawio
new file mode 100644
index 000000000..76551df69
--- /dev/null
+++ b/Assets/ImageSources/DocSources/JoplinServer.drawio
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/WebsiteAssets/images/architecture/Application.png b/Assets/WebsiteAssets/images/architecture/Application.png
new file mode 100644
index 000000000..fd2fbd0a3
Binary files /dev/null and b/Assets/WebsiteAssets/images/architecture/Application.png differ
diff --git a/Assets/WebsiteAssets/images/architecture/JoplinServer.png b/Assets/WebsiteAssets/images/architecture/JoplinServer.png
new file mode 100644
index 000000000..b3fdacc54
Binary files /dev/null and b/Assets/WebsiteAssets/images/architecture/JoplinServer.png differ
diff --git a/README.md b/README.md
index 1f8382271..35cb97cb9 100644
--- a/README.md
+++ b/README.md
@@ -125,10 +125,11 @@ A community maintained list of these distributions can be found here: [Unofficia
- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md)
- [Writing a technical spec](https://github.com/laurent22/joplin/blob/dev/readme/technical_spec.md)
- [Desktop application styling](https://github.com/laurent22/joplin/blob/dev/readme/spec/desktop_styling.md)
- - [Note History spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md)
+ - [Note history spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md)
- [Synchronisation spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync.md)
- [Sync Lock spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md)
- [Synchronous Scroll spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_scroll.md)
+ - [Overall Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/architecture.md)
- [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md)
- [Search Sorting spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md)
- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md)
diff --git a/readme/spec/architecture.md b/readme/spec/architecture.md
new file mode 100644
index 000000000..15ca5ed2c
--- /dev/null
+++ b/readme/spec/architecture.md
@@ -0,0 +1,72 @@
+# Joplin architecture
+
+Joplin as a project is organised around three main components:
+
+- The user applications (desktop, mobile and CLI)
+- Joplin Server
+- Web Clipper
+
+## User applications
+
+The desktop, mobile and CLI applications have the same architecture and mostly the same backend. The main difference is for the UI, where they each use a different framework, and for system integration (eg. notifications, importing or exporting files, etc.).
+
+The overall architecture for each application is as such:
+
+- Front end: The user facing part of the app. This is different for each applications (see below for the difference between applications)
+
+- Back end: This is shared by all applications. It is made of:
+
+ - Services: Provide high-level functionalities, such as the search engine, plugin system or database driver.
+
+ - Models: The model layer sits between the services and database. They provide a higher level abstraction than SQL and utility functions to easily save data, such as notes, notebooks, etc.
+
+ - Database: All applications use a local [SQLite database](https://sqlite.org/index.html) to store notes, settings, cache, etc. This is only a local database.
+
+- Configuration: The application is configured using a `settings.json` file. Its schema is available online: https://joplinapp.org/schema/settings.json
+
+
+
+### Desktop application
+
+The desktop application is developed using [Electron](https://www.electronjs.org/), with a front end done in [React](https://react.dev/). The backend runs on [Node.js](https://nodejs.org/).
+
+### Mobile application
+
+The mobile application is developed using [React Native](https://reactnative.dev/). The backend runs on React Native's own [Hermes JavaScript engine](https://hermesengine.dev/).
+
+### CLI application
+
+This application is to use Joplin from the terminal. It is developed using [terminal-kit](https://github.com/cronvel/terminal-kit). The backend runs on Node.js.
+
+## Joplin Server
+
+Joplin Server is used to synchronise the application data between multiple devices. Thus, a user can have their notes on their laptop, and on the go, on their phone. Joplin Server also allows user to share notebooks with others, and publish notes to the internet. Because it is designed specifically for Joplin, it also offers improved performance, compared to other synchronisation targets.
+
+A typical Joplin Server installation will use the following elements:
+
+- The [Joplin Server application](https://github.com/laurent22/joplin/blob/dev/packages/server/README.md). This is a Node.js application. It exposes a REST API that is used by the Joplin clients to upload or download notes, notebooks, and other Joplin objects.
+
+- [PostgreSQL](https://www.postgresql.org/): it is used to save the "item" metadata. An "item" can be a note, a notebook, a tag, etc. It is also used to save other informations, such as user accounts, access logs, etc.
+
+- [AWS S3](https://aws.amazon.com/s3/): it is used to save the item content. In other words, the note body, the file attachments, etc.
+
+- [Nginx](https://www.nginx.com/): It is used as a reverse proxy and for TLS termination.
+
+- A configuration file: A `.env` file, which contains environement variables used to configure the server.
+
+This is a typical Joplin Server installation, but many of its components can be configured - for example it is possible to use a different database engine, or to use the filesystem instead of AWS S3. Any reverse proxy would also work - using Nginx is not required.
+
+
+
+## Web Clipper
+
+The Web Clipper is a browser extension for Firefox and Chrome. It is used to capture a web page, a part of a page, or a screenshot from the browser, and save it to Joplin.
+
+It is developed using the [WebExtensions API](https://extensionworkshop.com/documentation/develop/about-the-webextensions-api/) with the popup being done using React.
+
+# More information
+
+- [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md)
+- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md)
+- [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee/workflow.md)
+- [All Joplin technical specifications](https://github.com/laurent22/joplin/tree/dev/readme/spec)