{"slug": "i-built-a-manga-reader-that-works-on-every-platform-here-s-how", "title": "I Built a Manga Reader That Works on Every Platform --Here's How", "summary": "A developer built Nyora, a free, open-source manga reader that works across Android, iOS, macOS, Windows, Linux, Web, and Docker, featuring AI-powered on-device translation and cross-platform sync without requiring an account. The project began as a fork of Kotatsu and Aidoku, and its key technical challenge was creating a stable cross-platform manga ID hash for sync.", "body_md": "**Nyora** is a free, open-source manga/manhwa/manhua reader for Android, iOS, macOS, Windows, Linux, Web, and even Docker — with AI-powered on-device translation and cross-platform sync.\n\nEvery manga reader makes you choose:\n\nI wanted one library — same titles, same progress, same bookmarks — on my phone, laptop, and browser. No ads. No account required. So I built it.\n\n| Platform | Distribution |\n|---|---|\n| Android | APK (sideload) |\n| iOS/iPadOS | IPA via AltStore/SideStore |\n| macOS |\n`.dmg` or `brew install --cask nyora`\n|\n| Windows |\n`.exe` (x64 + ARM64) |\n| Linux |\n`.deb` , `.rpm` , or curl installer |\n| Web |\n|\n\n**No account needed to read.** Cloud sync is opt-in.\n\nThis is the flagship feature. Instead of dumping translated text over the artwork:\n\nEach platform uses the best local engine:\n\nThere's also an **Ensemble AI Narrative Engine** that tracks character names and speaking styles across chapters so translations stay consistent.\n\nThe Android app pulls from 1,100+ manga sources via 35 generic engine templates (Madara, FoolSlide, MMRCMS, etc.). Web has ~390 live, health-checked sources. Desktop ports are growing toward parity.\n\nSync library, categories, reading history, bookmarks, and exact page progress across all six platforms. Two sign-in methods:\n\nSelf-hostable — the backend is just Supabase/PostgreSQL with row-level security. The server stores only reading state, never page images.\n\n| Component | Stack |\n|---|---|\n| Android | Kotlin 2.2, Jetpack Compose, Hilt, Room, Coil 3, ML Kit |\n| iOS | Swift, SwiftUI (fork of Aidoku) |\n| macOS | SwiftUI + Compose Multiplatform |\n| Windows/Linux | Compose Multiplatform (Kotlin) |\n| Web | TypeScript SPA (100% client-side, no framework) |\n| Python SDK |\n`pip install nyora` — bundled engine + TUI |\n| JS SDK |\n`npm install nyora-sdk` — cloud-powered |\n| Sync backend | PostgreSQL, RLS, last-write-wins |\n| Marketing site | Astro |\n\nNyora began as a fork of [Kotatsu](https://github.com/KotatsuApp/Kotatsu) on Android. I loved the data-driven source engine approach but wanted it on every platform. I forked [Aidoku](https://github.com/Aidoku/Aidoku) for iOS and started porting the source engine to Swift. Desktop came next via Compose Multiplatform. Web was a clean-room TypeScript rebuild.\n\nThe hardest part: **cross-platform manga ID hashing**. Every platform needed to resolve the same manga to the same UUID for sync to work. I built a stable `nyoraId`\n\nhash that works identically across Kotlin, Swift, TypeScript, and Python.\n\n**Web** (no install): [web.nyora.xyz](https://web.nyora.xyz)\n\n**Native apps**: [GitHub Releases](https://github.com/Nyora-Manga)\n\n**Self-hosted**: `docker run -d -p 8080:8080 -v nyora-data:/data hasan72341/nyora`\n\n**Python**: `pip install nyora`\n\n**Discord**: [Join the community](https://discord.gg/7aZcgbgbqU)\n\nNyora is GPLv3 (mobile apps) and Apache-2.0 (everything else). The source engine templates are beginner-friendly and highly parallelizable. If you've ever wanted to contribute to open source, porting a parser is a great first PR.\n\nCheck the [GitHub](https://github.com/Nyora-Manga) and [Discord](https://discord.gg/7aZcgbgbqU) to get started.\n\n*Built with Kotlin, Swift, TypeScript, and the stubborn belief that manga readers shouldn't require compromises.*", "url": "https://wpnews.pro/news/i-built-a-manga-reader-that-works-on-every-platform-here-s-how", "canonical_source": "https://dev.to/hasan72341/i-built-a-manga-reader-that-works-on-every-platform-heres-how-aa1", "published_at": "2026-07-24 06:21:44+00:00", "updated_at": "2026-07-24 06:41:27.831734+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence"], "entities": ["Nyora", "Kotatsu", "Aidoku", "Supabase", "PostgreSQL", "GitHub", "Discord"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-manga-reader-that-works-on-every-platform-here-s-how", "markdown": "https://wpnews.pro/news/i-built-a-manga-reader-that-works-on-every-platform-here-s-how.md", "text": "https://wpnews.pro/news/i-built-a-manga-reader-that-works-on-every-platform-here-s-how.txt", "jsonld": "https://wpnews.pro/news/i-built-a-manga-reader-that-works-on-every-platform-here-s-how.jsonld"}}