How ouyangyanhuo/moyue works
Moyue is a Flutter reading app for Markdown, HTML, and RSS, centered on importing and organizing documents, opening them in a reader, and remembering reading progress. The documented workflow also branches into Markdown editing, feed subscriptions, and display customization. Markdown and HTML normally render as native Flutter widgets; WebView is an optional HTML-only alternative. The README documents the broad architecture and subsystem links; sampled source confirms Android incoming-file staging and platform channel behavior, but most Dart implementation files were not sampled, so uncertain internal wiring is omitted.
Main entry points: reader_detail_page.dart Reader detail · library_page.dart Document library · moyue_storage_service.dart Storage facade · moyue_app.dart App shell
Components 23
App and UI
- App shell
lib/app/moyue_app.dart - Document library
lib/features/reader/library_page.dart - RSS page
lib/features/rss/rss_page.dart - Settings
lib/features/settings/settings_page.dart
Reading and authoring
- Reader detail
lib/features/reader/reader_detail_page.dart - Native HTML
lib/features/reader/native_html_view.dart - Optional WebView
lib/features/reader/webview_html_view.dart - Markdown editor
lib/features/editor/editor_page.dart
Domain services
- RSS service
lib/services/rss_service.dart - Package import/export
lib/services/document_package_service.dart - Incoming files
lib/services/incoming_file_service.dart - Reading progress
lib/services/reading_progress_service.dart - Storage facade
lib/services/moyue_storage_service.dart - Text decoder
lib/services/text_decoder.dart
Storage and models
- Document and feed models
lib/models/reading_document.dart - SQLite index
lib/services/database/moyue_index_database.dart - Document files
lib/services/storage/package_file_store.dart - Display preferences
lib/core/display/display_preferences.dart - Theme and styles
lib/core/theme/moyue_theme.dart
Platform integrations
- Android activity
android/app/src/main/kotlin/com/moyue/application/MainActivity.kt
Other components
- Reader
- RSS/Atom sources
- External browser
Connections 27
- Reader → App shell: opens
- App shell → Document library: shows
- App shell → RSS page: shows
- App shell → Settings: shows
- Document library → Reader detail: opens document
- Document library → Incoming files: imports files
- Android activity → Incoming files: stages files
- Reader detail → Storage facade: loads document
- Storage facade → SQLite index: reads/writes index
- Storage facade → Document files: reads/writes files
- Storage facade → Package import/export: delegates packages
- Package import/export → Text decoder: decodes text
- Package import/export → SQLite index: updates index
- Package import/export → Document files: writes package files
- Reader detail → Native HTML: renders HTML
- Reader detail → Optional WebView: renders HTML
- Reader detail → Reading progress: saves/restores
- Reader detail → Document and feed models: displays document
- Document library → Markdown editor: edits Markdown
- Markdown editor → Storage facade: saves draft
- RSS page → RSS service: manages feeds
- RSS service → RSS/Atom sources: fetches feeds
- RSS page → External browser: opens article
- Settings → Display preferences: updates preferences
- Display preferences → Theme and styles: configures appearance
- Document library → Document and feed models: uses document models
- RSS service → Document and feed models: produces feed data