#notes #sqlite #note #open #source #tool #export

app notera

notera is an open source minimal note taking tool

3 releases

new 0.1.0-alpha.2 Mar 9, 2025
0.1.0-alpha.0 Mar 8, 2025

#2 in #note

48 downloads per month

MIT license

47KB
849 lines

notera 📝

GitHub Actions Workflow Status

A powerful and lightweight CLI-based note-taking app built with Rust.

👣 Features

  • 📋 Create, edit, delete, and view notes easily from your terminal using your favorite CLI editor (e.g., Vim (default), Nvim, Nano).
  • 📂 Organize and sort notes effortlessly.
  • 🕒 Timestamps for notes to track when they were created or updated.
  • 🗑️ Clear all notes or delete them individually.
  • 🗂️ Export notes to .txt or .md files for external use.
  • 🤖 Includes a robust initialization and cleanup mechanism for managing configurations and data.
  • 📦 Notes are safely stored using an SQLite database.
  • 🚀 Fast and efficient workflow tailored for CLI enthusiasts.

📦 Installation

Option 1: Clone Repository

  1. Clone the repository:

    git clone https://github.com/hijknight/notera.git
    
  2. Build notera:

    cd notera && cargo b -r
    
  3. Add the notera command to your system PATH:

    macOS/Linux:

    sudo mv target/release/notera /usr/local/bin
    

    Windows:

    // Coming Soon 🔜
    

🏃‍♂️ Quick Start

Before running any commands, initialize notera for the first time:

notera init

This command will set up the required configurations (including storage paths) and initialize the SQLite database.

To check the available commands, run:

notera --help

💻 Supported CLI Actions

  • 📝 Take notes:

    • new <TITLE>: Add a new note.

    • view <FLAGS>: View all or specific notes

      • Options:
        • --all: List all notes in database
        • --note <TITLE>: View the title, content and timestamp of a specific note
    • edit <TITLE>: Edit an existing note.

    • delete <FLAGS>: Delete all or a specific note

      • Options:
        • --note <TITLE>: Delete a specific note
        • --all: Delete all notes
  • 🗂️ Exports and Imports:

    • export <FLAGS>

      • Options:
        • --all: Export all notes into a single .md or .txt file
        • --note: Export a specific note into a .md or .txt file
    • import <FLAGS>

      • Options:
        • --dir <DIR_PATH>: Import all qualifying notes of a directory into notera
        • --note <FILE_PATH>: Import a specific note into notera
  • Setup:

    • config: Open and modify the app's configuration settings.

      • Default config created after running notera init:
        editor = "nvim"
        note_db_directory = "/User/{user}/.local/share/notera"
        export_path = "/User/{user}/Documents/notera_exports"
        export_format = "md"
        
        # Possible values:
        
          # Editor: vim, nano, emacs, nvim, etc. (must be cli-based editor)
        
          # Note db directory: Should be kept default unless you know what you're doing.
        
          # Export path: Feel free to change, just make sure valid path.
        
          # IMPORTANT: Choose an export format. 'md' or 'txt'. md tends to be better for exports
        
    • init: Initialize notera for first-time use, setting up configurations and database storage.

    • help: Show the default help message.

  • DANGER ZONE:

    • clean: Delete all temporary and persistent notera data (export files, , including the SQLite database and temporary files.

🛠 Configuration

The application automatically stores user preferences in a config.toml file for easier management. Open or modify it with the command:

notera config

Configuration options include the following:

  • Editor used: The text editor used to create and edit notes (e.g., Vim).
  • Temporary Notes Directory: Directory where temporary files are stored. (Should remain as default)
  • Export Path: The directory location where exported files are saved.
  • Export Format: The format in which exports are saved.

👷 Built With

  • Rust – for fast and safe application development.
  • serde & toml-rs – data serialization and configuration parsing.
  • chrono – handling and formatting dates/timestamps.
  • rusqlite – lightweight SQLite database library integration.
  • clap – parse and handle CLI arguments effortlessly.

🔮 Future Plans

  • Better help message and optimizations for first release
  • Listening with AI

🪪 License

This project is open-source and available under the MIT License.

Dependencies

~23–31MB
~514K SLoC