I have a confession: I’m hopelessly addicted to Chinese novels. Like, “refresh-the-translation-page-every-30-minutes” addicted. The problem? Translators are human. They sleep. They have lives. Some just ghost entire novels mid-arc, leaving me stranded at a cliffhanger. Unforgivable.
And the “converted” novels on some reading sites? Please. Machine-converted Chinese-to-Vietnamese reads like someone translated it through three languages and gave up halfway. My brain deserves better.
Then AI translation stopped being a joke and started being genuinely useful. Lightbulb moment: what if I just… crawl whatever novel I want and translate it myself? No waiting. No relying on a translator’s sleep schedule. Pure, unfiltered binge-reading.
So I built this as a mobile-first PWA. No backend. Everything lives in IndexedDB on your phone. It works - it’s still alive at reader.nkh.do. But reality hit hard:
- Crawling through a CORS proxy and playing cat-and-mouse with Cloudflare? Fun the first time. Less fun the 50th time.
- Web apps can’t run in the background. Switch tabs to check Discord? Your translation batch is dead. Thanks, browser.
- No native notifications, no background tasks, no filesystem access. The browser is a jealous platform - it wants all your attention or nothing.
That’s when I accepted the truth: web apps have a ceiling, and I’d already hit it. This project is done. It served me well. But the next chapter is native.
Tech Stack
- Vue 3 - SPA with Composition API
- TypeScript - strict type-checking throughout
- Vite (rolldown-vite) - build tooling
- Pinia - state management
- Tailwind CSS 4 - utility-first styling
- Dexie.js - IndexedDB for offline novel/chapter storage
- Google Gemini / Mistral / OpenAI / Ollama - AI translation backends
- Google Drive API - cloud sync and backup
- Vercel - deployment
Features
- Site crawlers - plugin-based adapters for multiple Chinese novel sites (69shuba, Piaotia, UUKS5, XSW, etc.)
- AI translation - Chinese-to-Vietnamese via Gemini, Mistral, OpenAI, Groq, Cerebras, LM Studio, or local Ollama
- Glossary builder - auto-generates term glossaries for consistent translation across chapters
- Offline-first PWA - full offline reading with service worker and IndexedDB storage
- Cloud sync - Google Drive backup and restore
- Reader experience - page-flip animation, zen mode, customizable scroll, dark/light themes
- Library management - organize novels with reading stats and progress tracking