bayang / jelu

Self hosted read and to-read list book tracker
MIT License
366 stars 14 forks source link
book books booktracker goodreads kotlin librarything reading reading-list self-hosted to-read tracker vue vue3

JELU

GitHub Workflow Status GitHub GitHub release (latest by date) Docker Image Version (tag latest semver) Discord Crowdin

There is a matrix channel available : https://matrix.to/#/#jelu:matrix.org

Check the Official documentation for more detailed information.

Like Jelu or find it useful ? Offer me a coffee ☕

Purpose

This app main purpose is to track what you have read, what you are reading and what you want to read.

It acts as a self hosted "personal Goodreads" because I became tired of switching providers every time an online service was shut.

I also became tired of having to export and reimport my data each time with data loss in the process.

You have control on your data since Jelu offers an API you can script or integrate with any third party tool or service (which you cannot do with the vast majority of other online services).

All your data is now located into a single-file database which can be saved anywhere.

Features

Usage

Installation

Java

For example if you want the database to be located next to the jar file (instead of being located in the default ${user.home}/.jelu/database/ folder) :

jelu:
  database:
    path: .

The automatic metadata online search is provided for the moment through a calibre tool called fetch-ebook-metadata (whether you like it or not).

So if you want to use it with the java install, provide the path to the executable in the config, like so :

jelu:
  metadata:
    calibre:
      path: /usr/bin/fetch-ebook-metadata

If you run into a cors issue, update the config with the desired origins like so :

jelu:
  cors.allowed-origins:
    - https://jelu.myserver.org

Then open the web UI in your web browser at localhost:11111

Concerning Cors, the default is to accept everything, which you might not not want to do.

No config in the config file is equivalent to :

jelu:
  cors.allowed-origins:
    - "*"

Docker

An image is available here :

https://hub.docker.com/repository/docker/wabayang/jelu

This one is the easiest if you are used to it.

The docker image we provide embeds the fetch-ebook-metadata executable to automatically import books based on their title, authors or isbn.

A sample docker compose would look like that :

version: '3.3'
services:
  jelu:
    image: wabayang/jelu
    container_name: jelu
    volumes:
      - ~/jelu/config:/config
      - ~/jelu/database:/database
      - ~/jelu/files/images:/files/images
      - ~/jelu/files/imports:/files/imports
      - /etc/timezone:/etc/timezone:ro
    ports:
      - 11111:11111
    restart: unless-stopped

!!!! WARNING : ARM versions must add this environment variable for automatic metadata fetching : JELU_METADATA_CALIBRE_PATH=/usr/bin/fetch-ebook-metadata

Kubernetes (Helm)

An unofficial Helm-Chart to deploy Jelu to Kubernetes is available here:

https://artifacthub.io/packages/helm/tibuntu/jelu

Screenshots

Home page :

home page

Auto import form (empty) :

Auto import form (filled) :

Auto import form (result preview) :

Auto import form (edit pre-filled results before importing to your account, eg : modify tags etc...) :

Books list :

Book detail page :

Book detail, events part :

Author page :

Embed code and preview :

Review creation :

Translations

You can help with translations : everything is hosted on crowdin https://crowdin.com/project/jelu

Contributions :

(if you should be here or want your name modified just contact me)