u/FoldPotential7824

was tired of note-taking apps that were either too bloated or tried to lock my data in their cloud. I wanted something built with a clean architecture that treats my local folders as "Facets" (vaults).

So I built Amethyst. It’s 100% open-source (AGPL-3.0) and focused on speed.

What’s under the hood in v0.5.0:

  • Command Registry: A centralized hub that handles all keyboard shortcuts and UI actions.
  • Scientific Ready: Native LaTeX math rendering in the preview.
  • Local-First: Real-time filesystem watching (Chokidar) so your notes are always in sync with your local drive.
  • Recursive Tree: Drag & drop support to organize notes and notebooks.
  • Linux Support: Added official Arch Linux (pacman) support alongside AppImage, DEB, and RPM.

I'm currently working on a high-performance refactor for synchronized scrolling and a global command palette.

GitHub Repo:https://github.com/abdallah-moh1/amethyst

I’d love for you guys to check out the code or the "Welcome Note" in the app and let me know what you think!

u/FoldPotential7824 — 10 days ago

Hey everyone,

I wanted to share an open-source project I’ve been building called Amethyst. It’s a local-first Markdown note-taking app, but I wanted to focus specifically on the architecture because building desktop apps with React can easily become a bloated mess if not structured well.

The Stack: React, Vite, TypeScript, and Electron.

How I structured the React side:

  • Centralized Command Registry: Instead of scattering onClick handlers everywhere, I built a Command System. UI buttons, context menus, and keyboard shortcuts all dispatch actions to a central registry.
  • State & Drag-and-Drop: The UI features a recursive tree view for files, utilizing complex drag-and-drop logic to reorganize nested components without tanking performance.
  • Tab-less Focus: The UI avoids the heavy DOM overhead of multiple tabs, loading single notes instantly.

The codebase is fully open-source (AGPL-3.0). If you are looking for an example of how to securely bridge a React renderer with an Electron main process via a narrow preload script, check out the repo: GitHub:https://github.com/abdallah-moh1/amethyst

Let me know what you think of the Command Registry pattern!

reddit.com
u/FoldPotential7824 — 10 days ago