Self hosted read and to-read list book tracker

Last update: May 22, 2022

JELU

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

Official documentation

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.

Also I wanted control on my data, so 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 my data is now located into a single-file database which can be saved anywhere.

Features

  • track read books so you don't have to remember everything
  • manage to-read list
  • Import history (from goodreads for now, via csv export)
  • Import single books manually or automatically via online search (through title, authors or isbn)
  • Mark books as currently reading, finished or dropped
  • Books can be tagged and a tag page can display all books with that tag
  • Links to third party providers are fetched online (google books, amazon, goodreads, librarythings) or computed from those providers id you could enter manually.
  • Author page with author detail and books from this author
  • Auto import author details from wikipedia
  • Auto merge authors (to fix duplicates resulting from automatic imports for example)
  • Provide embed code snippets so that books can be tracked in other sites, blogs or even markdown notes/journal

Usage

  • Import your existing history if you have a Goodreads account
  • Start recording your read books
  • Add books you want to read
  • Edit tags, books, import and change covers (either from a file on disk or from a url) ...

Installation

Java

  • download the java Jar from the releases section in a dedicated folder
  • go to this folder
  • start the jar (it is a spring fat jar so dependencies are included) : eg java -jar jelu-0.13.0.jar
  • If you want to tweak the default config (see src/main/resources/application.yml), just create a yaml file called application.yml in the same foler as the jar.

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-metada 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:
      - type: bind
        source: ~/jelu/config
        target: /config
      - type: bind
        source: ~/jelu/database
        target: /database
      - type: bind
        source: ~/jelu/files
        target: /files
      - type: bind
        source: /etc/timezone
        target: /etc/timezone
        read_only: true
    ports:
      - 11111:11111
    user: "1000:1000"
    environment:
      - MYENV=test
    restart: unless-stopped

!!!! WARNING : ARM versions are built but have not been tested yet !

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 :

