#note-taking #tui #version-control #git-version #local-git #vim #data-privacy

app glues

Vim-inspired TUI note-taking app with Git, MongoDB, CSV, and JSON support - privacy-focused and sync-enabled

11 releases (4 breaking)

new 0.5.2 Dec 3, 2024
0.5.1 Nov 24, 2024
0.4.0 Oct 29, 2024
0.3.2 Oct 22, 2024
0.1.0 Aug 13, 2024

#124 in Encoding

Download history 11/week @ 2024-08-17 390/week @ 2024-08-24 36/week @ 2024-08-31 2/week @ 2024-09-07 13/week @ 2024-09-14 3/week @ 2024-09-21 34/week @ 2024-09-28 5/week @ 2024-10-05 137/week @ 2024-10-12 354/week @ 2024-10-19 165/week @ 2024-10-26 38/week @ 2024-11-02 5/week @ 2024-11-09 153/week @ 2024-11-16 171/week @ 2024-11-23 173/week @ 2024-11-30

509 downloads per month

Apache-2.0

225KB
6K SLoC

Glues

crates.io LICENSE Rust Chat

Vim-inspired, privacy-first TUI note-taking app with multiple storage options

Glues is a Vim-inspired, terminal-based (TUI) note-taking application that offers flexible and secure storage options. You can store your notes locally, choose Git for distributed version control, or opt for MongoDB for centralized data management. This flexibility allows you to manage your notes in the way that best suits your workflow, whether you prefer the simplicity of local files, the collaboration capabilities of Git, or the scalability of MongoDB. For additional support, log file formats such as CSV and JSON are also available.

Glues is designed with a core architecture that operates independently of the TUI, providing robust state management and action handling. Although the current frontend is TUI-based, the architecture allows for easy integration with other frontends such as GUI, iOS, Android, or even running headlessly without a UI. The TUI interface clearly displays the current state and available actions, making it intuitive and easy to use.

With no reliance on third-party services, Glues ensures that your data remains private and fully under your control. Currently, it supports Git and MongoDB for storage, and we plan to integrate additional storage options through GlueSQL, giving you even more flexibility in managing your data. The core concept behind Glues is to empower users to choose how their data is handled—whether through local files, Git, MongoDB, or future storage options—without any dependence on a central authority. This makes Glues a sync-enabled application that prioritizes user autonomy and privacy.

image

Installation

First, ensure Rust is installed. Then, install Glues by running:

cargo install glues

For Arch Linux users, Glues is available in the AUR:

paru -S glues # user your favorite AUR helper

We're working on making Glues available through more package managers soon.

Usage

Glues offers various storage options to suit your needs:

  • Instant: Data is stored in memory and only persists while the app is running. This option is useful for testing or temporary notes as it is entirely volatile.

  • Local: Notes are stored locally as separate files. This is the default option for users who prefer a simple, file-based approach without any remote synchronization.

  • Git:

    • Git storage requires three inputs: path, remote, and branch.
    • The path should point to an existing local Git repository. For example, you can clone a GitHub repository and use that path.
    • The remote and branch specify the target remote repository and branch for synchronization.
    • When you modify notes or directories, Glues will automatically sync changes with the specified remote repository, allowing for distributed note management.

    To see how notes and directories are stored using Git, you can refer to the Glues sample repository.

  • MongoDB:

    • MongoDB storage allows you to store your notes in a MongoDB database, providing a scalable and centralized solution for managing your notes.
    • You need to provide the MongoDB connection string and the database name. Glues will handle storing and retrieving notes from the specified database.
    • This option is ideal for users who need centralized data management or work in team environments where notes are shared.
  • CSV or JSON:

    • These formats store notes as simple log files, ideal for quick data exports or reading logs.
    • CSV saves data in comma-separated format, while JSON uses JSONL (JSON Lines) format.

Roadmap

Here is our plan for Glues and the features we aim to implement. Below is a list of upcoming improvements to make Glues more useful and versatile. If you have suggestions for new features, please feel free to open a GitHub issue.

  • Enhanced Note Content Support: Add support for richer note content, including tables and images, in addition to plain text. This will help users create more detailed and organized notes.
  • Search and Tagging Improvements: Improve search with tag support and advanced filtering to make it easier to find specific notes.
  • Customizable Themes: Allow users to personalize the TUI interface with customizable themes.
  • Additional Package Manager Support: Expand distribution beyond Cargo, making Glues available through more package managers like Homebrew, Snap, and APT for easier installation.
  • Note and Directory Movement: Add features to move notes and directories for better organization.
  • Storage Migration: Add a feature to migrate data between different storage options, such as from CSV to Git.
  • More Vim Keybindings: Integrate Vim keybindings for users who prefer Vim-like shortcuts.
  • Additional Storage Backends: Support more storage options like Redis and object storage for greater flexibility.

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.

Dependencies

~44–59MB
~1M SLoC