I named it ShuDao - “The Tao of Letters”. Yes, I named a novel reader after a martial arts philosophy. No, I will not be taking criticism at this time.
The idea is simple: in xianxia novels, cultivators spend lifetimes pursuing the Tao - the Way - through meditation, breakthroughs, and occasionally exploding mountains because someone insulted their sect. I spend that same energy pursuing… more chapters. The Tao of Letters. The path of reading way too much. I regret nothing.
This is Xianxia Reader reincarnated. The web version had a good run, but it was held together by CORS proxies and prayers. Every time I switched tabs to check Discord, my translation batch would just… die. The browser looked me in the eye and said “background tasks? we don’t do that here”. Cloudflare kept raising the stakes like a xianxia villain who keeps escaping at the last second.
So I broke out of the browser’s mortal realm and ascended to native. React Native. Expo. And suddenly everything the web version couldn’t do became trivial. Background translation jobs that actually run in the background. Android foreground service that keeps things alive. Notifications. Cloudflare bypass. Filesystem access. I basically went from Qi Condensation to Nascent Soul overnight.
Then - and this is where it got out of hand - I added a gamification system. Because apparently translating thousands of chapters wasn’t rewarding enough. Now you earn XP and level up through xianxia cultivation realms. Daily quests. Achievements. Reading streaks. I turned binge-reading into a cultivation simulation. Yes, I know I have a problem.
The app is Vietnamese-first. Every UI string is Vietnamese, hard-coded, no i18n library. If you don’t read Vietnamese, this app is not for you. If you do - welcome, fellow cultivator.
Backups are cross-compatible with the old Vue web app. Same JSON format. Your data from the mortal realm transfers over. The Dao is continuous.
Oh, and the UI. I couldn’t just ship flat rectangles like a sane person. No, I built a theming system with configurable accent colors (purple, green, blue, yellow, red), light and dark palettes, and - the pièce de résistance - a blur view system. Pick a background image, and every card, bottom sheet, tab bar, and input field gets a frosted-glass blur overlay that bleeds the background through. It’s wildly unnecessary for a novel reader. It looks incredible. I regret nothing. The theme is hand-rolled too - no Nativewind, no Tamagui, no styling library. Just semantic color tokens, spacing constants, and a ThemedView/ThemedText wrapper system that keeps everything consistent.
Tech Stack
- Expo SDK 55 - React Native 0.83 with React 19.2 and React Compiler
- expo-router - file-based routing with NativeTabs
- expo-sqlite - local database with Zustand + SQLite persistence
- react-native-reanimated v4 - smooth animations
- Gemini / OpenAI-compatible / Mistral - AI translation via SSE streaming
- Local Expo module - Android foreground service (Kotlin) for background jobs
Features
- Library - list/grid view, search, favorites, per-novel cover and metadata
- Site crawlers - adapters for 69shuba, Piaotia, UUKS5, XSW, plus TXT import (GBK/UTF-8)
- Reader - scroll mode, bundled fonts, font/spacing/alignment controls, light/dark/auto theme, zen mode
- Translation - Gemini, OpenAI-compatible (OpenAI/Ollama/LM Studio), or Mistral with SSE streaming and chunk-error retry
- Glossary - per-novel Chinese→Vietnamese term list with AI-assisted glossary builder
- Background jobs - translation queue with per-chapter progress, logs, Android foreground service, iOS task-manager support, and notifications
- Gamification - XP, cultivation levels, daily quests, achievements, streak tracking, activity charts
- Backup - save/share/import with Replace or Merge modes, cross-compatible with the Vue web app
- Cloudflare bypass - automatic CF challenge detection with in-app overlay