Roadmap

  • Koreader integration (https://koreader.rocks/)
  • Komga integration (https://komga.org/)
  • Calibre integration (A bit less likely, but why not)
  • Isbn scanning via camera on mobile
  • Social features
    • possibility to 'follow' another user on another instance ?
    • public RSS feed of reading events
  • Storygraph csv import

GitHub

https://github.com/bayang/jelu
Comments
  • 1. Page does not work via reverse proxy + vivaldi

    Hi, in my first attempt to get this running in docker I get a db error and the container loops.

    I pre-created the volumes and set everything according to the compose example. I think there's some steps im missing

    Reviewed by kavemang at 2022-04-24 18:27
  • 2. Add book auto Fill doesn't work

    I've just spun up an instance of Jelu using the exact docker-compose example file, on a Raspberry Pi 4 (ARM64). I've not used bind mounts before (I normally use volumes: - "./config:/config" , etc) and it was a bit odd having to manually create all the folders manually one at a time on my file system. I tried the way I normally do it but it had permissions errors for the database when I did that, which is a bit unusual as docker created the folders when doing it that way.

    Anyway, to get to my issue, when I go to Add Book, then click Auto Fill, I search for something (say Harry Potter for the title) and it shows me words that say "cover image" (not an actual cover image). Inspecting the page I see it is trying to show the image "/files/null" There are no details retrieved for the book. I've tried a bunch of different books that should exist but no luck on any.

    Reviewed by Neriderc at 2022-05-18 10:37
  • 3. feature request: audiobookshelf and kavita integration

    It would be awesome if this could talk to kavita (https://www.kavitareader.com/) and audiobookshelf (https://www.audiobookshelf.org/) to add their libraries (ideally with recognizing duplicates across them) and to keep track of what is read and not read in each to add to read/not read in this app.

    Reviewed by zombiehoffa at 2022-05-16 18:40
  • 4. fetch cover do not work

    Hi and thanks for this app

    Unfortunately It doesn't fetch the cover from most of the books I add (auto fill):

    Whitelabel Error Page

    This application has no explicit mapping for /error, so you are seeing this as a fallback.

    Sun May 15 15:44:39 UTC 2022

    There was an unexpected error (type=Not Found, status=404)

    debug: 2022-05-16 16:17:37.718 DEBUG 1 --- [io-11111-exec-8] i.g.b.j.s.metadata.FetchMetadataService : parsed dto MetadataDto(title=Das Sissi-Feuerwerk: Ein Ischl-Krimi, isbn10=null, isbn13=9783492502504, summary=null, image=null, publisher=Piper, pageCount=null, publishedDate=2019-05-15T16:17:35.252073+00:00, authors=[Jenna Theiss], tags=[], series=null, numberInSeries=null, language=deu, googleId=9qp-wgEACAAJ, amazonId=null, goodreadsId=null)

    Are there optional settings to fix or improve this?

    Reviewed by Famku at 2022-05-16 16:45
  • 5. Errors importing books

    Hi! I tried importing a goodreads export and ran into some issues. It errors out on a great number of isbns, not sure why. The error message doesn't inform me much into what I could do to fix this issue. I'm attaching a goodreads export and my log (I killed the process after the errors were repetitive). log.txt goodreads_library_export.csv

    Reviewed by mattkatz at 2022-05-06 19:45
  • 6. Goodreads import creates duplicate events for some books

    Hi, I'm finding that the recent reading event list duplicates 3 of the recent books, not sure whats causing it just yet (I havent figured out why im getting "no mapping for GET" in vivaldi yet, I disabled extensions that I thought might be causing it like privacy badger and ublock origin)

    Capture

    Reviewed by kavemang at 2022-04-29 17:56
An Android-based Cellebrite UFED self-defense application

A proof-of-concept Android application to detect and defeat some of the Cellebrite UFED forensic toolkit extraction techniques.

May 24, 2022
Todo List Application is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item
Todo List Application is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item

Todo List Application is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item

Jan 22, 2022
An Android app that lets you download free children's books in different languages from non-profit publisher Book Dash
An Android app that lets you download free children's books in different languages from non-profit publisher Book Dash

Bookdash Android Check out the blog post here: http://riggaroo.co.za/book-dash-android-app/ Download the app: https://play.google.com/store/apps/detai

May 18, 2022
Companion App for the book
Companion App for the book

Kotlin for Android Developers (the book) This is the code you can use to follow the book. https://antonioleiva.com/kotlin-android-developers-book/ Are

May 23, 2022
Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.
Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Apr 23, 2022
Coinbase-pro-feed-kotlin - Kotlin Coinbase Pro Level 2 Order Book Feed
Coinbase-pro-feed-kotlin - Kotlin Coinbase Pro Level 2 Order Book Feed

Kotlin Coinbase Pro Level 2 Order Book Feed Quick start Depending on your OS run

Jan 2, 2022
Bookly -Library Book Management App

Android-Study-Jams Bookly -Library Book Management App Problem Statement: University libraries have a very vast collection of books from which student

Feb 24, 2022
BabyBook - Android Mobile application about keeping a baby book

BabyBook Android Mobile application about keeping a baby book Used Tech Language

Jan 27, 2022
CoolReader 3 - cross platform open source e-book reader

CoolReader 3 - cross platform open source e-book reader (c) Vadim Lopatin, 1998-2018 Development is moved to GitHub https://github.com/buggins/coo

Apr 29, 2022
This project consists in the approach of a bakery business, in which the user can book one or more products (cakes), in addition to having the method of payment in cash (post-shipment) or the method of payment via mobile

This project consists in the approach of a bakery business, in which the user can book one or more products (cakes), in addition to having the method of payment in cash (post-shipment) or the method of payment via mobile

Apr 23, 2022
Book selling application with MVVM (Model, View, ViewModel)
Book selling application with MVVM (Model, View, ViewModel)

Book selling application with MVVM (Model, View, ViewModel), LiveData, DataBinding, Retrofit, Room Database, Navigation Component(NavGraph, BottomNav), ViewPager2 in TabLayout, SearchView, Vertical Adapter(BestSellers) and Horizontal Adapter(All Books) with ConcatAdapter for Main Screen, Firebase Auth, SearchView in Adapter, Picasso, Lottie, Animated Svg for Splash

May 11, 2022
Android-TODO-LIST-VIPER - Android TODO LIST VIPER
Android-TODO-LIST-VIPER - Android TODO LIST VIPER

Android TODO List VIPER VIPER is an architectural approach for iOS mobile app de

Jan 19, 2022
NimTome is a Free and open-source spell tracker application for Dungeons and Dragons

Nimtome: An open source application to manage all your spells in D&D About This project came to life as a homework assignment, but it became a lot bit

Jan 11, 2022
Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits

Loop is a mobile app that helps you create and maintain good habits, allowing you to achieve your long-term goals. Detailed graphs and statistics show you how your habits improved over time.

May 23, 2022
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.

Episodie Episodie is a TV show time tracker app with unusual design. Get to know how much time you spent watching tv shows. Track easily overall progr

May 17, 2022
DNS over HTTPS / DNS over Tor / DNSCrypt client, firewall, and connection tracker for Android.

RethinkDNS + Firewall for Android An OpenSnitch-inspired firewall and network monitor + a pi-hole-inspired DNS over HTTPS client with blocklists. In o

May 19, 2022
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.

?? About Me I am a self-thaught developer learning web and android development. This app is just a trial to test and improve my android development sk

Apr 27, 2022
Google map location tracker uploading current to realtime database and displaying location information from firebase realtime.

WEEK-8-SQ009-ANDROID LOCATION - GROUP WORK (2) Problem Description Track your partner(s). Implementation 1: You are to build a map application to show

Mar 16, 2022
Open source Crypto Currency Tracker Android App made fully in Kotlin
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

May 11, 2022