Joplin as a project is organised around three main components:
- The user applications: For desktop, mobile and CLI)
- Joplin Server
- Web Clipper
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 synchroniser.
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 to store notes, settings, cache, etc. This is only a local database.
Configuration: The application is configured using a
settings.jsonfile. Its schema is available online: https://joplinapp.org/schema/settings.json