feat(docs): document some of the technologies used

This commit is contained in:
Elian Doran 2025-03-29 12:06:36 +02:00
parent fbfeb7d2bf
commit 80cfd73cae
No known key found for this signature in database
13 changed files with 326 additions and 12 deletions

View File

@ -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": []
}
]
}

View File

@ -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.

View File

@ -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 (<kbd>) 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.

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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": []
}
]
}

View File

@ -0,0 +1,27 @@
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../../style.css">
<base target="_parent">
<title data-trilium-title>Technologies used</title>
</head>
<body>
<div class="content">
<h1 data-trilium-h1>Technologies used</h1>
<div class="ck-content">
<p>One core aspect of Trilium that allows it to have support for multiple&nbsp;
<a
class="reference-link" href="../Note%20Types">Note Types</a>&nbsp;is the fact that it makes use of various off-the-shelf
or reusable libraries.</p>
<p>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.</p>
</div>
</div>
</body>
</html>

View File

@ -12,7 +12,47 @@
<div class="content">
<h1 data-trilium-h1>CKEditor</h1>
<div class="ck-content"></div>
<div class="ck-content">
<h2>Editor core</h2>
<p>The CKEditor is the WYSIWYG (standing for What You See Is What You Get)
editor behind&nbsp;<a class="reference-link" href="../../Note%20Types/Text.html">Text</a>&nbsp;notes.</p>
<p>Their website is <a href="https://ckeditor.com/">ckeditor.com</a>.</p>
<p>CKEditor by itself is a commercial product, but the core is open-source.
As described in <a href="https://ckeditor.com/docs/ckeditor5/latest/features/index.html">its documentation</a>,
the editor supports quite a large number of features. Do note that not
all the features are enabled in Trilium.</p>
<h2>Premium features</h2>
<p>Some features are marked as premium in the CKEditor feature set. This
means that they cannot be used without a license.</p>
<p>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 <a href="https://ckeditor.com/docs/ckeditor5/latest/features/slash-commands.html">Slash commands</a>.</p>
<h2>Plugins</h2>
<p>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.</p>
<p>Trilium makes use of such features:</p>
<ul>
<li>The math feature is added by a version of <a href="https://github.com/isaul32/ckeditor5-math">isaul32/ckeditor5-math: Math feature for CKEditor 5.</a> modified
by us to fit our needs.</li>
<li>We also make use of modified upstream plugins such as <a href="https://github.com/ckeditor/ckeditor5-mermaid">ckeditor/ckeditor5-mermaid</a> to
allow inline Mermaid code.</li>
<li><a href="https://github.com/mlewand/ckeditor5-keyboard-marker">mlewand/ckeditor5-keyboard-marker: Plugin adds support for the keyboard input element (&lt;kbd&gt;) to CKEditor 5.</a>
</li>
<li>A modified version of <a href="https://github.com/ThomasAitken/ckeditor5-footnotes">ThomasAitken/ckeditor5-footnotes: Footnotes plugin for CKEditor5</a> to
allow footnotes.</li>
</ul>
<p>Apart from that, Trilium also has its own set of specific plugins such
as:</p>
<ul>
<li>Cut to note</li>
<li>Include note</li>
<li>Mentions, for linking pages.</li>
<li>Markdown import.</li>
<li>Reference links.</li>
<li>etc.</li>
</ul>
</div>
</div>
</body>

View File

@ -12,7 +12,13 @@
<div class="content">
<h1 data-trilium-h1>Excalidraw</h1>
<div class="ck-content"></div>
<div class="ck-content">
<p><a href="https://excalidraw.com/">Excalidraw</a> is the technology behind
the&nbsp;<a class="reference-link" href="../../Note%20Types/Canvas.html">Canvas</a>&nbsp;notes.
The source code of the library is available on <a href="https://github.com/excalidraw/excalidraw">GitHub</a>.</p>
<p>We are using an unmodified version of it, so it shares the same <a href="https://github.com/excalidraw/excalidraw/issues">issues</a> as
the original.</p>
</div>
</div>
</body>

View File

@ -0,0 +1,28 @@
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../../../style.css">
<base target="_parent">
<title data-trilium-title>Leaflet</title>
</head>
<body>
<div class="content">
<h1 data-trilium-h1>Leaflet</h1>
<div class="ck-content">
<p>Leaflet is the library behind&nbsp;<a class="reference-link" href="../../Note%20Types/Geo%20map.html">Geo map</a>&nbsp;notes.</p>
<h2>Plugins</h2>
<p>Leaflet is also highly customizable via external plugins.</p>
<p>Currently we use:</p>
<ul>
<li><a href="https://github.com/mpetazzoni/leaflet-gpx">mpetazzoni/leaflet-gpx: A GPX track plugin for Leaflet.js</a>
</li>
</ul>
</div>
</div>
</body>
</html>

View File

@ -12,7 +12,17 @@
<div class="content">
<h1 data-trilium-h1>MindElixir</h1>
<div class="ck-content"></div>
<div class="ck-content">
<p>MindElixir is the library we are using for the&nbsp;<a class="reference-link"
href="../../Note%20Types/Mind%20Map.html">Mind Map</a>&nbsp;note types.</p>
<p>The main library is available on <a href="https://github.com/SSShooter/mind-elixir-core/issues">GitHub as mind-elixir-core</a>.</p>
<p>The library is embedded as-is without additional modifications.</p>
<p>Issues with its functionality should generally be reported <a href="https://github.com/ssshooter/mind-elixir-core">upstream</a>.</p>
<h2>Plugins</h2>
<p>MindElixir supports plugins, and one such plugin we are making use of
is <a href="https://github.com/SSShooter/node-menu">SSShooter/node-menu: A node menu plugin of mind-elixir</a>,
which allows editing the fonts, colors, links of nodes.</p>
</div>
</div>
</body>

View File

@ -76,7 +76,7 @@
</li>
<li><a href="User%20Guide/Advanced%20Usage/Note%20source.html" target="detail">Note source</a>
</li>
<li>Technologies used
<li><a href="User%20Guide/Advanced%20Usage/Technologies%20used.html" target="detail">Technologies used</a>
<ul>
<li><a href="User%20Guide/Advanced%20Usage/Technologies%20used/CKEditor.html"
target="detail">CKEditor</a>
@ -87,6 +87,9 @@
<li><a href="User%20Guide/Advanced%20Usage/Technologies%20used/Excalidraw.html"
target="detail">Excalidraw</a>
</li>
<li><a href="User%20Guide/Advanced%20Usage/Technologies%20used/Leaflet.html"
target="detail">Leaflet</a>
</li>
</ul>
</li>
</ul>