/myshelf

Book management CLI tool

Primary LanguagePHP

Myshelf

Myshelf is a CLI book management software written in PHP.

It is based on Laravel Zero and SleekDB.

It's still in development. There's no stable release, yet.

Motivation

I don't like graphical applications and didn't find any satisfying software for managing my books.

Requirements

I use Linux, so I don't know if it works with Windows.

Installation

git clone https://github.com/stefanszymanski/myshelf.git
cd myshelf
composer install

Usage

Change to the project directory and type ./myshelf to see a list of available commands.

A description of each command is available via ./myshelf [command] --help.

Supported query fields and filters of the list command ./myshelf ls [table] is available via ./myshelf desc [table].

Features

  • Store data as json files (using SleekDB)
  • Manage records
    • Add
      • via TUI
      • via CLI
    • Edit
      • via TUI
      • via CLI
    • List
      • query specific fields
      • query fields from referred records (e.g. the last name of the referred author of a book)
      • sorting
      • filters
      • grouping
      • limit and offset
      • different output formats (currently only fancy tables)
    • Delete (wip)
    • Display a single record (wip)
    • Display availabe query fields and filters for the list command (wip)
    • Display references between records
  • Datatypes
    • Persons (name, nationality)
    • Publishers
    • Books
      • Basic fields: title, publishing date, ISBN
      • Associated persons: authors, editors, illustrators, translators
      • Associated publisher
      • Binding (e.g. hardcover, paperback)
      • Acquiration data: date, vendor/person, condition
      • Type of content (e.g. novel, nonfiction, drama etc)
      • Multiple contents (e.g. anthologies with multiple novels from different authors)
    • Book lists (e.g. for grouping volumes of complete works)
    • Activity Log (e.g. for tracking lent books, or keeping a reading list)
    • Tagging / Keywords (maybe)
  • User configuration (e.g. data storage directory, disabling specific features)
  • Data schema versioning to allow automatic and reliable updates of records when data types change
  • ISBN barcode scanning via webcam (using Zbar)
  • Retrieval of book data via ISBN using web services
  • Git integration for versioning the data
  • Autocompletion for bash and zsh
  • Localization (meh...)

Screenshots

List command Editing TUI