LIBRY - The mobile app that provides users to explore and view the most popular software libraries. Users can browse through a selection of libraries, discover new ones, access detailed information about each, interact with the libraries by adding them to their favorites, viewing their source code repositories, and accessing related resources.
- Flutter
- Dart
- Xcode
- Android Studio
- You can use Visual Studio Code with the Flutter and Dart plugins.
- Simulators: both Android and iOS development.
Before installing the Emulator Suite you will need:
- Node.js version 16.0 or higher. Download here
- Java JDK version 11 or higher. Download here
To install the Emulator Suite:
- Install the Firebase CLI.
- You will need CLI version 8.14.0 or higher to use the Emulator Suite. Installation guide
- To install Patrol testing framework follow installation guide below. Installation guide
-
Clone this repository to your local machine:
git clone https://github.com/anna02272/Libry-Package-Manager-App.git
-
Create an API key at libraries.io/api.
-
Add the API key to a
.envfile in the root directory of the project:API_KEY=YOUR_API_KEY_HERE -
Run the following command to fetch the project dependencies:
flutter pub get
-
If you're using emulators for testing in debug mode, before running the project:
- uncomment the following lines in main.dart:
// import 'package:cloud_firestore/cloud_firestore.dart'; if (kDebugMode) { // await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); // FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080); }
- start emulators with the following command:
firebase emulators:start
-
Build and run the Flutter project on your device or emulator:
flutter run
-
Repeat steps five and six from above first
-
Run following command to start Patrol tests:
patrol test -t integration_test/example_test.dart
Libry app offers the following functionalities:
-
Icon and Splash Screen:
- Customized icon and splash screen for branding and visual identity.
-
Onboarding Slides:
- Onboarding slides to introduce users to the app's features and functionality.
-
User Registration:
- User registration process with validation and integration with Firebase Authentication for secure authentication.
-
Login and Reset Password:
- User authentication with error handling for wrong credentials, with options for resetting the password via email link.
-
List of Platforms Screen:
- Home screen displaying platforms of libraries.
- Platforms data retrieved from the API, including color, title, project count, and default language.
- Implementation of retry mechanism to handle network errors gracefully.
-
List of Libraries Screen:
- Tabbed interface for displaying latest and popular libraries.
- Features pagination with tabs not reloading for enhanced user experience.
- Display of platform color, name, version, and keywords.
- Implementation of retry mechanism to handle network errors gracefully.
-
Search Result Screen:
- Pagination feature for browsing search results efficiently.
- Implementation of retry mechanism to handle network errors gracefully.
-
Library Details Screen:
- Detailed view of individual libraries accessible from various parts of the app, including libraries, search, and favorites screens.
- Integration of a web view component for displaying library details, with support for retry mechanism in case of network issues.
-
My Favorites Screen:
- Ability to add or remove libraries from favorites list.
- Accessible from libraries, search, and favorites screens.
- Includes functionality to view details of libraries and handles scenarios of empty list or no internet connection using Cloud Firestore.
- My Account Screen:
- User profile screen for managing account settings.
- Localization support for Serbian and English languages, with the default language determined by the operating system.
- Dark mode feature offering options for dark, light, or system theme settings.
- Logout functionality for securely signing out of the app.
- Delete Account:
- Confirmation dialog for deleting the user account, with reauthentication required for additional security.