This task involves implementing several features within a Flutter application, including authentication, displaying restaurant branches on a map, showing branch categories and products, and displaying product details.
This task involves implementing several features within a Flutter application, including authentication, displaying restaurant branches on a map, showing branch categories and products, and displaying product details.
1 - Authentication:
- Implement authentication functionality using a provided API endpoint for user sign-in.
- Handle user authentication using phone number and password.
- Securely store authentication tokens for subsequent API requests. 2 - Restaurant Branches on Map Screen:
- Fetch restaurant branch data from a provided API endpoint based on the user's location.
- Display branch locations on a map with markers.
- Provide detailed information about branches when markers are clicked. 3 - Branch Categories and Products Screen:
- Retrieve branch categories and products data from API endpoints.
- Display branch categories horizontally with images and names.
- Paginate and display products based on selected categories.
- Show product details including image, name, description, and price. 4 - Product Details Screen:
- Display detailed information about selected products.
- Include product image, name, description, and price.
Make sure you have Flutter and Dart installed on your machine. If not, follow the official Flutter installation guide.
-
Clone the repository:
git clone https://github.com/karar0120/icon-tech-task.git cd icon-tech-app-flutter
-
Install dependencies:
flutter pub get
-
Run the app:
flutter run
.
├── core # For all common and core files.
│ ├── error # contains all Exceptions and Failures classes
│ ├── presentation # Common presentation files
| │ └── blocs # Common blocs
| │ └── pages # Core pages
| │ └── widgets # Common widgets
│ └── route # Routes for navigation
│ └── theme # Theme data
│ └── usecases # Common usecases
|
├── data # Data Files of Feature 1
│ ├── datasources # DataSources Abstract Files and Implementations
│ │ └── feature # Feature 1 (for exp : Todo Feature)
│ │ └── sub-feat. # Sub feature
│ ├── models # Models for data
│ │ └── feature # Feature 1 (for exp : Todo Feature)
│ │ └── sub-feat. # Sub feature
│ └── repositories # Repositories Implementation Classes
│ └── feature # Feature 1 (for exp : Todo Feature)
│ └── sub-feat. # Sub feature
├── domain # Domain
│ ├── entities # Entities For Feature 1
│ │ └── feature # Feature 1 (for exp : Todo Feature)
│ │ └── sub-feat. # Sub feature
│ ├── usecases # Usecases of Feature 1
│ │ └── feature # Feature 1 (for exp : Todo Feature)
│ │ └── sub-feat. # Sub feature
│ └── repositories # Repositories Abstract Classes
│ └── feature # Feature 1 (for exp : Todo Feature)
│ └── sub-feat. # Sub feature
└── presentation # Presentation files
├── blocs # Blocs
│ └── feature # Feature 1 (for exp : Todo Feature)
│ └── sub-feat. # Sub feature
├── pages # Pages
│ └── feature # Feature 1 (for exp : Todo Feature)
│ └── sub-feat. # Sub feature
└── widgets # Widgets
└── feature # Feature 1 (for exp : Todo Feature)
└── sub-feat. # Sub feature
This app uses [Clean Architecture by Robert C Martin]
Image Source : ResoCoder
.
├── master # Contains the latest release
├── dev # Contains the latest development
├── feature1 # feature 1 created from dev
├── feature2 # feature 2 created from dev
├── feature3 # feature 3 created from dev
├── bugFix1 # bugfix 1 created from dev
├── bugFix2 # bugfix 1 created from dev
├── docChange1 # docChange 1 created from dev
├── docChange1 # docChange 2 created from dev
- Implement authentication functionality using a provided API endpoint for user sign-in.
- Handle user authentication using phone number and password.
- Securely store authentication tokens for subsequent API requests.
- Fetch restaurant branch data from a provided API endpoint based on the user's location.
- Display branch locations on a map with markers.
- Provide detailed information about branches when markers are clicked.
- Retrieve branch categories and products data from API endpoints.
- Display branch categories horizontally with images and names.
- Paginate and display products based on selected categories.
- Show product details including image, name, description, and price.
- Display detailed information about selected products.
- Include product image, name, description, and price.