Iridium is an open-source multiplatform e-reader Software Development Kit developed with Dart and Flutter by Mantano.
Iridium keeps the platform-specific code to the bare minimum (zero for now, in fact...). Hence, it does provide a really unified codebase. Until now, only the precompiled LCP DRM native library is specific to each platform, and is provided in binary form by Edrlab that simply must be dropped into the source tree.
- Android 6 Marshmallow and later
- iOS 15 and later
- macOS 10.14 Mojave and later - experimental
- EPUB 2.x and 3.x support
- WebPub support (thanks to Morten Sjøgren, Nota
- Audiobook support
- PDF support
- Readium LCP support (not in demo app yet)
- CBZ support (not in demo app yet)
- Custom styles
- Night & sepia modes
- Pagination
- Scrolling
- Table of contents
- OPDS 1.x and 2.0 support
- FXL support
- RTL support
- Search in EPUB
- Highlights/annotations
- TTS
- EPUB 3 Media Overlays
- Divina support
Pre-built versions of the Iridium Demo App are available:
- For Android: Beta on Play Store
- For iOS: IPA here
Note: The Iridium Demo App is based on the excellent Jideguru's Flutter Ebook App.
git clone https://github.com/Mantano/iridium.git
cd iridium/demo-app
flutter devices <-- Pick a device id in the list (in the 2nd column)
flutter run -d <device_id>
If you see the following error message:
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
apply the fix mentioned in this post.
- File / New / From Version Control (https://github.com/Mantano/iridium.git)
- Run the project in the
demo-app
subdirectory
Iridium is currently developed and tested on Android and iOS first, but large parts of the code should be reusable for desktop and web apps. Such desktop and web versions are not currently on the roadmap, but will be considered if we can collect external funding or aggregate external contributors.
This SDK provides open-source unofficial Dart/Flutter ports of Readium 2 (R2) components1, following the Readium 2 architecture:
Name | Usage |
---|---|
shared | Shared Publication models and utilities |
streamer | Publication parsers |
server | Local HTTP server |
navigator_flutter | Navigator |
opds | Parsers for OPDS catalog feeds |
commons | Other misc. utilities (specific to this Flutter port, not found in Readium) |
lcp | Service and models for Readium LCP |
Beyond these Readium 2 inspired modules, Iridium provides 2 conveniences:
Name | Usage |
---|---|
iridium_reader_widget | Plug and play reader widget |
iridium_demo | A demo app based on JideGuru's Flutter Ebook App |
There are 3 main options, from simplest to most advanced
- Option 1: Fork and tailor the Iridium Demo App
- Option 2: Integrate the iridium_reader_widget into your app
- Option 3: Integrate the Iridium modules the way you want. The iridium_reader_widget source code provides a lot of clues bout the relationships between the Iridium modules, and the workflows required to open and display a book.
Developed in the continuity of Readium 2, Iridium could pave the way to a "unified reference implementation" for Readium, with a unique codebase working across all platforms. However, Iridium is purely a Mantano initiative, and does not reflect any official Readium move towards Dart/Flutter development.
The Readium SDK is funded by public grants and membership fees. Iridium is completely funded and developed by Mantano, which is a private company. As a consequence:
- You can support this work by becoming a sponsor;
- One of the sponsorship tiers gives full access to Iridium's optimized "navigator" component.
Since the purpose is to allow full multiplatform development, these modules aim at being integrated into Dart/Flutter apps. Some of them could probably be integrated into existing apps.
However, packing multiple Flutter libraries into an application isn’t supported by Flutter for now. Integrating multiple modules could be achieved by developing some kind of "super-module", but this has not been tested.
OK... Let's face it, Iridium is brand new. So this list is currently reduced to Mantano's own forthcoming app, but good surprises are on the way ;-)
Iridium is named after the chemical element, which is known for being extremely corrosion-resistant: this reader will stand the test of time 😎
You use this project for professional projects or just like it? Please consider making a donation to help improve it!
1: Readium is a trademark of the Readium Foundation)