#tui #terminal-app #journal #cli #ui

bin+lib tui-journal

Tui app allows writing and managing journals/notes from within the terminal With different local back-ends

4 releases

0.1.3 May 30, 2023
0.1.2 May 25, 2023
0.1.1 May 15, 2023
0.1.0 May 15, 2023

#528 in Command line utilities

Download history 28/week @ 2023-05-09 32/week @ 2023-05-16 37/week @ 2023-05-23 51/week @ 2023-05-30

148 downloads per month

MIT license

800KB
3K SLoC

TUI-Journal

TUI-Journal is a terminal-based application written in Rust that allows you to write and manage your journal/notes from within the comfort of your terminal. It provides a simple and efficient interface for creating and organizing your thoughts, ideas, and reflections. TUI-Journal supports two different local back-ends: a plain text back-end in JSON format and a database back-end using SQLite.

Demo

Features

  • Write and manage journal/notes entries from the terminal.
  • Store your entries in either a plain text file using the JSON format or a SQLite database.
  • Intuitive, responsive and user-friendly text-based user interface (TUI).
  • Create, edit, and delete entries easily.
  • Keybindings is a combination of VIM and Emacs motions (VIM for navigation and Emacs for editing texts in edit-mode).
  • See the keybindings from inside the app
  • Cross-platform compatibility (Windows, macOS, Linux, NetBSD).
  • Export the current journal's content to a predefined export path or the current directory

Roadmap

Back-ends:

  • Plain text JSON back-end.
  • Database back-end using SQLite.
  • RESTful back-end server with a client in the app.

Application:

  • Customize themes and keybindings.
  • Search functionality.
  • Load entries as chunks for better performance.

Installation

Ensure you have Rust installed on your system.

Linux Dependencies:

Make sure the OpenSSL development package is installed on your system.

  • Ubuntu/Debian:
    sudo apt install -y libssl-dev 
    
  • Fedora:
    sudo dnf install openssl-devel
    

Install with default features:

To install TUI-Journal with default features (SQLite and JSON), you can use cargo to install directly from crates.io:

cargo install tui-journal

Install with Specific Features:

You can choose to install TUI-Journal with specific features enabled or disabled by customizing the cargo installation command. To install TUI-Journal with only the JSON back-end feature, use the following command:

cargo install tui-journal --no-default-features --features json

To install TUI-Journal with only the SQLite back-end feature, use the following command:

cargo install tui-journal --no-default-features --features sqlite

NetBSD

On NetBSD a pre-compiled binary built with default features is available from the official repositories. To install it, simply run:

pkgin install tui-journal

Usage

Once installed, you can run TUI-Journal by typing tjournal in your terminal:

$ tjournal

To view the available arguments and commands, you can use the --help or -h flag:

$ tjournal --help

Usage: tjournal [OPTIONS] [COMMAND]

Commands:
  print-config  Print the current settings including the paths for the backend files [aliases: pc]
  help          Print this message or the help of the given subcommand(s)

Options:
  -j, --json-file-path <FILE PATH>    Sets the entries Json file path and starts using it
  -s, --sqlite-file-path <FILE PATH>  Sets the entries sqlite file path and starts using it
  -b, --backend-type <BACKEND_TYPE>   Sets the backend type and starts using it [possible values: json, sqlite]
  -w, --write-config                  write the current settings to config file (this will rewrite the whole config file)
  -v, --verbose...                    Increases logging verbosity each use for up to 3 times
  -l, --log <FILE PATH>               Specifies a file to use for logging
                                      (default file: <cache_dir>/tui-journal/tui-journal.log)
  -h, --help                          Print help
  -V, --version                       Print version

Configuration

The configuration for TUI-Journal can be found in the config.toml file located in the configuration folder within the TUI-Journal directory.

Here is a sample of the default settings in the config.toml file:

backend_type = "Sqlite"   # available options: Json, Sqlite. Default value: Sqlite.

[export]
default_path = "<Absolute_path_to_export_directory>"   # Optional default path to export journal content. Falls back to the current directory if not specified.
show_confirmation = true   # Show confirmation after successful export.

[json_backend]
file_path = "<Documents-folder>/tui-journal/entries.json"

[sqlite_backend]
file_path = "<Documents-folder>/tui-journal/entries.db"

Acknowledgments

TUI-Journal would not have been possible without the following open-source crates:

  • tui-rs and its revival ratatui: TUI-Journal utilizes the tui-rs and ratatui crates, which provide a framework for building terminal user interfaces in Rust. They offer a wide range of components and utilities to create interactive and responsive TUI applications.

  • tui-texteditor: TUI-Journal leverages the tui-texteditor crate, which offers a text editor widget specifically designed for terminal-based applications. It provides functionalities such as text manipulation, cursor movement, and scrolling within the TUI environment.

  • sqlx: TUI-Journal benefits from the sqlx crate, which is a Rust library for interacting with databases. It enables seamless integration with SQLite, allowing TUI-Journal to store journal entries and notes in a reliable and efficient manner.

These crates have greatly contributed to the development of TUI-Journal, and the project extends its gratitude to the maintainers and contributors of these fantastic open-source libraries.

Contributing

As the author of TUI-Journal and being new to the open-source community, I would greatly appreciate any contributions from experienced developers. Your contributions can help enhance the functionality, usability, and overall quality of TUI-Journal.

If you have any ideas, bug reports, or feature requests, please don't hesitate to open an issue on the TUI-Journal. Your feedback and input are invaluable in improving the application.

If you would like to contribute code, documentation, or any other form of assistance, I am open to collaboration. Please reach out through the GitHub repository and let's discuss how you can contribute to TUI-Journal.

Thank you for considering contributing to TUI-Journal. Your support is highly appreciated!

License

MIT

Dependencies

~8–44MB
~752K SLoC