Coder Social home page Coder Social logo

jshwrner / jelu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bayang/jelu

0.0 0.0 0.0 6 MB

Self hosted read and to-read list book tracker

License: MIT License

Shell 0.17% JavaScript 0.41% Java 0.43% Kotlin 51.19% TypeScript 11.33% CSS 0.76% HTML 0.08% Vue 35.40% Dockerfile 0.21%

jelu's Introduction

JELU

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

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

  • track read books so you don't have to remember everything, and view your history (by year and month)
  • manage to-read list
  • Import history (from goodreads via csv export or a file with a list of ISBNs, one by line)
  • Export your data in a csv file
  • 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
  • You can use tags to create custom shelves
  • 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
  • Provide some stats about your readings
  • Multi user support
  • provides an API
  • Write reviews and share them, see the reviews of other users on your instance
  • Fallback metadata providers (see official doc for configuration)

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:
      - ~/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

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 :

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

Translations

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

Contributions :

  • Czech translation : @filcuk, @ondrejk
  • Danish translation : @SirBogner
  • German translation : @puckzuck
  • Polish translation: @Sebastian Jasiński (PrinceNorris)

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

jelu's People

Contributors

bayang avatar semantic-release-bot avatar quinncuatro avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.