jim-fx / notarium

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Notarium

Notarium

Notarium is a selfhosted note taking app.

Table of contents

What is Notarium?

Notarium is a note taking and organizing application which uses a folder as a database. Because of this you can easily use a third party program like syncthing to keep your notes synchronised across all your devices.

Architecture

See Architecture.md

Developing

Install prerequesits:

  • Node.js
  • pnpm

Install dependancies

$ pnpm i -r

Start the dev server

$ pnpm dev

Importance List:

  • Good Markdown Editing Experience in the Browser
    • Simple Authentication
  • Multi User Editing
    • Password/URL for single file sharing
  • Rendering to Static HTML

TODO

  • P2P Messaging
  • Automerge
  • Connect Editor to Automerge
  • Implement Data Model
    1. Tree (Half implemented)
    2. Document
  • [-] Sync FSAdapter with DataBackend
    • Not completely done, need better syncing in fs adapter
  • Replace Automerge with yjs
  • Add mimetype to treeData
  • Implement Document parsing
  • Offline Mode (eg, button to download all documents);
    • Still need save the "I am in offline mode" in localStorage
  • Context Loading, for a certain path check if there is a .config file or a .theme file in the directory
    • Cant sync config.json with
    • Maybe use yaml, seems more resistant to format changes
    • Context Store (index.md+frontmatter, config.json)
  • Sync Tree with Document, eg (document deletion);
  • Sync Binary files with peers, maybe simple-peer-files
  • Authentication / Authorization, okay p2p auth seems hard
    • Move Doc Syncing into NetworkAdapter
    • Transitioning to Y-WebRTC/Y-WebSocket
    • Awareness Information
  • [-] Render Static Public Content
  • Theming Support
  • Switch from Ace to CodeMirror

Future Features

  • Table with Filtering
  • CircuitJS Embedding
  • Latex Rendering
  • Running Code Blocks
  • Charts
  • Variables
  • Drawings (Excalidraw)

About


Languages

Language:TypeScript 78.7%Language:Svelte 19.6%Language:JavaScript 1.2%Language:HTML 0.6%Language:CSS 0.0%