# ๐ Librius
[](https://github.com/umpire274/librius/actions)
[](https://docs.rs/librius)
[](LICENSE)
[](https://www.rust-lang.org/)
> **Librius** โ A fast, minimalist CLI to manage your personal book collection, built in Rust.
---
## ๐งพ Overview
**Librius** is a cross-platform **command-line tool** written in Rust that helps you manage your personal library.
It uses a **SQLite** database to store your books and a simple **YAML** configuration file
(`librius.conf`) for flexible setup.
This project aims to provide a clean, modular architecture with future extensions such as search, add/remove commands,
and import/export support.
---
## ๐ฆ Installation
### ๐ง AUR (Arch Linux)
[](https://aur.archlinux.org/packages/librius)
```bash
yay -S librius
# or
paru -S librius
```
### ๐บ Homebrew (macOS/Linux)
[](https://github.com/umpire274/homebrew-tap)
```bash
brew tap umpire274/tap
brew install librius
```
### ๐ฆ Crates.io (Rust)
[](https://crates.io/crates/librius)
```bash
cargo install rtimelogger
```
---
## โ๏ธ Features
| โ
| **List** | Display all books stored in the local database |
| โ
| **Config management** | Manage YAML config via `config --print`, `--init`, `--edit`, and `--editor` |
| โ
| Database migrations | Automatic schema upgrades at startup |
| โ
| Logging system | Records operations and migrations in log table |
| โ
| Verbose mode | Optional --verbose flag for detailed debug output |
| ๐ง | **Add / Remove** | Add or delete books via CLI commands |
| ๐ง | **Search** | Search by title, author, or ISBN |
| ๐ง | **Export / Import** | Export and import data (JSON, CSV) |
---
## ๐๏ธ Architecture
```sh
ibrius/
โโโ Cargo.toml
โโโ src/
โ โโโ main.rs # CLI entry point
โ โโโ config.rs # Configuration management
โ โโโ db.rs # SQLite initialization
โ โโโ models.rs # Data models (Book, etc.)
โ โโโ commands/
โ โโโ list.rs # 'list' command logic
โโโ config/
โ โโโ librius.toml # Default config file
โโโ README.md
```
---
## ๐ Quick start
### 1๏ธโฃ Clone the repository
```bash
git clone https://github.com/umpire274/librius.git
cd librius
```
### 2๏ธโฃ Build and run
```bash
cargo build
cargo run -- list
```
If this is the first launch, Librius will automatically create:
- The config file at `~/.config/librius/librius.toml`
- A SQLite database at `~/.config/librius/librius.db`
---
## ๐งฉ Example output
$ librius list
๐ Your Library
1. The Hobbit (J.R.R. Tolkien) [1937]
2. Foundation (Isaac Asimov) [1951]
3. Dune (Frank Herbert) [1965]
---
## โ๏ธ Configuration
```yaml
# librius.conf
database: "C:/Users/YourName/AppData/Roaming/librius/librius.db"
language_default: "English"
theme: "light"
```
- Configuration file is automatically migrated if fields are missing or renamed.
- Default path:
- macOS/Linux โ $HOME/.librius/librius.conf
- Windows โ %APPDATA%\Roaming\librius\librius.conf
---
## ๐ Documentation
The API and user-facing documentation for Librius is available on docs.rs:
- Online: https://docs.rs/librius
To generate and view the documentation locally run:
```bash
cargo doc --no-deps --open
```
This will build the documentation and open it in your default browser.
---
## ๐งฐ Dependencies
clap โ Command-line argument parsing
rusqlite โ SQLite database
serde โ Serialization/deserialization
toml โ Config format support
colored โ Colored terminal output
---
## ๐๏ธ Database management
Librius automatically checks and upgrades the SQLite database structure at startup.
- On first launch โ creates books table.
- On subsequent launches โ runs pending migrations silently.
- Migration results are recorded in the log table.
### Example table `log`
|1 |2025-10-13T21:45:12+02:00| DB_CREATED |DB| Created new database|
|2 |2025-10-13T21:45:13+02:00| DB_MIGRATION_OK| DB| Schema updated successfully|
---
๐ Verbose mode
Run Librius in diagnostic mode to display all internal initialization steps:
```bash
librius --verbose list
```
Output example:
```bash
๐ Loading configuration...
๐ Opening existing database at: C:\Users\A.Maestri\AppData\Roaming\librius\librius.db
โ
Database schema is up-to-date.
โ
Configuration verified.
๐ Your Library
```
In normal mode, only command output is displayed.
---
## ๐งช Development
### Run in debug mode
```bash
cargo run -- list
```
### Run with logging (future)
```bash
RUST_LOG=debug cargo run -- add "Neuromancer"
```
### Format and lint
```bash
cargo fmt
cargo clippy
```
---
## ๐งฑ Future roadmap
- Add `add`, `remove`, and `search` commands
- Export/import JSON and CSV
- Add optional TUI (Text UI) with `ratatui`
- Multi-language support (English/Italian)
- Web dashboard sync
---
## ๐งโ๐ป Author
Umpire274
GitHub: [@umpire274](https://github.com/umpire274)
---
## ๐ License
This project is licensed under the MIT License โ see the LICENSE
---
## โญ Contribute
Contributions, feature requests, and ideas are welcome!
If youโd like to contribute, please open a pull request or start a discussion.
---
## ๐งก Support
If you enjoy this project, please โญ star the repository โ it helps visibility and development motivation!
---