Houdoku is a manga reader and library manager for the desktop.
- Supports popular manga aggregators, including MangaDex, MangaHere, and more (see houdoku-plugins).
- Customizable reader interface with optional dark/night mode.
- Tagging and filtering support to easily browse and manage large libraries.
Download Houdoku from the releases page.
For Windows users, a native .exe is provided. Users on other operating systems should download the .jar. Both options require a sufficient Java installation with JRE version 8 or later.
The client can typically be run by simply double clicking the file. Alternatively, you may start the client via the command line:
$ java -jar houdoku-x.y.z.jar
Support for 3rd party content sources (manga aggregators) is available via a plugin interface. You may install and update plugins by going to File->Settings->Plugins in the client.
For more information, and for an index of available plugins, see the houdoku-plugins repository.
Running Houdoku requires Java (JRE) 8 or later.
The project makes use of the following 3rd-party libraries, which are bundled with the application:
- JSoup 1.11.3 -- Parse HTML documents
- OkHttp3 3.10.0 -- Make HTTP requests
- Gson 2.8.4 -- Object serialization
- AppDirs 1.0.1 -- Determine OS-specific data directories
- slf4j-simple (SimpleLogger) 1.7.25 -- Logging
- JUnit 4.12 -- Unit testing
- Mockito 2.19.1 -- Mocks for unit testing
Libraries are downloaded from the Maven Central Repository -- see this project's pom.xml.
This project uses Maven for building and testing. Running unit tests is easy:
$ mvn test
To compile the executable JAR, use
mvn package. The Houdoku artifact will be in
./out/artifacts. This command may be useful for building & running the client (note the
$ mvn package [-DskipTests] && \ java -jar ./out/artifacts/houdoku/Houdoku-*.jar
Connecting to external clients
Developers who want to test support for some 3rd-party services, such as the AniList API, will need to register external clients. Houdoku can run without enabling these services, but functionality may be limited.
Credentials are stored in a properties file. See the secret.properties template for instructions on creating credentials for each external client.