Skip to content

About

🍎 Flutter e-commerce mobile application for browsing Apple products, authentication, product categories, shopping cart, comments, online payment, and REST API integration.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

13 Commits

Folders and files

Repository files navigation

🍎 Apple Shop

A modern Flutter-based e-commerce mobile application for browsing, discovering, and purchasing Apple products.


πŸ“± Overview

Apple Shop is a Flutter-based e-commerce mobile application designed for browsing and purchasing Apple products through a modern and responsive mobile interface.

The application includes product discovery, category browsing, authentication, product details, comments, shopping cart management, online payment, and API-based data communication.

The project was built with a modular architecture that separates business logic, data access, repositories, and presentation layers.


✨ Features

πŸ›οΈ Shopping & Products

  • Browse Apple products
  • View product categories
  • Explore products by category
  • View detailed product information
  • Display product images and variants
  • Product properties and specifications
  • Add products to shopping cart
  • Manage cart items and quantities

πŸ” Authentication

  • User registration
  • User login
  • Authentication state management
  • Persistent authentication token
  • Logout functionality

πŸ’¬ Comments

  • View product comments
  • Product-specific comment management
  • API-based comment handling

πŸ’³ Payment

  • Online payment integration
  • ZarinPal payment gateway
  • Payment handling and callback support

πŸ”— Additional Features

  • REST API integration
  • Network image caching
  • Deep linking
  • Local data persistence
  • Loading animations
  • Custom fonts and UI components
  • Responsive Material Design interface

πŸ› οΈ Technologies & Packages

Technology Usage
🐦 Flutter & Dart Cross-platform mobile application development
πŸ”„ BLoC / Flutter BLoC State management and business logic
🌐 Dio REST API and HTTP communication
🧩 Dartz Functional error handling with Either
πŸ”Œ GetIt Dependency injection
πŸ’Ύ Hive Local data storage
πŸ” SharedPreferences Local authentication/session data
πŸ’³ ZarinPal Online payment integration
πŸ”— Uni Links Deep linking
πŸ–ΌοΈ Cached Network Image Network image caching
πŸ”’ Intl Number and date formatting
🎨 Material Design Application UI
πŸ”€ Gilroy / Shabnam / Dana Custom typography

πŸ—οΈ Architecture

The application follows a modular structure that separates the main responsibilities of the application into different layers.

The general data flow is:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   UI / Screensβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     BLoC      β”‚
β”‚ State Manager β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Repository   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Data Source  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   REST API    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”„ State Management

BLoC is used to separate business logic from the presentation layer.

The project contains dedicated BLoCs for major application features, including:

  • Authentication
  • Home
  • Categories
  • Category Products
  • Products
  • Product Comments
  • Shopping Basket

πŸ—‚οΈ Data Layer

The data layer is divided into:

  • Data Sources β€” API communication
  • Repositories β€” Data abstraction and business-facing access
  • Models β€” Application data structures

This structure makes the application easier to maintain and extend.

πŸ”Œ Dependency Injection

GetIt is used to register and provide application dependencies throughout the project.


πŸ“‚ Project Structure

lib/
β”œβ”€β”€ bloc/
β”‚   β”œβ”€β”€ authentication/
β”‚   β”œβ”€β”€ basket/
β”‚   β”œβ”€β”€ category/
β”‚   β”œβ”€β”€ categoryProduct/
β”‚   β”œβ”€β”€ comments/
β”‚   β”œβ”€β”€ home/
β”‚   └── product/
β”‚
β”œβ”€β”€ constants/
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ datasource/
β”‚   β”œβ”€β”€ model/
β”‚   └── repository/
β”‚
β”œβ”€β”€ di/
β”‚   └── di.dart
β”‚
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ card_screen.dart
β”‚   β”œβ”€β”€ category_screen.dart
β”‚   β”œβ”€β”€ dashbord_screen.dart
β”‚   β”œβ”€β”€ home_screen.dart
β”‚   β”œβ”€β”€ login_screen.dart
β”‚   β”œβ”€β”€ product_detail_screen.dart
β”‚   β”œβ”€β”€ product_list_screen.dart
β”‚   β”œβ”€β”€ profile_screen.dart
β”‚   └── register_screen.dart
β”‚
β”œβ”€β”€ util/
β”‚   β”œβ”€β”€ api_exeption.dart
β”‚   β”œβ”€β”€ auth_manager.dart
β”‚   β”œβ”€β”€ dio_provider.dart
β”‚   β”œβ”€β”€ payment_handler.dart
β”‚   β”œβ”€β”€ url_handler.dart
β”‚   └── extentions/
β”‚
└── widgets/
    β”œβ”€β”€ banner_slider.dart
    β”œβ”€β”€ cached_image.dart
    β”œβ”€β”€ category_icon_item_chip.dart
    β”œβ”€β”€ loading_animation.dart
    └── product_item.dart

πŸ“Έ Screenshots

🏠 Home

πŸ›οΈ Category

πŸ“¦ Product Details

πŸ›’ Shopping Cart


🌐 API Integration

The application communicates with backend services through REST APIs.

Dio is used as the HTTP client, while dedicated data sources and repositories handle communication and data access.

The API layer is responsible for features such as:

  • Authentication
  • Product data
  • Categories
  • Product details
  • Product variants
  • Shopping basket
  • Comments
  • Product images

πŸ’Ύ Local Storage

The application uses Hive for local data persistence.

The shopping basket is stored locally using Hive, allowing cart data to remain available between application sessions.

SharedPreferences is also used for storing authentication-related local data.


πŸ’³ Online Payment

The project integrates the ZarinPal payment gateway to provide online payment functionality.

Payment-related logic is separated into a dedicated utility layer to keep payment handling independent from the main UI components.


πŸ”— Deep Linking

The application includes deep linking functionality using Uni Links.

This allows the application to handle links and navigate users to specific application flows.


🎨 UI & Design

The application uses a custom visual system with:

  • Material Design
  • Custom color definitions
  • Custom typography
  • Gilroy fonts
  • Shabnam fonts
  • Dana font
  • Reusable UI components
  • Product cards
  • Category chips
  • Banner slider
  • Loading animations
  • Cached network images

πŸš€ Getting Started

Prerequisites

Make sure you have the following installed:

  • Flutter SDK
  • Dart SDK
  • Android Studio or VS Code
  • Git

Installation

Clone the repository:

git clone https://github.com/CodeminTech/apple_shop-flutter.git

Navigate to the project directory:

cd apple_shop-flutter

Install dependencies:

flutter pub get

Run the application:

flutter run

πŸ“± Supported Platforms

The application is built with Flutter and can be configured for:

  • πŸ€– Android
  • 🍎 iOS

🎯 Project Purpose

Apple Shop was developed to demonstrate the implementation of a real-world e-commerce mobile application using Flutter.

The project focuses on:

  • Modular application architecture
  • BLoC state management
  • REST API integration
  • Authentication
  • Product and category management
  • Shopping cart functionality
  • Local data persistence
  • Online payment
  • Deep linking
  • Reusable UI components

πŸ‘©β€πŸ’» Developer

CodemonTech

Flutter Developer | Mobile Application Developer

πŸ”— GitHub: GitHub: https://github.com/CodeminTech

About

🍎 Flutter e-commerce mobile application for browsing Apple products, authentication, product categories, shopping cart, comments, online payment, and REST API integration.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages