notera 📝
Check out the ai-beta here
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
.txtor.mdfiles 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
Please see INSTALL.md for installation instructions.
🏃♂️ Quick Start
Before running any commands, initialize notera for the first time:
This command will set up the required configurations (including storage paths) and initialize the SQLite database.
To check the available commands, run:
💻 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
- Options:
-
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
- Options:
-
-
🗂️ Exports and Imports:
-
export <FLAGS>- Options:
--all: Export all notes into a single.mdor.txtfile--note: Export a specific note into a.mdor.txtfile
- Options:
-
import <FLAGS>- Options:
--dir <DIR_PATH>: Import all qualifying notes of a directory into notera--note <FILE_PATH>: Import a specific note into notera
- Options:
-
-
Setup:
-
config: Open and modify the app's configuration settings.- Default config created after running
notera init:= "nvim" = "/User/{user}/.local/share/notera" = "/User/{user}/Documents/notera_exports" = "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
- Default config created after running
-
init: Initializenoterafor first-time use, setting up configurations and database storage. -
help: Show the default help message.
-
-
DANGER ZONE:
clean: Delete all temporary and persistentnoteradata (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:
Configuration options include the following:
- Editor used: The text editor used to create and edit notes (e.g., Vim).
- Database Directory: Directory where the database is 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.