librius 0.1.0

A personal library manager CLI written in Rust.
Documentation
# ๐Ÿ“š Librius

[![Build Status](https://github.com/umpire274/librius/actions/workflows/ci.yml/badge.svg)](https://github.com/umpire274/librius/actions)
[![Crates.io](https://img.shields.io/crates/v/librius.svg)](https://crates.io/crates/librius)
[![Docs.rs](https://docs.rs/librius/badge.svg)](https://docs.rs/librius)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Rust Edition](https://img.shields.io/badge/Rust-2024-orange.svg)](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 **TOML** configuration file 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.

---

## โš™๏ธ Features

| Status | Feature              | Description                                                        |
|:------:|:---------------------|:-------------------------------------------------------------------|
|   โœ…    | **List**             | Display all books stored in the local database                     |
|   โœ…    | **Config auto-init** | Creates default `librius.toml` config file in `~/.config/librius/` |
|   ๐Ÿšง   | **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

The default configuration file is stored at:

Linux/macOS:
`~/.config/librius/librius.toml`

Windows:
`%APPDATA%\librius\librius.toml`

Example:

```bash
db_path = "/home/alessandro/.config/librius/librius.db"
```

---

## ๐Ÿ“š 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

---

## ๐Ÿงช 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!

---