# Worldhopper Project Overview ## Purpose An Android application to read OPDS-PS feeds (Open Publication Distribution System - Publication Server). The app allows users to: - Browse and connect to OPDS catalog servers - View publication feeds and details - Download and read EPUB publications - Track reading progress across devices ## Tech Stack - **Framework**: Flutter (Dart SDK ^3.5.1) - **State Management**: Riverpod (flutter_riverpod ^2.5.1) - **Routing**: GoRouter (^14.0.0) - **HTTP Client**: Dio (^5.4.0) with authentication support - **Database**: SQLite via sqflite (^2.3.2) - **XML Parsing**: xml package (^6.5.0) for OPDS feed parsing - **EPUB Reader**: flutter_epub_viewer (^1.2.2) - Epub.js with WebView integration - **Image Loading**: cached_network_image (^3.3.1) with flutter_cache_manager - **Models**: Freezed (^2.4.7) for immutable data classes - **UI**: Material Design 3 with theme support - **Target Platforms**: Android (primary), with support for iOS, web, macOS, Windows, and Linux ## Key Features - **OPDS Server Management**: Add, edit, and manage multiple OPDS catalog servers with authentication - **Feed Browsing**: Navigate through OPDS feeds (navigation and acquisition feeds) - **Publication Details**: View detailed information about publications - **EPUB Reading**: Integrated EPUB reader with reading progress tracking - **Reading Progress**: Persistent reading progress stored in local SQLite database - **Image Caching**: Efficient image loading and caching for cover images - **Authentication**: Support for HTTP basic auth and other authentication methods ## Project Status Active development with core features implemented: - ✅ OPDS feed parsing and navigation - ✅ Server management with authentication - ✅ SQLite database for servers and reading progress - ✅ EPUB reader integration - ✅ Material Design 3 theming - ✅ Routing with GoRouter - ✅ State management with Riverpod ## Architecture - **Clean Architecture**: Separation of concerns with models, services, repositories, and providers - **State Management**: Riverpod with code generation for type-safe providers - **Data Layer**: SQLite database with structured tables and repositories - **Service Layer**: Dedicated services for OPDS operations, authentication, and EPUB handling - **UI Layer**: Screen-based navigation with reusable widgets ## Version 1.0.0+1