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
148 downloads per month
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
andratatui
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
Dependencies
~8–44MB
~752K SLoC