A hybrid local document reader app with offline-first, online-enhanced features built with Flutter.
- 📂 Reads documents directly from local storage
- 📑 Automatically scans selected folders
- 🔤 Arranges all documents alphabetically
- 📴 Fully usable offline
- 🌐 Unlocks smart features when internet is available
- 🚫 No account, no login, no identity tracking
- DOC / DOCX
- TXT
- EPUB
- HTML
- RTF
-
File Discovery & Organization (Offline)
- Auto-scan local storage folders
- Manual folder selection
- Alphabetical sorting (A–Z / Z–A)
- File name search
- Recent files section
-
Core Reading Experience (Offline)
- One-tap open & read
- Smooth scrolling
- Page-by-page or continuous mode
- Zoom (pinch & double tap)
- Portrait & landscape support
- Dark mode / Light mode
- Remember last reading position
-
Advanced Annotations (Offline)
- Text highlighting (multiple colors)
- Add notes to selections
- Freehand drawing
- Annotation management
- Export annotations
-
OCR – Text Recognition (Online/Offline)
- OCR scanned PDFs and images
- Search inside scanned documents
- Language auto-detection
- Select & copy OCR text
-
AI-Powered Smart Features (Online Only)
- Document summary
- Ask questions about documents
- Key points extraction
- Context-aware responses
The app follows MVC (Model-View-Controller) architecture with:
- Models: Data structures using Isar database
- Views: Flutter UI components
- Controllers/Providers: Riverpod state management
- Services: Business logic and external integrations
dependencies:
flutter_riverpod: ^2.4.9
file_picker: ^6.1.1
permission_handler: ^11.1.0
path_provider: ^2.1.1
pdfx: ^2.4.0
epub_view: ^3.0.0
flutter_widget_from_html: ^0.14.11
google_mlkit_text_recognition: ^0.10.0
isar: ^3.1.0+1
connectivity_plus: ^5.0.2
http: ^1.1.2
share_plus: ^7.2.1
printing: ^5.11.1-
Clone the repository
git clone <repository-url> cd docmind_reader
-
Install dependencies
flutter pub get
-
Generate Isar database files
flutter packages pub run build_runner build
-
Configure API keys (Optional - for AI features)
- Open
lib/services/ai_service.dart - Replace
YOUR_API_KEYwith your OpenAI API key
- Open
-
Run the app
flutter run
lib/
├── main.dart # App entry point
├── models/ # Data models
│ ├── document_model.dart
│ └── annotation_model.dart
├── views/ # UI screens
│ ├── home_view.dart
│ ├── document_reader_view.dart
│ └── settings_view.dart
├── providers/ # Riverpod providers
│ ├── theme_provider.dart
│ └── document_provider.dart
├── services/ # Business logic
│ ├── document_service.dart
│ ├── ocr_service.dart
│ ├── ai_service.dart
│ └── annotation_service.dart
└── utils/ # Utility functions
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
- MANAGE_EXTERNAL_STORAGE
- INTERNET
- ACCESS_NETWORK_STATE
- CAMERA
- NSPhotoLibraryUsageDescription
- NSCameraUsageDescription
- Files never uploaded without consent
- AI & OCR only process selected content
- No background uploads
- No user accounts
- Transparent privacy policy
| Feature | Offline | Online |
|---|---|---|
| File reading | ✅ | ✅ |
| Annotations | ✅ | ✅ |
| Search | ✅ | ✅ |
| OCR | ✅ | |
| AI summaries | ❌ | ✅ |
| Ask document | ❌ | ✅ |
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.# docmind_reader_mobile