Check out
A simple, self-hosted note-taking and slide-making solution.
You can see the demo for an overview of basic features. Note that this demo has no server-side capability, but only serves to demonstrate the editor on a sample buffer.
More detailed documentation is below.
- Most universal markdown text-editing shortcuts should work, and things like
ctrl-sfor save. - Double click split-view gutter: reset to default proportion
ctrl-space: Add/edit/open image under cursorctrl-p: File palette (switch, open, create new files)
Customization can be done through certain files that will be loaded in place of their defaults, if present at the top level of the notes directory with the following names:
-
config.js: Add MathJax macros (per the MathJax docs), snippets (in the style of vscode, but only what codemirror supports), and configure some settings for image drawing. This is done by adding data to a globalwindow.mynoteserverobject as done in the default config file. -
reveal-theme.css: Use a reveal.js theme of your choosing; the default one is a combination of the default and dark theme (depending on dark mode) -
highlight-theme.css: Use a highlight.js theme of your choosing (for code highlighting), the default one again includes a light and dark theme. -
Macros can be automatically added to a custom
config.jsfile from the editor by bringing up a dialog withctrl-alt-m. -
The editor supports snippet completion, in the style of vscode. By default, all builtin LaTeX commands as well as all user-defined MathJax macros have automatically created snippets. You can also use the
config.jsfile to add additional snippets; the default config file has some included. The supported syntax is the same as as vscode snippet JSON files, but doesn't support all features such as variables and regex (only what codemirror supports).
This app glues together a vast number of robust and customizable existing technologies. An overview:
- It is a Vue 3 application, with Bulma for the basic UI; the server is fastify.
- Codemirror provides the (extremely robust, extensible, and featureful!) editor.
- markdown-it and various extensions is used and customized for rendering.
- Math is implemented with MathJax
- perfect-freehand is used for sketching.