A modern Flutter-based e-commerce mobile application for browsing, discovering, and purchasing Apple products.
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.
- 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
- User registration
- User login
- Authentication state management
- Persistent authentication token
- Logout functionality
- View product comments
- Product-specific comment management
- API-based comment handling
- Online payment integration
- ZarinPal payment gateway
- Payment handling and callback support
- REST API integration
- Network image caching
- Deep linking
- Local data persistence
- Loading animations
- Custom fonts and UI components
- Responsive Material Design interface
| 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 |
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 β
βββββββββββββββββ
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
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.
GetIt is used to register and provide application dependencies throughout the project.
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
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
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.
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.
The application includes deep linking functionality using Uni Links.
This allows the application to handle links and navigate users to specific application flows.
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
Make sure you have the following installed:
- Flutter SDK
- Dart SDK
- Android Studio or VS Code
- Git
Clone the repository:
git clone https://github.com/CodeminTech/apple_shop-flutter.gitNavigate to the project directory:
cd apple_shop-flutterInstall dependencies:
flutter pub getRun the application:
flutter runThe application is built with Flutter and can be configured for:
- π€ Android
- π iOS
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
CodemonTech
Flutter Developer | Mobile Application Developer
π GitHub: GitHub: https://github.com/CodeminTech



