A modern, feature-rich E-Book mobile application for Android & iOS devices
Built with β€οΈ using Dart & Flutter
- About
- Features
- Screenshots
- Tech Stack
- Architecture
- Getting Started
- Project Structure
- Building for Production
- Contributing
- Roadmap
- License
- Contact
Hasper EBook is a comprehensive digital library application that provides users with seamless access to a vast collection of e-books. With an elegant and intuitive interface, users can browse, search, and read their favorite books directly on their mobile devices. The app leverages Firebase's real-time database capabilities to deliver a dynamic and responsive reading experience.
- π± Cross-Platform: Native performance on both Android and iOS
- βοΈ Cloud-Powered: Real-time synchronization with Firebase Firestore
- π¨ Beautiful UI: Modern and clean Material Design interface
- π Advanced PDF Reader: Powered by Syncfusion's professional PDF viewer
- π Smart Search: Quickly find books by title, author, or language
- βΎοΈ Infinite Scrolling: Seamless browsing experience with pagination
- π Multi-Language Support: Books available in multiple languages
- Browse Books: Explore a comprehensive collection of e-books with beautiful cover displays
- Book Details: View detailed information including title, description, language, and page count
- PDF Reader: Read books with a professional, feature-rich PDF viewer
- Search Functionality: Find books quickly using the integrated search system
- Categorization: Books organized by language and categories
- Infinite Scroll: Load more books automatically as you scroll
- Bookmarking: Keep track of your reading progress
- Responsive Design: Adapts perfectly to different screen sizes
- Material Design: Modern and intuitive user interface
- Custom Theme: Carefully crafted color scheme and typography
- Smooth Animations: Fluid transitions and interactions
- Drawer Navigation: Easy access to different sections
- Cover Photo Grid: Visually appealing book display
- State Management: Efficient state management using Provider
- Real-time Database: Firebase Firestore for live data synchronization
- Lazy Loading: Optimized performance with infinite scroll pagination
- SVG Support: High-quality vector graphics rendering
- Offline Capability: Local caching for improved performance
- Flutter
^3.5.0- Cross-platform UI framework - Dart
^3.5.0- Programming language
- Firebase Core
^3.15.0- Firebase SDK for Flutter - Cloud Firestore
^5.6.0- NoSQL cloud database
- Provider
^6.1.2- State management solution
- Syncfusion Flutter PDFViewer
^28.2.12- Professional PDF rendering
- Flutter SVG
^2.0.16- SVG rendering support - Cupertino Icons
^1.0.8- iOS-style icons
- Infinite Scroll Pagination
^4.1.0- Efficient list loading
The application follows a clean architecture pattern with clear separation of concerns:
lib/
βββ components/ # Reusable UI components
β βββ book_item.dart
β βββ drawer.dart
βββ models/ # Data models
β βββ book.dart
βββ providers/ # State management
β βββ books_provider.dart
βββ repositories/ # Data access layer
β βββ db_repository.dart
βββ screens/ # Application screens
β βββ home_screen/
β βββ book_details_screen/
β βββ all_book_screen/
β βββ pdf_screen.dart
βββ utils/ # Utility functions
β βββ search.dart
βββ firebase_options.dart
βββ main.dart # Entry point
βββ routes.dart # Route definitions
βββ styles.dart # Style constants
βββ theme.dart # App theme
- Provider Pattern: For state management and dependency injection
- Repository Pattern: Abstracts data sources (Firestore)
- Factory Pattern: Used in model constructors for object creation
- Singleton Pattern: Firebase instance management
Before you begin, ensure you have the following installed:
- Flutter SDK (3.5.0 or higher) - Install Flutter
- Dart SDK (3.5.0 or higher) - Included with Flutter
- Android Studio or VS Code with Flutter extensions
- Xcode (for iOS development, macOS only)
- Firebase CLI - Install Firebase CLI
- Git - Install Git
- Clone the repository
git clone https://github.com/Rezuanul-Islam-Fahim/hasper_ebook.git
cd hasper_ebook- Install dependencies
flutter pub get- Verify Flutter installation
flutter doctorFix any issues reported by Flutter Doctor before proceeding.
This project uses Firebase Firestore for data storage. Follow these steps:
-
Create a Firebase Project
- Go to Firebase Console
- Click "Add Project" and follow the setup wizard
- Enable Cloud Firestore in the Firebase console
-
Register your apps
- Add Android app with package name:
com.rezuanulfahim.hasperEbook - Add iOS app with bundle ID:
com.rezuanulfahim.hasperEbook - Download and add
google-services.jsontoandroid/app/ - Download and add
GoogleService-Info.plisttoios/Runner/
- Add Android app with package name:
-
Configure FlutterFire
# Install FlutterFire CLI
dart pub global activate flutterfire_cli
# Configure Firebase for your Flutter project
flutterfire configure- Firestore Database Structure
Create a collection named books with the following structure:
{
"title": "Book Title",
"coverPhotoUrl": "https://example.com/cover.jpg",
"pdfUrl": "https://example.com/book.pdf",
"language": "English",
"pages": 250,
"description": "Book description here...",
"dateTime": "2025-01-01T00:00:00.000Z"
}- Firestore Security Rules
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /books/{book} {
allow read: if true; // Public read access
allow write: if false; // Only admins can write
}
}
}- Connect a device or start an emulator
# List available devices
flutter devices
# Start an Android emulator
flutter emulators --launch <emulator_id>
# Start an iOS simulator (macOS only)
open -a Simulator- Run the app
# Run in debug mode
flutter run
# Run on a specific device
flutter run -d <device_id>
# Run in release mode
flutter run --release- Hot Reload
While the app is running, press:
r- Hot reloadR- Hot restartq- Quit
hasper_ebook/
βββ android/ # Android native code
βββ ios/ # iOS native code
βββ lib/ # Dart application code
β βββ components/ # Reusable widgets
β βββ models/ # Data models
β βββ providers/ # State management
β βββ repositories/ # Data layer
β βββ screens/ # UI screens
β βββ utils/ # Helper functions
β βββ main.dart # App entry point
βββ assets/ # Static assets
β βββ icons/ # App icons
βββ screenshots/ # App screenshots
βββ web/ # Web platform support
βββ pubspec.yaml # Dependencies
βββ firebase.json # Firebase configuration
βββ README.md # This file
- Configure signing
Create android/key.properties:
storePassword=<your-store-password>
keyPassword=<your-key-password>
keyAlias=<your-key-alias>
storeFile=<path-to-keystore>- Build APK
flutter build apk --release- Build App Bundle (recommended for Play Store)
flutter build appbundle --releaseOutput: build/app/outputs/bundle/release/app-release.aab
- Open Xcode workspace
open ios/Runner.xcworkspace-
Configure signing in Xcode
- Select Runner target
- Go to Signing & Capabilities
- Select your team and provisioning profile
-
Build IPA
flutter build ipa --release- Archive and upload to App Store via Xcode
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Effective Dart guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions small and focused
- Write unit tests for new features
If you find a bug, please create an issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Device and OS information
- β Browse books with infinite scroll
- β View book details
- β Read PDFs in-app
- β Search functionality
- β Firebase Firestore integration
-
User Authentication
- User login and registration
- Personal reading lists
- Reading history
-
Enhanced Reading Experience
- Bookmarks and annotations
- Night mode/Dark theme
- Adjustable font sizes
- Reading progress tracking
-
Social Features
- Book ratings and reviews
- Share favorite books
- User profiles
-
Content Management
- Categories and genres
- Favorites collection
- Download books for offline reading
-
Personalization
- Reading recommendations
- Recently viewed books
- Customizable themes
-
Admin Panel
- Web-based content management
- Upload and manage books
- Analytics dashboard
See the open issues for a full list of proposed features and known issues.
Distributed under the MIT License. See LICENSE file for more information.
MIT License
Copyright (c) 2022-2025 Rezuanul Islam Fahim
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Rezuanul Islam Fahim
- GitHub: @Rezuanul-Islam-Fahim
- Project Link: https://github.com/Rezuanul-Islam-Fahim/hasper_ebook
- Flutter - The amazing UI framework
- Firebase - Backend infrastructure
- Syncfusion - PDF viewer component
- Material Design - Design system
- All contributors who help improve this project




