From 80cfd73caec18e0d611baca320a5b16b934248fa Mon Sep 17 00:00:00 2001
From: Elian Doran
Date: Sat, 29 Mar 2025 12:06:36 +0200
Subject: [PATCH] feat(docs): document some of the technologies used
---
docs/User Guide/!!!meta.json | 76 ++++++++++++++++++-
.../Advanced Usage/Technologies used.md | 4 +
.../Technologies used/CKEditor.md | 34 +++++++++
.../Technologies used/Excalidraw.md | 4 +
.../Technologies used/Leaflet.md | 10 +++
.../Technologies used/MindElixir.md | 12 +++
.../app/doc_notes/en/User Guide/!!!meta.json | 76 ++++++++++++++++++-
.../Advanced Usage/Technologies used.html | 27 +++++++
.../Technologies used/CKEditor.html | 42 +++++++++-
.../Technologies used/Excalidraw.html | 8 +-
.../Technologies used/Leaflet.html | 28 +++++++
.../Technologies used/MindElixir.html | 12 ++-
.../doc_notes/en/User Guide/navigation.html | 5 +-
13 files changed, 326 insertions(+), 12 deletions(-)
create mode 100644 docs/User Guide/User Guide/Advanced Usage/Technologies used.md
create mode 100644 docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md
create mode 100644 src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used.html
create mode 100644 src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.html
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index a94c30c39..c9272927c 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -1521,8 +1521,24 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KSZ04uQ2D1St",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-component",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
"format": "markdown",
+ "dataFileName": "Technologies used.md",
"attachments": [],
"dirFileName": "Technologies used",
"children": [
@@ -1541,7 +1557,15 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iPIMuisry3hd",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "markdown",
"dataFileName": "CKEditor.md",
"attachments": []
@@ -1561,7 +1585,15 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "gBbsAeiuUxI5",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "markdown",
"dataFileName": "MindElixir.md",
"attachments": []
@@ -1581,10 +1613,46 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "grjYqerjn243",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "markdown",
"dataFileName": "Excalidraw.md",
"attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "MQHyy2dIFgxS",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "1YeN2MzFUluU",
+ "MQHyy2dIFgxS"
+ ],
+ "title": "Leaflet",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "81SGnPGMk7Xc",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Leaflet.md",
+ "attachments": []
}
]
}
diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used.md
new file mode 100644
index 000000000..442b589a7
--- /dev/null
+++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used.md
@@ -0,0 +1,4 @@
+# Technologies used
+One core aspect of Trilium that allows it to have support for multiple [Note Types](../Note%20Types) is the fact that it makes use of various off-the-shelf or reusable libraries.
+
+The sub-pages showcase some of the technologies used, for a better understanding of how Trilium works but also to credit the developers of that particular technology.
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.md
index e69de29bb..8ade8060c 100644
--- a/docs/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.md
+++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.md
@@ -0,0 +1,34 @@
+# CKEditor
+## Editor core
+
+The CKEditor is the WYSIWYG (standing for What You See Is What You Get) editor behind [Text](../../Note%20Types/Text.md) notes.
+
+Their website is [ckeditor.com](https://ckeditor.com/).
+
+CKEditor by itself is a commercial product, but the core is open-source. As described in [its documentation](https://ckeditor.com/docs/ckeditor5/latest/features/index.html), the editor supports quite a large number of features. Do note that not all the features are enabled in Trilium.
+
+## Premium features
+
+Some features are marked as premium in the CKEditor feature set. This means that they cannot be used without a license.
+
+Trilium cannot benefit from any of these premium features as they require a commercial license, however we are in discussions with the CKEditor team to allow us to use a subset of these premium features such as [Slash commands](https://ckeditor.com/docs/ckeditor5/latest/features/slash-commands.html).
+
+## Plugins
+
+The CKEditor ecosystem is quite extensible, in the sense that custom plugins can be written to extend the functionality of the editor beyond its original scope.
+
+Trilium makes use of such features:
+
+* The math feature is added by a version of [isaul32/ckeditor5-math: Math feature for CKEditor 5.](https://github.com/isaul32/ckeditor5-math) modified by us to fit our needs.
+* We also make use of modified upstream plugins such as [ckeditor/ckeditor5-mermaid](https://github.com/ckeditor/ckeditor5-mermaid) to allow inline Mermaid code.
+* [mlewand/ckeditor5-keyboard-marker: Plugin adds support for the keyboard input element () to CKEditor 5.](https://github.com/mlewand/ckeditor5-keyboard-marker)
+* A modified version of [ThomasAitken/ckeditor5-footnotes: Footnotes plugin for CKEditor5](https://github.com/ThomasAitken/ckeditor5-footnotes) to allow footnotes.
+
+Apart from that, Trilium also has its own set of specific plugins such as:
+
+* Cut to note
+* Include note
+* Mentions, for linking pages.
+* Markdown import.
+* Reference links.
+* etc.
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.md
index e69de29bb..ab0bb1e39 100644
--- a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.md
+++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw.md
@@ -0,0 +1,4 @@
+# Excalidraw
+[Excalidraw](https://excalidraw.com/) is the technology behind the [Canvas](../../Note%20Types/Canvas.md) notes. The source code of the library is available on [GitHub](https://github.com/excalidraw/excalidraw).
+
+We are using an unmodified version of it, so it shares the same [issues](https://github.com/excalidraw/excalidraw/issues) as the original.
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md
new file mode 100644
index 000000000..181bcd9d5
--- /dev/null
+++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md
@@ -0,0 +1,10 @@
+# Leaflet
+Leaflet is the library behind [Geo map](../../Note%20Types/Geo%20map.md) notes.
+
+## Plugins
+
+Leaflet is also highly customizable via external plugins.
+
+Currently we use:
+
+* [mpetazzoni/leaflet-gpx: A GPX track plugin for Leaflet.js](https://github.com/mpetazzoni/leaflet-gpx)
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/MindElixir.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/MindElixir.md
index e69de29bb..a969d480a 100644
--- a/docs/User Guide/User Guide/Advanced Usage/Technologies used/MindElixir.md
+++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/MindElixir.md
@@ -0,0 +1,12 @@
+# MindElixir
+MindElixir is the library we are using for the [Mind Map](../../Note%20Types/Mind%20Map.md) note types.
+
+The main library is available on [GitHub as mind-elixir-core](https://github.com/SSShooter/mind-elixir-core/issues).
+
+The library is embedded as-is without additional modifications.
+
+Issues with its functionality should generally be reported [upstream](https://github.com/ssshooter/mind-elixir-core).
+
+## Plugins
+
+MindElixir supports plugins, and one such plugin we are making use of is [SSShooter/node-menu: A node menu plugin of mind-elixir](https://github.com/SSShooter/node-menu), which allows editing the fonts, colors, links of nodes.
\ No newline at end of file
diff --git a/src/public/app/doc_notes/en/User Guide/!!!meta.json b/src/public/app/doc_notes/en/User Guide/!!!meta.json
index 4f53aaabf..4c9b98201 100644
--- a/src/public/app/doc_notes/en/User Guide/!!!meta.json
+++ b/src/public/app/doc_notes/en/User Guide/!!!meta.json
@@ -1521,8 +1521,24 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KSZ04uQ2D1St",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bxs-component",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
"format": "html",
+ "dataFileName": "Technologies used.html",
"attachments": [],
"dirFileName": "Technologies used",
"children": [
@@ -1541,7 +1557,15 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iPIMuisry3hd",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "html",
"dataFileName": "CKEditor.html",
"attachments": []
@@ -1561,7 +1585,15 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "gBbsAeiuUxI5",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "html",
"dataFileName": "MindElixir.html",
"attachments": []
@@ -1581,10 +1613,46 @@
"isExpanded": false,
"type": "text",
"mime": "text/html",
- "attributes": [],
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "grjYqerjn243",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
"format": "html",
"dataFileName": "Excalidraw.html",
"attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "MQHyy2dIFgxS",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "1YeN2MzFUluU",
+ "MQHyy2dIFgxS"
+ ],
+ "title": "Leaflet",
+ "notePosition": 40,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "81SGnPGMk7Xc",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Leaflet.html",
+ "attachments": []
}
]
}
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used.html
new file mode 100644
index 000000000..92fbce4d8
--- /dev/null
+++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ Technologies used
+
+
+
+
+
Technologies used
+
+
+
One core aspect of Trilium that allows it to have support for multiple
+ Note Types is the fact that it makes use of various off-the-shelf
+ or reusable libraries.
+
The sub-pages showcase some of the technologies used, for a better understanding
+ of how Trilium works but also to credit the developers of that particular
+ technology.
+
+
+
+
+
\ No newline at end of file
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.html
index cf23966e6..a363ce374 100644
--- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.html
+++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Technologies used/CKEditor.html
@@ -12,7 +12,47 @@
CKEditor
-
+
+
Editor core
+
The CKEditor is the WYSIWYG (standing for What You See Is What You Get)
+ editor behind Text notes.
CKEditor by itself is a commercial product, but the core is open-source.
+ As described in its documentation,
+ the editor supports quite a large number of features. Do note that not
+ all the features are enabled in Trilium.
+
Premium features
+
Some features are marked as premium in the CKEditor feature set. This
+ means that they cannot be used without a license.
+
Trilium cannot benefit from any of these premium features as they require
+ a commercial license, however we are in discussions with the CKEditor team
+ to allow us to use a subset of these premium features such as Slash commands.
+
Plugins
+
The CKEditor ecosystem is quite extensible, in the sense that custom plugins
+ can be written to extend the functionality of the editor beyond its original
+ scope.