https://github.com/alvish0407/pingolearn.com-technical-assesment
A Product listing app (eShop) built with Flutter, Cloud Firestore & Remote Config within 6 Hours
https://github.com/alvish0407/pingolearn.com-technical-assesment
firebase-auth-email firebase-cloud-firestore firebase-remote-config flutter provider technical-assessment
Last synced: 14 days ago
JSON representation
A Product listing app (eShop) built with Flutter, Cloud Firestore & Remote Config within 6 Hours
- Host: GitHub
- URL: https://github.com/alvish0407/pingolearn.com-technical-assesment
- Owner: Alvish0407
- Created: 2024-07-30T11:26:43.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-23T05:46:57.000Z (almost 2 years ago)
- Last Synced: 2025-01-23T17:57:39.815Z (over 1 year ago)
- Topics: firebase-auth-email, firebase-cloud-firestore, firebase-remote-config, flutter, provider, technical-assessment
- Language: Dart
- Homepage:
- Size: 311 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### A product listing app (eShop) built with Flutter, Cloud Firestore & Remote Config within 6 Hours
https://github.com/user-attachments/assets/bc066ae5-30fe-426f-b4b8-f91f5951fe69
Assignmnet: An e-commerce app
**The Challenge**:
You have to build an e-commerce app which uses Firebase Authentication, Firebase Remote Config and will fetch products from https://dummyjson.com/products as per the specified designs.
**What is expected:**
- Firebase Authentication (email only)
- Collect details (name, email) [Store details collected in Firestore in user
collection]
- A products feed showing the all the products from
(https://dummyjson.com/products)
- The products from the API will have a discountPercentage field, you will
need to use discountPercentage to calculate the discountedPrice from the
actual price field and display it accordingly in the UI.
- Create a boolean in Firebase Remote Config to decide whether we display
the discountedPrice or the original price. [if boolean in Firebase Remote Config is true we calculate the discountedPrice from the discountPercentage for each product and display it or else we only display the original price]
**Design specs:**
https://www.figma.com/proto/plVEnYXYi6CMsCSZdrsPRf/products?node-id=7%3A3&scaling=scale-down&page-id=0%3A1&starting-point-node-id=7%3A3
or
https://tinyurl.com/bdcwr4ah
**Must Haves:**
- Flutter >= v2.2.0
- Error Handling for Backend Services ex: API/Firebase interaction exceptions and errors
- Form validation
- State management [Provider only]
**Bonus Points:**
- Keep the app size as small as possible
- Following the latest design guidelines
- Follow any well-known architecture pattern
- Surprise us with your creativity!
- Feel free to use any third-party dependencies that may solve the problem
**Evaluation Criteria:**
1. Code quality - The code should be well structured
2. Completeness - All the features listed above should work as expected 3. Presentability - The user interface must be clean and usable
## Prerequisite
1. Download [fvm](https://fvm.app/) and follow the [instructions](https://fvm.app/documentation/guides/basic-commands#examples-1)
2. [Setup](https://github.com/Alvish0407/kaam-hiring-test/blob/main/README.md#running-the-project-with-firebase) Firebase Project
## Features
- [x] Implement user login and registration using Firebase Authentication (Email and Password)
- [x] Include basic form validation (e.g., email format, password strength)
- [x] API call to fetch products from server
- [x] Firebase Remote Config to dynamically display the product price along with the discount
## Packages in use
These are the main packages used in the app:
- [Provider](https://pub.dev/packages/provider) A wrapper around InheritedWidget to make them easier to use and more reusable.
- [GoRouter](https://pub.dev/packages/go_router) for navigation
- [Firebase Auth](https://pub.dev/packages/firebase_auth) for authentication
- [Cloud Firestore](https://pub.dev/packages/cloud_firestore) as a realtime database
- [Build Runner](https://pub.dev/packages/build_runner) is concrete way of generating files using Dart code
- [Firebase Remote Config](https://pub.dev/packages/firebase_remote_config)
- [Dio](https://pub.dev/packages/dio) A powerful HTTP networking package.
See the [pubspec.yaml](pubspec.yaml) file for the complete list.
## Running the project with Firebase
To use this project with Firebase, follow these steps:
- Create a new project with the Firebase console
- Enable Firebase Authentication, along with the Email/Password Authentication Sign-in provider in the Firebase Console (Authentication > Sign-in method > Email/Password > Edit > Enable > Save)
- Enable Cloud Firestore
- Enable Firebase Remote Config
### Using the CLI
Make sure you have the Firebase CLI and [FlutterFire CLI](https://pub.dev/packages/flutterfire_cli) installed.
Then run this on the terminal from the root of this project:
- Run `firebase login` so you have access to the Firebase project you have created
- Run `flutterfire configure` and follow all the steps
That's it. Have fun!