OPDS-PSE
Simply put, the Open Publication Distribution System is in a sorry state. Much like other XML standards like RSS, it has fallen into almost complete obscurity. There have been some efforts to revitalize it, like the Page Streaming Extension, PSE.
Alas, the ability to use these standards has gotten worse over time. The only options for OPDS servers are massive clunky organization systems. As for the clients, there are still a few out there, but they are dwindling.
Things are even worse for comics and manga. Regular books just store text. For graphic media, things are very different. Images are not very compressible without discarding quality.
This is where I come in with go-opds-pse. Not a great name, I need something better. Bad name aside, it's a very simple program. Give it a folder of .CBZ files, and it will give you a nice OPDS feed.
While that is a step in the right direction, it's still not ideal. If you wanted to have a full digital collection of the entire One Piece manga, even assuming you don't care about quality and use JPGs with a 10:1 compression, that is around 25 GB of manga.
That's a lot of space for a tablet.
Enter PSE. The Page Streaming Extension lets you request a single page at a time meaning you can keep your collection on a machine with tons of cheap storage, while reading on a portable device.
Support for PSE though is pathetic.
That is why I made go-opds-pse. It was inspired by dir2opds which worked wonderfully, but had zero support for PSE. However, this only solves half the problem. Now we have a nice and simple program to serve an OPDS feed, with PSE, but no way to view it.
There are very few clients that support PSE. Only one on iOS supports it, Panels. As for Android, Linux, Windows, and macOS, there are zero clients that support PSE. Not. Even. One.
So, that is the second half of this. A viewer for OPDS-PSE. Probably written as a web app. Not ideal, I hate always going to a web app for client side UI, but writing cross-platform native UIs is so complicated.
After all, this app just needs to send HTTP requests, deserialize XML, and display an image. Sounds like a job for a client-side Vue app.