Skip to content

Repository files navigation

icon_tech_task

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.

Table of Contents

Introduction

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.

Features

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.

Getting Started

Prerequisites

Make sure you have Flutter and Dart installed on your machine. If not, follow the official Flutter installation guide.

Installation

  1. Clone the repository:

    git clone https://github.com/karar0120/icon-tech-task.git
    cd icon-tech-app-flutter
  2. Install dependencies:

    flutter pub get
  3. Run the app:

    flutter run

Project Structure

.
├── 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

Architecture

This app uses [Clean Architecture by Robert C Martin]

Image Source : ResoCoder

Branches

.
├── 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

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.

📱 Screens

WhatsApp Image 2024-05-02 at 02 13 54_5a28d371 WhatsApp Image 2024-05-02 at 02 13 50_f636f5d7 WhatsApp Image 2024-05-02 at 02 13 53_c8788d6c

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.

📱 Screens

WhatsApp Image 2024-05-02 at 02 13 53_9eda1e38 WhatsApp Image 2024-05-02 at 02 13 53_25fcef50 WhatsApp Image 2024-05-02 at 02 13 57_d9a2decf WhatsApp Image 2024-05-02 at 02 13 57_6904269a WhatsApp Image 2024-05-02 at 02 13 50_b0e39a10 WhatsApp Image 2024-05-02 at 02 13 53_01d9e7bc

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.

📱 Screens

WhatsApp Image 2024-05-02 at 02 13 55_dea9d25d WhatsApp Image 2024-05-02 at 02 13 57_d8d40c62 WhatsApp Image 2024-05-02 at 02 13 54_29d197e4 WhatsApp Image 2024-05-02 at 02 13 56_003ef76b WhatsApp Image 2024-05-02 at 02 13 50_dedc5c16 WhatsApp Image 2024-05-02 at 02 13 54_b0e6bba7 WhatsApp Image 2024-05-02 at 02 13 55_53994f74

Product Details Screen:

  • Display detailed information about selected products.
  • Include product image, name, description, and price.

📱 Screens

WhatsApp Image 2024-05-02 at 02 13 55_17330833 WhatsApp Image 2024-05-02 at 02 13 50_682d40e9 WhatsApp Image 2024-05-02 at 02 13 56_d5f57bab WhatsApp Image 2024-05-02 at 02 13 55_54984117 WhatsApp Image 2024-05-02 at 02 13 56_328a7ff5 WhatsApp Image 2024-05-02 at 02 13 56_719960c4

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages