Skip to content

Dinokojt7/izinto-teferi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

183 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Izinto - Flutter On-Demand Services App

A comprehensive Flutter application for on-demand home services, built with modern architecture patterns and cloud services.

๐Ÿ—๏ธ Architecture Overview

Data Flow Architecture

API Call: home_items_repo.dart โ†“ Processing: home_items_controller.dart โ†“ Parsing: popular_specialty_model.dart โ†“ State Update: home_items_controller.dart โ†“ UI Update: light_theme_home.dart โ†’ specialty_widget.dart

This project is a starting point for a Flutter application.

Tech Stack

Frontend: Flutter with Dart

State Management: Provider + GetX

Backend: Node.js/Express API hosted on Netlify

Database: Firebase (Firestore, Auth, Storage)

Authentication: Firebase Auth + Phone Verification

๐Ÿ“ฑ Core Features

Service Categories

๐Ÿงบ Laundry & Dry Cleaning

โ›ฝ Gas Refill & Exchange

๐Ÿพ Pet Care & Grooming

๐Ÿงน Home Cleaning Services

๐Ÿš— Mobile Car Wash

๐Ÿ‘Ÿ Sneaker & Blanket Cleaning

Key Functionalities

Real-time service booking

Live order tracking

Secure in-app payments

Multi-service cart management

Push notifications

Location-based services

๐Ÿ”ง Technical Implementation

Dependency Management

dependencies: get: ^4.6.1 # State management provider: ^6.0.4 # State management firebase_core: 4.2.0 # Firebase integration firebase_auth: 6.1.1 # Authentication cloud_firestore: 6.0.3 # Database http: ^1.5.0 # API calls shared_preferences: ^2.0.13 # Local storage

API Structure

Backend endpoints served via Netlify Functions:

/recommended - Featured services

/laundry - Laundry services

/gas-refill - Gas delivery

/pet-care - Pet services

/home-items - Main categories

And 10+ additional service endpoints

๐Ÿ—‚๏ธ Project Structure

lib/ โ”œโ”€โ”€ controllers/ # Business logic & state management โ”‚ โ”œโ”€โ”€ home_items_controller.dart โ”‚ โ”œโ”€โ”€ pet_care_specialty_controller.dart โ”‚ โ”œโ”€โ”€ gas_refill_specialty_controller.dart โ”‚ โ””โ”€โ”€ new_cart_controller.dart โ”œโ”€โ”€ helpers/data/ โ”‚ โ”œโ”€โ”€ repository/ # API data repositories โ”‚ โ”‚ โ”œโ”€โ”€ home_items_repo.dart โ”‚ โ”‚ โ”œโ”€โ”€ pet_care_specialty_repo.dart โ”‚ โ”‚ โ””โ”€โ”€ cart_repo.dart โ”‚ โ””โ”€โ”€ api/ โ”‚ โ””โ”€โ”€ api_client.dart # HTTP client configuration โ”œโ”€โ”€ models/ # Data models โ”‚ โ”œโ”€โ”€ new_specialty_model.dart โ”‚ โ”œโ”€โ”€ popular_specialty_model.dart โ”‚ โ””โ”€โ”€ new_cart_model.dart โ”œโ”€โ”€ live/view/ # UI screens โ”‚ โ”œโ”€โ”€ home_view/ โ”‚ โ”œโ”€โ”€ cart_view/ โ”‚ โ”œโ”€โ”€ auth_view/ โ”‚ โ””โ”€โ”€ checkout_view/ โ””โ”€โ”€ utils/ โ”œโ”€โ”€ dimensions.dart # Responsive sizing โ””โ”€โ”€ app_constants.dart # App constants & URLs

๐Ÿ”„ State Management Pattern

Provider + GetX Hybrid Approach

// Provider for app-wide state Provider( create: (_) => AuthService(), child: MyApp(), )

// GetX for feature-specific controllers Get.lazyPut(() => HomeItemsController(homeItemsRepo: Get.find())) Get.lazyPut(() => PetCareSpecialtyController(petCareRepo: Get.find()))

Controller Lifecycle

class PetCareSpecialtyController extends GetxController { final RxList _petCareSpecialtyList = [].obs; final RxBool _isLoaded = false.obs;

@override void onInit() { super.onInit(); getPetCareSpecialtyList(); }

Future getPetCareSpecialtyList() async { // API call implementation } }

๐ŸŒ Backend API Integration

Express.js Server on Netlify

// Netlify functions structure router.get("/pet-care", (req, res) => { res.send(importPetCare); });

router.get("/gas-refill", (req, res) => { res.send(importGasRefill); });

app.use("/.netlify/functions/api", router);

Flutter API Client

class ApiClient extends GetxService { final String appBaseUrl; final SharedPreferences sharedPreferences;

Future getData(String uri) async { try { Response response = await http.get( Uri.parse(appBaseUrl + uri), headers: _mainHeaders, ); return response; } catch (e) { return Response(statusCode: 1, statusText: e.toString()); } } }

๐Ÿ“Š Data Models

Specialty Service Model

class NewSpecialtyModel { int? id; String? name; String? introduction; List? price; List? size; String? img; String? type; String? material; String? provider;

// Size variant support String? selectedSize; bool? isSizeVariant; int? originalId; }

Cart Management

class NewCartModel { int? id; String? name; int? price; String? img; String? type; int? quantity; dynamic specialty; // Can be NewSpecialtyModel or Map }

๐ŸŽจ UI/UX Features

Responsive Design

Custom dimension system using Dimensions.dart

Adaptive layouts for various screen sizes

Consistent spacing and typography

Navigation Flow

Home โ†’ Category View โ†’ Service Details โ†’ Cart โ†’ Checkout โ†˜ Auth Flow โ†— โ†˜ Favorite โ†—

Custom Widgets

GenericWhiteContainer - Reusable card container

ServiceWidget - Service display component

CartProductView - Cart item display

SafePetCareWidget - Error-boundary wrapper

๐Ÿ”’ Authentication & Security

Firebase Auth Integration

Phone number authentication

User profile management

Secure session handling

Guest mode support

Data Security

Firebase Security Rules

Input validation

Error boundary implementation

Safe controller access patterns

๐Ÿš€ Performance Optimizations

Lazy Loading

Get.lazyPut(() => HomeItemsController(homeItemsRepo: Get.find()));

Environment Setup

environment: sdk: ">=3.0.0 <4.0.0"

flutter_native_splash: color: "#ffffff" image: assets/splash/splash.jpg

๐Ÿ”ง Development Setup

Prerequisites

Flutter SDK 3.0+

Firebase project configuration

Node.js for backend development

Installation

Clone the repository

Run flutter pub get

Configure Firebase

Set up environment variables

Run flutter run

๐Ÿ“ Key Features Implementation

Multi-Service Cart

Support for different service types

Size variant handling

Quantity management

Price calculation

Real-time Updates

Firebase listeners

State synchronization

Offline capability with local storage

Error Handling

Network error recovery

Controller lifecycle management

User-friendly error messages

๐Ÿ”ฎ Future Enhancements

Advanced analytics integration

Advanced payment options

Built with Flutter, Firebase, and modern development practices for reliable on-demand service delivery.

About

A Flutter android and ios mobile app, for customers to connect with services around their area.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages