6 months ago I posted here about Kavita, an open source application that I have been working on that aims to be Plex for reading, and in these past 6 months I've yet again delivered so much that it warrants an update to this subreddit.
Last Post: https://www.reddit.com/r/selfhosted/comments/139te6y/kavita_plex_for_reading_an_update/
What is Kavita?
Kavita is a fast all-in-one reading server which supports comics, manga, and books out of the box, making it easy to share your entire collection with friends and family. Kavita supports a wide range of formats (including epub and pdf), has responsive built-in readers, and offers OPDS-PS support for external reader support.
What's new in the last 6 months:
- Automatic Collections/Reading Lists: Kavita now can build out Collections and Reading lists from ComicInfo.xml and Epub's OPF formats. Configurable in your library settings if you want disabled.
- Kavita+: A subscription service (to support me) that expands Kavita's ability into external metadata. Unlocks Scrobbling to AniList, External Ratings, External Reviews, Recommendations (and even recs that you don't own).
- Personal Bookmarks: The ability to bookmark any text in an epub and quickly jump back to it. Great for cookbooks where you want to save your favorite recipies.
- Localization: Full localization support via Weblate with quite a few fully translated languages
- In Depth Metadata Filter: Completely rewrote the metadata filter to allow ANDing and ORing with a crazy number of potential fields to query against then the ability to save these as Smart Filters, which can be found to Side nav or Dashboard.
- Customization: All users can now customize their side navs and dashboard and bind Smart Filters (aka Metadata Filter query saved) to either, turn on/off any item and reorder them.
- OPDS Rework: Tons of OPDS Polish to make the experience top notch and pushing as much metadata as possible to the user in a way that works in as many apps as possible. Lots of extra flattening as well (a big critique on Kavita's implementation)
- A ton more (just look at the release notes from here)
If you want to check it out for yourself, we have a demo available on our site:
I love Kavita, I just wish it had an Android app for page synchronization
On android, CDisplayEX can be used to sync read progress and it has direct API access to kavita. It doesn't use OPDS. You'll have to get the pro version of it to hook up to external sources though.
Seems like you're not reading my release notes because a mobile app is something I'm looking at building for Kavita.
Although CDisplayEx does have this out of the box if you buy it (I believe it's a one time)
I did read the notes actually, after going back now there is 1 brief mention of it so you'll have to excuse me for missing that. Just to reiterate, I don't read comic books or manga so I'm not going to buy a cbr reader to read my books.
That was a joke btw about the notes as most people don't read them and they are usually notoriously long.
Yeah, there really aren't any book readers that support page synchronization, like at all. It could be due to not many projects existing or because epubs are quite complicated and with virtual paging, it can be very difficult to store progress back that would be beneficial to the user.
I think most users either download them or realistically save the web app to their homescreen and use the built-in reader, which is pretty good.
lmao I actually did read the notes first before I commented, funnily enough. Thanks for the reply and thank you so much for Kavita. I'm sure the mobile app is brought up constantly to you and is a source of friction. Have a great weekend!
Haha, you'd be surprised, it's not brought up that much. It's more about me wanting to build something that has A+ support on sync and fits within the UX I like.
Moon+ reader supports it, I can sync from my phone to tablet. It uses Google drive to handle it.
But only with itself. It doesn't sync the state to e.g. a Calibre library, which is what I've always wanted.
Oh, and the state tracking is filename dependent if memory serves.