Attempt at a book and maybe more cataloging web application
  • Elixir 82.5%
  • HTML 15.5%
  • JavaScript 0.8%
  • CSS 0.5%
  • Dockerfile 0.4%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jeremy Knope 1f1a3ad731
All checks were successful
CI / test (push) Successful in 45s
Release / build (linux/arm64, linux/arm64) (push) Successful in 56s
Release / build (linux/amd64, linux/amd64) (push) Successful in 1m13s
Release / merge (push) Successful in 9s
chore(release): v0.6.1
2026-10-18 14:50:36 -04:00
.forgejo/workflows feat: ebook libraries, scanning, matching and downloads (#17) 2026-10-18 17:04:30 +00:00
assets fix: keep autofilled form fields readable in the dark theme (#3) 2026-10-18 15:52:19 +00:00
config fix: make only the very first user admin, add REGISTRATION_ENABLED (#38) 2026-10-18 18:02:34 +00:00
docs feat: ebook libraries, scanning, matching and downloads (#17) 2026-10-18 17:04:30 +00:00
lib fix: let the import upload form submit without job params (#46) 2026-10-18 18:21:37 +00:00
priv fix: make only the very first user admin, add REGISTRATION_ENABLED (#38) 2026-10-18 18:02:34 +00:00
rel/overlays/bin fix: keep secrets out of the logs 2026-10-18 10:47:25 -04:00
scripts build: release script in scripts/release.sh, not inline in mise.toml 2026-10-18 10:57:16 -04:00
test fix: let the import upload form submit without job params (#46) 2026-10-18 18:21:37 +00:00
.coveralls.exs feat: ebook libraries, scanning, matching and downloads (#17) 2026-10-18 17:04:30 +00:00
.dockerignore feat: docker configuration 2025-08-17 09:36:39 -04:00
.env.sample fix: make only the very first user admin, add REGISTRATION_ENABLED (#38) 2026-10-18 18:02:34 +00:00
.formatter.exs initial commit, basic book adding & editing 2025-08-08 20:00:22 -04:00
.gitignore feat: ebook libraries, scanning, matching and downloads (#17) 2026-10-18 17:04:30 +00:00
AGENTS.md feat: authentication, some formatting as well 2025-08-09 16:48:48 -04:00
CHANGELOG.md chore(release): v0.6.1 2026-10-18 14:50:36 -04:00
CLAUDE.md fix: dates now ISO strings to allow for just year publication dates, 2025-08-17 20:30:21 -04:00
cliff.toml ci: move to Forgejo and git-cliff, matching rm-analyzer 2026-10-18 10:31:32 -04:00
docker-compose.yaml Update PostgreSQL healthcheck command and user 2025-12-20 20:32:13 +01:00
Dockerfile fix(docker): cap ERL_MAX_PORTS so idle memory stays low on hosts with unlimited nofile (#48) 2026-10-18 18:49:35 +00:00
LICENSE Add MIT license 2025-08-17 10:18:24 -04:00
mise.local.sample.toml chore: add sample mise local config with env 2025-08-15 13:29:57 -04:00
mise.toml build: release script in scripts/release.sh, not inline in mise.toml 2026-10-18 10:57:16 -04:00
mix.exs chore(release): v0.6.1 2026-10-18 14:50:36 -04:00
mix.lock fix: imports actually import books (#30) 2026-10-18 17:07:28 +00:00
README.md fix(docker): cap ERL_MAX_PORTS so idle memory stays low on hosts with unlimited nofile (#48) 2026-10-18 18:49:35 +00:00

FuzzyCatalog

About

A book catalogging application that allows you to keep track of the books you own, both digital and physical.

screenshot of fuzzy catalog book list page

Under Development

This is still pretty heavily under development, but closing in on something I think I can personally use. I hope it may be useful to others who were looking for something to catalog their physical books & more with. Hopefully more to come!

Features

  • Barcode scanning of physical books via keyboard input scanners (webcam one may still work but have not had much luck with it)
  • Ability to sync with digital libraries, currently from Audiobookshelf (via API), Calibre (via actual path to library files), & BookLore via API
  • Adding books via title or ISBN pulls metadata from Open Library or Google Books (Library of Congress available but not sure it's worth using)
  • Ebook libraries: point it at folders of EPUB, PDF, MOBI/AZW/AZW3 & CBZ files (Calibre libraries included) and it reads their metadata and covers, links them to books in the catalog, and lets you download them. Set up in Admin → Libraries; folders can be watched for changes or scanned on a schedule

Environment Setup

Env Usage
DATABASE_URL REQUIRED postgres database URL, i.e.: ecto://user:password@host:port/database
SECRET_KEY_BASE REQUIRED random secret
PHX_HOST domain to use (i.e. localhost)
PORT port to use, default is 4000
ERL_MAX_PORTS Max open ports/files for the BEAM. The Docker image sets 65536 so hosts with an unlimited ulimit -n don't use ~2 GB of RAM at idle; raise it if you need more
AUDIOBOOKSHELF_URL URL to an instance of Audiobookshelf for syncing
AUDIOBOOKSHELF_API_KEY API key for Audiobookshelf
AUDIOBOOKSHELF_LIBRARIES Comma separated list of library names to sync from Audiobookshelf
CALIBRE_LIBRARY_PATH Path to Calibre library files, including ebooks & metadata.db file
BOOKLORE_URL URL for a BookLore instance to sync with
BOOKLORE_USERNAME Username for a BookLore
BOOKLORE_PASSWORD Password for BookLore

Possible TODO

  • Expose mail sending configuration (Swoosh settings) to ENV
  • Support for other digital libraries like Kavita, Calibre-Web (OPDS), and more
  • OPDS feed for ebook libraries
  • Explore adding support for other physical items like movies or games

Local Dev

To start your Phoenix server:

  • Install poppler-utils (pdfinfo and pdftoppm) for PDF metadata and covers, and on Linux inotify-tools for watching ebook libraries
  • Run mix setup to install and setup dependencies
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more