booky is a minimalstic Tui tool for managing your growing book collection.

Overview

booky

booky is a minimalistic TUI tool for managing your growing book collection.

It is writtin in Rust and uses diesel as it's orm together with sqlite. The tui is created using the awesome Rust crate called ratatui

Motivation

After learning Rust for 10 days I wanted to start a small project that I could personally use. I live inside my terminal like the cool kids, so I wanted to create a small tool that could make it easy for me to manage my growing book collection.

Reading is fun, but I quickly forget which books I've read in a month/year. Or how many books of an author I have personally read. I want a simple tool that shows me my current list of books and allows me to see statistics like:

  • Books read in the month of April
  • Books read in 2023
  • You've read 20 fictional books in 2020, etc.

As of now, booky can only perform CRUD operations and allows for a basic search on book titles. I plan to add more features as can be seen in the TODO section.

This project suffers from noobiness, I'm learning Rust and a bunch of things at the same time. I'm doing a lot of yucky experiments to gain knowledge, feel free to tell me my code sucks and how I can improve it. You can ofcourse also do a pr to add features or write better code.

Features

  • Basic Vim movement: Use jk to move and / to search.
  • Ability to search books
  • Sqlite database so you can store more books than you can read (and bring your collection everywhere) ;)
  • Works in the terminal, you can now look cool adding books!

Showcase

image image image

Building and Installing

  • Make sure you have Rust installed.
  • Clone this repo and cd into it.
  • Build the project using cargo b --release
  • The binary can be found in target/release/booky

If all goes well, booky will create a directory in /documents/booky containing a empty books.db

Keybindings

  • ? -> To open help menu.
  • i -> Insert a new book.
  • d -> Delete current highlighted book (no confirmation).
  • u -> Update current highlighted book.
  • jk or up/down -> To change selected book.
  • / -> Search for a book.
  • r -> Clear search
  • q -> Quit booky

TODO

  • Refactor a bunch of code.
  • Make booky render the ui better on smaller terminals, currently booky works best on a full screen terminal.
  • Make booky look a little nicer with more colors.
  • Create a statistics tab that shows you how many books you've read this month/year, how many per genre and more.
  • Add a logger to booky that shows the user if changes were made to the db like an CRUD operation
  • Add ability to export your books in json format, that way you can use them on your website I guess?
  • Better error handling

Contributions

I'm a rust noob, contributions are always welcome. Feel free to create an issue and to @ me.

If there is something that I'm doing very wrong (likely the case), don't hold back and just tell me. The goal of this project is to learn, but I also want to make it a tool that other people could use.

Acknowledgements/Inspiration

I wouldn't be able to create booky without an awesome project called kanban-tui

I took a lot of inspiration from Joseph Ferano's kanban-tui project, it helped me understand how I could create "forms" that I could use for adding/searching in booky. Check his cool project out!

License

booky is licensed with the MIT license. Check the LICENSE file for more info.

You might also like...
A TUI for your todos built in Rust with full CLI support.

todui TUI Features This app allows for almost anythig you would need when dealing with todos: Create, edit, and delete tasks Add links to tasks Add du

A simple, TUI git management tool

Gitten Gitten is git project manager with multiple repositories. With gitten you can check out to new branches and tag branches from you active. Prere

Api testing tool made with rust to use for api developement (Kind of Tui)
Api testing tool made with rust to use for api developement (Kind of Tui)

Api testing tool made with rust to use for api developement (Kind of Tui) This Rust project provides a simple yet powerful tool for making HTTP reques

Translation support for mdbook. The plugins here give you a structured way to maintain a translated book.

Gettext Translation Support for mdbook The plugins here makes it easy to translate documentation written in mdbook into multiple languages. Support fo

Rust For Data book

Rust For Data This book is available for free online at https://rustfordata.com You can find the source code for book in ./rust4data-book This book is

A lightweight and high-performance order-book designed to process level 2 and trades data. Available in Rust and Python

ninjabook A lightweight and high-performance order-book implemented in Rust, designed to process level 2 and trades data. Available in Python and Rust

A utility for managing cargo dependencies from the command line.

cargo edit This tool extends Cargo to allow you to add, remove, and upgrade dependencies by modifying your Cargo.toml file from the command line. Curr

An interface for managing collections of labeled items and generating random subsets with specified restrictions

An interface for managing collections of labeled items and generating random subsets with specified restrictions

Work-in-progress software for managing the Azeron keypad on any operating system.
Work-in-progress software for managing the Azeron keypad on any operating system.

azeron-cli A small, unfinished CLI application intended to manage the Azeron Cyborg. The code is still in a very messy state and doesn't look very rus

Comments
  • Database

    Database

    Remove json and replace it with a sqlite database using Diesel. Create, Read and Delete works. Only thing left to do is Update(with ui etc).

    Why am I doing a pull request when I can just merge this directly in my terminal?

    Sometimes you gotta confuse yourself to stay sharp

    opened by Ay-can 1
Owner
null
🛜 TUI for managing bluetooth devices

TUI for managing bluetooth devices ?? Prerequisites A Linux based OS with bluez installed. ?? Installation ?? Binary release You can download the pre-

BADR 99 Mar 24, 2024
A template for bootstrapping a Rust TUI application with tui-rs & crossterm

rust-tui-template A template for bootstrapping a Rust TUI application with tui-rs & crossterm. tui-rs The library is based on the principle of immedia

Orhun Parmaksız 72 Dec 31, 2022
Command-line tool designed to simplify the process of managing multiple .NET SDK versions on your system

.NET Version Manager (dver) Overview dver is a command-line tool designed to simplify the process of managing multiple .NET SDK versions on your syste

Sergio Triana Escobedo 5 Aug 23, 2024
FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config.

Connect quickly to your services ?? FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config. Instal

Julien 85 Dec 14, 2022
An utility application to help managing your C++ OI workspaces.

oi_helper oi_helper is an utility application to help managing your C++ OI workspaces. Why oi_helper We all know that we often need a project manager

27Onion Nebell 11 Aug 24, 2022
A minimalist tool for managing block-lists from the terminal.

Block List A minimalist hosts-based tool for managing block lists and ad-blocking. This project uses the excellent and regularly updated Unified Hosts

Oliver Brotchie 7 Aug 14, 2022
Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

Rafael Delboni 7 Nov 20, 2022
A fast and robust MLOps tool for managing data and pipelines

xvc A Fast and Robust MLOps Swiss-Army Knife in Rust ⌛ When to use xvc? Machine Learning Engineers: When you manage large quantities of unstructured d

Emre Sahin 6 Dec 15, 2022
A Modern And Secure CLI Tool For Managing Environment Variables

Envio is a command-line tool that simplifies the management of environment variables across multiple profiles. It allows users to easily switch between different configurations and apply them to their current environment

Humble Penguin 536 Apr 16, 2023
A cli prepared with TUI that facilitates your operations.

⚠️ For linux only ⚠️ Helper CLI A cli prepared with TUI that facilitates your operations. Click me to learn more about the theme system. If you just w

Yiğit 4 Feb 1, 2022