Underline is an open-source epub reader, built as a progressive web app (PWA). It connects with the Dropbox API to manage .epub files.
I built Underline for two reasons:
- I wanted to build my first PWA
- I wanted to make an open-source ebook reader
I used React to build the UI, Redux for state management, and Sagas to handle data fetching and updating from Dropbox. IndexedDB was used to save the app's data client-side - each parsed .epub is actually stored on the user’s device so it can be read offline. I used epub.js to parse the .epub files. Because of feature support, the app works best on Android devices.
I have a habit of coming up with side projects that turn out to be a lot more work than I initially thought they would be, and this was no exception. Making a performant ebook reader with web technologies was hard - and I wouldn’t say I succeeded.
When I started this project, I wanted to believe that mobile web apps could pretty much compete with native mobile apps, and this changed my mind. I think they can in some cases, but it’s just not 100% there yet (as of 2019).
Overall though, I came out excited about making web apps for mobile - it’s pretty amazing what’s possible in a (mobile) browser these days - apps can work offline, data/files can be stored on the device, you can send notifications, etc. I'm definitely looking forward to building more mobile web apps in the future.