Libraro was designed to make reading more advanced with features such as offline access to purchased books, uploading and reading PDF documents, and personal notifications for reminding when it’s time to read. The proposed application tries to ensure that users can get easy access to their reading habits with ease by the help of a user-friendly interface, secure authentication, and progress tracking.
The next sections detail the major features that form the requirement specification, wireframe design, database schema structure, use case diagram, class diagram, and detailed test plan representatives-all purposeful and well-thought-through plans and technical element contributions towards the making of Libraro, the Library App.
Project Proposal: Libraro Library App
Prepared by: Osman Adam
Email: contact.namso@gmail.com
Start Date: 29/09/2024
for the PDF Document Link click here
Introduction
Libraro is a library app that offers many useful features, including:
- Buying Books: Users can purchase their favorite books.
- Uploading PDFs: Users can upload PDF documents to read.
- Offline Reading: Once a book is purchased and downloaded, it can be read offline without internet access.
- Notifications: Users receive reminders about reading schedules and new book releases.
- User Authentication: Users can log in to their accounts to find their favorite books and pre-purchases.
- Reading Progress Tracking: This feature allows users to keep track of their progress in a specific book.
Purpose
The primary purpose of the Libraro Library App is to provide users with a reliable way to read and store their favorite books, track their progress, and receive reminders whenever needed, all in one place.
Objectives
- Allow users to read and buy books.
- Enable reading of PDF files by uploading them to the app.
- Save books to a wishlist for future purchases.
- Provide a platform for reviewing and rating books.
- Enable notifications for reading reminders.
- Facilitate progress tracking, allowing users to continue reading where they left off.
- Ensure data security and privacy.
- Provide analytics for users to see a report of their interactions with the app, including reading hours.
- Incorporate accessibility features, such as text scaling and eye-friendly colors.
Target Audience
- Book Enthusiasts: Individuals who enjoy reading books from any genre.
- Professionals: Users who wish to read PDF documents with better accessibility features.
- Students: From primary school to postgraduate level, Libraro serves as a learning app, allowing students to upload and read their books or enjoy the available titles.
Features
- Search Functionality: Users can search for their favorite books.
- User Authentication: Allows users to log in to access their pre-bought books.
- Book Filtering and Sorting: Users can sort books by category, price, or author.
- Reading Progress Tracking: Users can bookmark their reading progress.
- Offline Support: Users can read pre-uploaded and purchased books offline.
- Book Reviews: Users can leave ratings for books they have read or purchased.
- Notifications: Users receive notifications for new book releases and reading reminders.
- Wishlist Feature: Users can save books to a wishlist to track future purchases.
- Analytics: Provides basic analytics reports on user interactions within the app.
Technical Overview
Development Environment
- Primary IDE: Android Studio
- Language: Kotlin
- Layout Language: XML
Architecture
- Design Structure: Model-View-ViewModel (MVVM)
- Components: Fragments, Services, Packages, Activities, and XML Layouts
Data Management
- Room Database: To store all book names, descriptions, and authors.
- LiveData and ViewModel: For displaying real-time data and managing UI-related data.
- Repository Patterns.
File Attachments
- Integration: With Android’s file system.
Security
- Encryption Utilities: For protecting sensitive user data.
- Android Keystore System: For secure key storage.
Notifications
- Firebase Cloud Messaging (FCM): For push notifications.
- NotificationsCompat: For creating and managing notifications.
Performance Optimizations
- RecyclerView: With efficient view holders for smooth scrolling and navigation.
Libraro Development Timeline
See attached: Libraro_Timeline.pdf
Expected Outcomes
User Adoption:
- Achieve 100+ downloads within 6 months of launch.
- Reach at least 200 active users by the end of the year.
- Attain an average daily user to monthly active users’ ratio of 20%.
- Achieve a total of 50 completed books by the end of the first 6 months.
User Satisfaction:
- Achieve at least a rating of 3.0+ stars on Google Play Store.
Accessibility:
- Meet the WCAG 2.1 AA standards for accessibility.
- Provide support for at least 2 languages by the end of the second year.
Libraro Requirement Specification
Download the Requirement Specification PDF File: Download
1. Introduction
Purpose of Document
This document outlines the detailed requirements for the Libraro Library App. It serves as a reference for developers throughout the development process.
Overview of the App
Libraro is an Android Library App designed to provide users with an appealing book reading experience. It allows users to:
- Buy, read, and upload books.
- Track reading progress and view detailed reports.
- Enjoy an easy-to-use interface with offline support for pre-downloaded books.
This app is perfect for book lovers and casual readers, offering convenience and flexibility.
2. Functional Requirements
User Actions:
- Buy books available on the Libraro Library App.
- Upload PDF documents to read as books.
- Search the library for specific books.
- Display reading progress on a selected book.
- View basic analytics regarding user interactions with the app.
- Rate books based on user experience.
- Save books to a wishlist for future purchases.
- Preview books before purchasing them.
- Set reminders for when the user wants to read a book.
System Behaviors:
- Save bought books to the user’s account.
- Sync user details to their account.
- Display suggested books on the homepage.
- Provide offline access to all purchased books and uploaded files.
- Authenticate users before login.
- Track user reading progress for each book.
- Push notifications for any reminders set by the user.
- Generate previews of books before purchase.
3. Non-Functional Requirements
Performance:
- App launch time should be under 3 seconds on average devices.
- Search results should be displayed within one second when searching for books.
- Scrolling through searched books should be smooth, even on minimum device specifications.
- The maximum app size at installation should not exceed 50MB.
Usability:
- Use of clear and readable typography.
- Support for multiple themes.
- A Material Design 3 compliant user interface.
Reliability:
- Ensure a crash-free rate of at least 99%.
- Implement automatic crash reporting.
- Enable automatic backup when users purchase a new book.
- Provide regular automatic backups of reading time to improve analytics.
Security:
- Provide end-to-end encryption for all users’ sensitive information.
- Ensure secure payment processing via Stripe.
- Use a secure login process through a Google account.
- Offer an optional 2-factor authentication for login security.
4. Technical Requirements
Development Tools:
- Android Studio Koala as the development environment.
- Kotlin 1.5 or higher as the programming language.
- Minimum SDK: API 24 (Android 7.0).
- Preferred SDK: API 33 (Android 13).
- Use GitHub for version control.
Frameworks and Libraries:
- AndroidX libraries for modern Android development.
- Firebase for database storage.
- ViewModel and LiveData for handling UI-related data.
- Retrofit for network operations.
- Firebase for storing book covers and book data.
Testing Requirements:
- Unit tests for the app’s core logic.
- UI testing using Espresso.
- Performance testing using Android Profiler.
5. Constraints
Platform Limitations:
- The app is Android-only.
- Supports Android 7.0 (API 24) and above.
- Maximum upload size for a book is 20MB.
- Offline storage is limited by the device’s available space.
Network Constraints:
- Login, book purchases, book search, and sync operations require an internet connection.
Development Constraints:
- The app must comply with the Google Play Store policies.
- Third-party libraries used in development must be widely adopted and well-maintained.
Domain Model Structure Diagram
Libraro Test Plan
1. Test Plan Identifier
Libraro Test Plan v1.0
Date: 17/09/2024
2. Introduction
This test plan defines the objectives, scope, types of testing, deliverables, and timelines for testing the Libraro application. The application allows users to browse books, read PDFs, authenticate via Google, and process payments for books. The goal is to create a robust, user-friendly app that performs as expected.
3. Scope
The test will cover the following features:
Functional Features:
- User authentication (Google Sign-In and email verification).
- Book browsing, searching, and filtering.
- Book purchasing and payment integration (Stripe).
- PDF viewing and reading progress tracking.
- User profile and statistics.
- Notifications, wishlist, and favorites management.
- Database integration and offline support.
Non-Functional Features:
- App responsiveness and performance.
- Security of user data and payment processing.
4. Test Objectives
- Verify the correctness of all functionalities.
- Ensure a smooth and intuitive user experience.
- Validate performance under normal and extreme conditions.
- Maintain compatibility across Android devices and OS versions.
- Ensure secure handling of user data and payments.
5. Test Items
Core Functionality:
- User registration, login, and authentication.
- Browsing and searching for books.
- Book purchase flow and payment integration.
- PDF reading and progress tracking.
Additional Features:
- User profile management (favorites, wishlist, and stats).
- Notifications and offline caching.
Non-Functional Testing:
- App responsiveness and performance.
- Security testing for user data and payment handling.
6. Approach
Testing Types:
- Unit Testing: Test individual components, such as adapters, ViewModels, and database methods.
- Integration Testing: Ensure that components like Firebase Authentication and Firestore work together seamlessly.
- System Testing: Validate the entire application against the requirements.
- UI/UX Testing: Ensure consistent and accessible design.
- Performance Testing: Measure load times, responsiveness, and behavior under stress.
- Security Testing: Verify data encryption, secure storage, and payment handling.
- Regression Testing: Ensure that new features do not break existing ones.
Tools:
- Unit Testing: JUnit, Mockito.
- UI Testing: Espresso, Firebase Test Lab.
- Performance Testing: Android Profiler, Firebase Performance Monitoring.
- Manual Testing: Simulated scenarios and exploratory testing.
7. Test Cases
Authentication
Book Browsing
Purchasing
Reading
Performance
8. Suspension Criteria
Testing will be stopped if:
- Critical bugs block progress.
- The test environment becomes unavailable.
9. Deliverables
- Test cases and results.
- Bug reports.
- Performance analysis report.
- Final test summary document.
10. Roles and Responsibilities
- Developer: Prepares the build and resolves identified bugs.
- Tester: Executes the test plan and documents findings.
- Project Manager: Monitors progress and ensures timelines are adhered to.
11. Schedule
Phase | Start Date | End Date |
---|---|---|
Test Case Preparation | December 1, 2024 | December 7, 2024 |
Test Execution | December 8, 2024 | December 14, 2024 |
Bug Fixing | December 15, 2024 | December 21, 2024 |
Regression Testing | December 22, 2024 | December 28, 2024 |
12. Risks
- Inconsistent behavior across Android versions.
- Delays due to external dependencies.
13. Exit Criteria
Testing will conclude when:
- All critical and major bugs are resolved.
- All test cases pass, or acceptable risks are documented.
- https://www.youtube.com/watch?v=idbxxkF1l6k&ab_channel=CodingSTUFF
- https://developer.android.com/guide/navigation/use-graph/animate-transitions
- https://github.com/sachintha00/Android-Login-UI/blob/main/app/src/main/res/layout/activity_main.xml
- https://www.figma.com/community/file/1261742596651461425
- https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/5cdbdf156680567.636b735cba874.jpg
- https://www.youtube.com/watch?v=WqIFBuWNY6o&ab_channel=Foxandroid
- https://firebase.google.com/docs/auth/android/start
- https://developer.android.com/guide/fragments
- https://developer.android.com/guide/navigation
- https://developer.android.com/topic/libraries/view-binding
- https://firebase.google.com/docs/auth
- https://firebase.google.com/docs/auth/android/start
- https://firebase.google.com/docs/auth/android/password-auth
- https://developer.android.com/courses/android-basics-kotlin/course
- https://developer.android.com/codelabs/android-navigation
- https://medium.com/firebase-developers/firebase-auth-on-android-9aeb4f968f84
- https://www.youtube.com/watch?v=-OkQUpwbLW4
- https://firebase.google.com/codelabs/firebase-android
- https://developer.android.com/guide/fragments/appbar
- https://www.youtube.com/watch?v=ahNruIZX130&ab_channel=AndroidKnowledge
- https://www.youtube.com/watch?v=zOsWCAsG2Xo&ab_channel=AndroidKnowledge
- https://www.youtube.com/watch?v=RiHGwJ_u27k&ab_channel=SmallAcademy
- https://stackoverflow.com/questions/9294603/how-do-i-get-the-currently-displayed-fragment
One thought on “Libraro Library App”
nice