Joplin architectureπŸ”—

Joplin as a project is organised around three main components:

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 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.json file. Its schema is available online: