Mantium is a cross-site manga tracker, which means that you can track manga from multiple source sites, like Mangadex and ComicK. Mantium doesn't download the chapter images; it downloads the manga metadata (name, URL, cover, etc.) and chapter metadata (number, name, URL) from the source site and shows them in a dashboard and iFrame to put in your dashboard service.
The basic workflow is:
By default, the dashboard shows the mangas with unread chapters first, ordering by the last released chapter. Unread manga names have an animation effect that changes the name color to catch your attention.
You can add a manga to Mantium using the manga URL or by searching it by name in Mantium:
Using the Manga URL | Searching by Name |
---|---|
Mantium also has an endpoint that returns an iFrame. It's a minimalist version of the dashboard, showing only mangas with unread chapters with status reading or completed. You can add it to a dashboard, for example. More about the iframe here.
A Multimanga is like a container for multiple mangas. When you add a manga to Mantium, it creates a multimanga and adds the manga to the multimanga. You actually never interact with the manga, only the multimanga. But why?
The multimanga feature solves the issue of when you want to track the same manga in multiple source sites so that you are notified whenever a new chapter is released as soon as possible in whatever source. You could add the same manga for each source, but they would act as completely different mangas. Each one would appear on a card in the dashboard/iframe, you would need to set the last read chapter for each of them and be notified of new chapters from each of them.
The multimanga feature solves this issue. With it, you add the same manga from multiple sources to the same multimanga and interact only with the multimanga. No multiple notifications or setting the last read chapter for all of them, you just set the multimanga last read chapter, and only one card will appear in the dashboard/iframe!
A multimanga always has a manga called current manga, which is one of the multimanga's mangas. The dashboard/iframe shows the current manga's name, cover image, and last released chapter. When you select the last read chapter, the list of the current manga chapters is shown. When you're notified of a new chapter, the newest chapter of the current manga is sent in the notification.
Based on the mangas' last released chapter, Mantium tries to set the current manga to the manga with the newest released chapter by using the following rules. Take for example a multimanga with two mangas, Mantium will compare the mangas' last released chapter this way:
Mantium decides which manga should be the current manga whenever you add/remove a manga from a multimanga and in the periodic job that updates the mangas in the background.
The images below show the popup that appears when you click the "Highlight" button of one of the mangas in the dashboard. It shows a form to delete the multimanga, update its status, last read chapter, and cover image, add mangas to the multimanga by searching by name or using an URL, and manage the multimanga's mangas.
Edit Multimanga | Edit Multimanga Cover Image | Manage Multimanga Mangas |
---|---|---|
Mantium allows you to add mangas, manhwa, light novels, etc. that aren't from one of the supported source sites. You must manually track these manga, providing info about them like name, URL, cover image, etc. You can also provide the next chapter you should read from the manga, and update it every time you read a chapter.
When you read the last available chapter from a custom manga, check the "No more chapters available" checkbox so the manga is considered read instead of unread.
Mantium can periodically get the metadata of the mangas you're tracking from their source sites (like every 30 minutes). If the manga metadata (like the cover image, name, or last release chapter) changes from the currently stored metadata, Mantium updates it.
You can also set Mantium to notify you when a manga with the status "reading" or "completed" has a newly released chapter.
Mantium has integrations, like:
More about the integrations here.
By default, the API will be available on port 8080
and the dashboard on port 8501
, and they're not accessible by other machines. To access the API and dashboard in other machines, you run the containers in host network mode or behind a reverse proxy.
API_PORT
and DASHBOARD_PORT
.docker-compose.yml
file in this repository. You can clone this repository to use this file or create one yourself..env
file, it should be like the .env.example
file and be in the same directory as the docker-compose.yml
file.docker compose up -d
The steps are at the bottom of this README.
The Mantium API has the endpoint /v1/mangas/iframe
that returns an iFrame. When you add an iFrame to your dashboard, it's >your< web browser that fetches the iFrame from the API and shows it to you, not your dashboard service running on your server. So your browser needs to be able to access the Mantium API.
https://dashboard.domain.com
), you also need to get the iFrame using HTTPS (like https://mantium-api.domain.com
) to add the iFrame to your dashboard. If you try to use HTTP with your HTTPS, your browser will block the iFrame.The iFrame has the following arguments:
api_url
(not optional): The URL of the Mantium API that your browser uses to connect to the API, like https://mantium-api.domain.com
.theme
(optional): The theme of the iFrame. Can be light
or dark
. Defaults to light
.limit
(optional): The number of mangas to show in the iFrame.showBackgroundErrorWarning
(optional): If an error occurs in the background, a warning will appear on the iFrame. Defaults to true
.Example: https://mantium-api.domain.com/v1/mangas/iframe?api_url=http://mantium-api.domain.com&theme=dark&limit=5&showBackgroundErrorWarning=false
The dashboard and the API don't have any authentication system, so anyone who can access the dashboard or the API can do whatever they want. You can add an authentication portal like Authelia or Authentik in front of the dashboard to protect it and don't expose the API at all.
The API docs are under the path /v1/swagger/index.html
.
Only the first and last chapters are available on the Manga Plus site, so most chapters do not show on Mantium. I recommend reading the manga in the other source sites and when you get to the last chapter, remove the manga and add it again from the Manga Plus source.
The Manga Updates source is very different from the other sources:
Sometimes the source sites can be down for some time, like in maintenance. In these cases, there is nothing Mantium can do about it, and all interactions with manga from these source sites will fail.
If a manga is removed from the source site (like Mangedex) or its URL changes, the API will not be able to track it, as it saves the manga URL on the database when you add the manga in the dashboard and continues to use this URL forever. If this happens, the dashboard/API logs will show an error like this:
{"message":"(comick.io) Error while getting manga with URL 'https://comick.io/comic/witch-hat-atelier' chapters from source: Error while getting chapters metadata: Error while making 'GET' request: Non-200 status code -\u003e (404). Body: {\"statusCode\":404,\"message\":\"Not Found\"}"}
To fix this, delete the manga and add it again from another source site or use its new URL.
Sometimes the URL of a source site changes (like comick.fun to comick.io). In this case, please open an issue if a new release with the updated URL is not released yet.
docker-compose.yml
file with the database service (Docker
and Docker Compose
are required):services:
mantium-db:
container_name: mantium-db
image: postgres:16-alpine
volumes:
- ./data/postgres-vol:/var/lib/postgresql/data
environment:
- POSTGRES_PORT=5432
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- 5432:5432
restart: unless-stopped
docker compose up -d
.env.example
file.export POSTGRES_HOST=http://localhost
export POSTGRES_PORT=5432
export POSTGRES_DB=postgres
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=postgres
export API_PORT=8080
api/
folder, install the API dependencies:go mod download
go run main.go
http://localhost:8080
. If the API is running in a different address, export the API address environment variable:export API_ADDRESS=http://localhost:8081
dashboard/
folder, install the dashboard dependencies:pip install -r requirements.txt
Currently, there is an issue with one of the dashboard dependencies, refer to this guide explaining more about it.
Start the dashboard:
streamlit run 01_📖_Dashboard.py
http://localhost:8501