Pynotes is a lightning-fast terminal-based Markdown personal journal and notes tool. It allows you to seamlessly create, read, list, and filter your notes directly from the command line, while storing everything locally in a lightweight SQLite database.
- Create & Edit: Interactively create notes with titles, tags, and Markdown content. Edit existing notes smoothly.
- List & Filter: View all your notes in a beautifully formatted table or filter them down by specific tags.
- View Notes: Render your notes with full Markdown syntax highlighting right in your terminal.
- Local Storage: Keeps all your data secure and accessible on your local machine (
~/.pynotes.db).
pynotes/
├── pyproject.toml # Project metadata and dependencies configuration
├── README.md # Project documentation and instructions
└── pynotes/ # Main application package
├── __init__.py # Marks the directory as a Python package
├── main.py # Entry point defining the CLI commands using Typer
├── db.py # Handles SQLite database connection and queries
├── ui.py # Manages terminal output rendering using Rich
└── prompts.py # Handles interactive user inputs using Questionary
- Python 3.10+
- Typer: For building the powerful command-line interface.
- Rich: For beautiful terminal formatting, tables, and Markdown rendering.
- Questionary: For interactive and user-friendly CLI prompts.
- SQLite3: For local database storage (built-in).
From PyPI (Recommended)
You can install pynotes-cli directly from PyPI:
pip install pynotes-cliFrom Source (For Developers) If you want to modify the code, install it in editable mode:
# Clone the repository and navigate to the directory
git clone https://github.com/senku1505/pynotes.git
cd pynotes
# Install the package and its dependencies
pip install -e .Once installed, the pynotes command will be globally available in your terminal environment.
Initialize the Database:
Initialize your local database at ~/.pynotes.db.
pynotes initCreate a New Note:
pynotes newFollow the interactive prompts to add your title, tags, and Markdown content. Press Alt+Enter (or Esc then Enter on Mac) to save the content.
List All Notes:
pynotes listFilter Notes by Tag:
pynotes list --tag <your-tag>View a Specific Note: View the full rendered Markdown of a note by providing its ID.
pynotes view <note_id>Edit a Note: Edit the title, tags, or content of an existing note.
pynotes edit <note_id>