Self-hosted manga, comic, and novel library manager with a built-in reader and metadata fetcher.
- Library management: Organize Manga, Comics, Novels and Webtoons
- CBZ/ZIP/CBR/PDF/EPUB support: Read all major comic formats
- Web reader: LTR, RTL, vertical scrolling, and webtoon modes
- Metadata fetching: AniList, MangaDex, and more (via provider plugins)
- OPDS v1: Sync with e-readers (Moon+, KOReader)
- KOReader sync: Native two-way progress sync
- Multi-user: Role-based access (admin/user)
- Download engine: Fetch from manga sources (planning)
- PWA: Install as a standalone app on mobile/desktop
- Backend: Kotlin 2.1, Ktor 3, SQLite (Exposed + Flyway)
- Frontend: React 19, Tailwind CSS 3, Vite 6, shadcn/ui
- Build: Gradle 8.12, JDK 21, Docker
Requires JDK 21 and Node 20 installed.
# Clone
git clone https://github.com/iCosiSenpai/KometaManga.git
cd KometaManga
# Build backend
./gradlew :api:shadowJar
# Build frontend
cd frontend && npm install && npm run build && cd ..
# Run
java -jar api/build/libs/api-all.jarThe server starts on http://localhost:8085.
docker compose up -dAccess at http://localhost:8085.
| Method | Path | Description |
|---|---|---|
| POST | /api/auth/login |
Login |
| POST | /api/auth/register |
Register |
| GET | /api/libraries |
List libraries |
| POST | /api/libraries |
Create library |
| GET | /api/libraries/{id}/series |
Browse series |
| GET | /api/books/{id}/pages/{n} |
Read page image |
| GET | /api/books/{id}/progress |
Get reading progress |
| POST | /api/books/{id}/progress |
Save progress |
| GET | /opds/v1 |
OPDS root catalog |
Create config/application.yml on first run:
server:
port: 8085
auth:
secret: change-me-in-production
database:
url: jdbc:sqlite:./kometamanga.dbMIT