Personal project · On my server · 2026
Manga
My own manga reader: shared library, per-person progress and a phone app.
See it live · manga.rossmel.com ↗My role
Everything: setup, redesign with my brand, upload pipeline and file optimization.
Stack
- Kavita
- Docker
- Python
- rsync
- systemd
- CSS
- PWA
- Cloudflare Tunnel
- Linux
The problem
Manga lived scattered across Telegram PDFs and files on the phone, and everyone had to remember which volume they were on. Now it is a library with covers on my server, read in the browser or as an app, and each person has an account with their own progress. Adding a new one is dropping it into a folder on my laptop.
Highlights
- 01Automatic uploads: a Python script watches a folder on my laptop, converts and uploads only what is new, resumes interrupted uploads, can be paused and notifies me on Telegram.
- 02Lossless PDF to CBZ: when every page is a single image, it extracts the original bytes instead of re-encoding (72 of 72 volumes converted this way).
- 03Measured optimization: I compared JPEG, WebP and AVIF at several resolutions on real pages; one series went from 13 GB to 2.7 GB (−79 %) with no visible loss on a phone.
- 04Full redesign with the rOS identity, including the login screen the theme system does not cover, applied in a way that survives updates.
- 05Installable app (PWA) with its own name and icon, and one account per person with their own progress.
What I learned
- → 01Measure before compressing: at 2000 px the manga screentone turned grey when zooming in; at 2400 px it held up with almost the same savings.
- → 02Customize without breaking updates: instead of editing files inside the container, a startup script re-applies the branding every time it starts.
- → 03Design for interruptions from day one: a multi-gigabyte upload over the internet will get cut, so the script had to resume without starting over.
Live
Running on my server
Projects running on my homelab, under my own domain. Open each one to see how it works.
- notebook.rossmel.comNotebookNotes as a chat with yourself, with memory: ask them, search them and study with flashcards. Open source.See details →
- rubik.rossmel.comRubikPractice the Rubik's cube and other puzzles, with official scrambles and a 3D viewer.See details →
- selflix.rossmel.comSelflixMy own "Netflix": a Jellyfin media center on my home server.See details →
Posts about this project
Next project
transcribe →