HandyHive Documentation

Complete setup and deployment guide for your multi-platform on-demand home-services application.

v8.4 - Flutter + Firebase
💻
Platform
Android, iOS & Web
🔧
Framework
Flutter + Firebase
📧
Support Email
📞
WhatsApp

Key Features

📱

Multi-Platform

Build for Android, iOS, and Web from a single Flutter codebase.

🔐

Authentication

Phone, Google, and Apple sign-in powered by Firebase Authentication.

🗺

Location & Zones

Google Maps integration with admin-defined service zones, polygon-based area drawing, and Places autocomplete search.

🔔

Push Notifications

Real-time notifications via Firebase Cloud Messaging (FCM) for booking, status, and chat events on all platforms.

Admin Panel

Full-featured Flutter web dashboard for managing bookings, users, providers, workers, services, payouts, subscriptions, and the public landing page.

💰

Subscriptions & Payouts

Provider subscription plans with automated billing, plus a payout request workflow with admin approval and history.

🌐

Public Landing Page

Standalone HTML / CSS / JS marketing site whose content (hero, features, testimonials, FAQ, app links) is fully editable from the admin panel.

Serverless Backend

Firebase Cloud Functions, Firestore and Storage for a scalable, serverless architecture — no servers to maintain.

What's Included

The HandyHive monorepo bundles every piece you need to launch an on-demand home-services platform:

Before starting the setup, make sure you have the following tools and accounts ready.

Required Software

Software Version Purpose
Flutter SDK Latest Stable Framework for building the app
Dart SDK Bundled with Flutter Programming language for Flutter
Android Studio Latest IDE & Android SDK/Emulator
Xcode (macOS only) Latest iOS development & simulator
Node.js & npm LTS version Firebase CLI & Cloud Functions
Firebase CLI Latest Deploy and manage Firebase services
Git Latest Version control
VS Code / Android Studio Latest Code editor with Flutter/Dart plugins

Required Accounts

Important:
  • Some Firebase features (Cloud Functions, phone authentication, etc.) require the Blaze plan (pay-as-you-go). The free Spark plan has limitations.
  • Ensure your system meets Flutter's minimum system requirements for your OS.

Follow these steps in order for a smooth setup experience. Each step links to the detailed section below.

Estimated Setup Time

Following this guide carefully, the complete setup typically takes 1-2 hours depending on your familiarity with Flutter and Firebase.

To set up Flutter on both Windows and macOS, follow these step-by-step instructions.

Setting Up Flutter on Windows

System Requirements
Download Flutter SDK
Add Flutter to System Path
Verify Installation
flutter doctor
Install Android Studio
Set Up an Android Emulator
Final Setup Check
flutter doctor

Setting Up Flutter on macOS

System Requirements
Download Flutter SDK
Add Flutter to PATH
export PATH="$PATH:$HOME/development/flutter/bin"
Install Xcode
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
Install CocoaPods
sudo gem install cocoapods
Verify Installation
flutter doctor

HandyHive supports three authentication methods. Enable each one in the Firebase Console.

1. Enable Phone Authentication

2. Enable Google Sign-In

3. Enable Apple Sign-In

Note:

Apple Sign-In requires an active Apple Developer account ($99/year). It is mandatory for iOS apps that offer third-party login options.

Import the pre-built database collections to quickly populate your Firestore database with the required structure.

1. Install Node.js and npm

node -v
npm -v

2. Extract Database Files

3. Open Terminal or Command Prompt

cd path/to/extracted/folder

4. Generate Firebase Service Account Key

🔎 Navigation Path: Firebase Console → ⚙ (Gear Icon) → Project Settings → Service accounts tab → Firebase Admin SDK → Node.js → Generate new private key

5. Prepare config.json

6. Run Import Command

npm install firestore-export-import
node import
Success:

Once the import completes, your Firestore database will have all the required collections and documents.

Important Notes:
  • Ensure you are inside the correct project directory before running any Firebase CLI commands.
  • You must have sufficient permissions (e.g., Editor or Owner role) in your Firebase project to deploy indexes.
  • Once deployed, Firestore queries will benefit from better performance as they'll use the optimized indexes.

1. Navigate to Your Firebase Project Folder

cd path/to/firestore_index
Step A: Run firebase init
firebase init
Terminal Output:
You're about to initialize a Firebase project in this directory:
  C:\path\to\your\firestore_index

? Are you ready to proceed? (Y/n)
Step B: Select Firebase Features
Select this option:
(*) Firestore: Configure security rules and indexes files for Firestore

Use arrow keys to move, Space to select, Enter to confirm.

Step C: Choose Firebase Project
Step D: Set Up Firestore Rules and Indexes
Step E: Deploy Firestore Indexes
firebase deploy --only firestore:indexes
Deployment Complete
Expected Terminal Output:
=== Deploying to 'your-project-id'...

i  firestore: reading indexes from firestore.indexes.json...
i  cloud.firestore: checking firestore.rules for compilation errors...
+  cloud.firestore: rules file firestore.rules compiled successfully
i  firestore: deploying indexes...
+  firestore: deployed indexes in firestore.indexes.json successfully

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/your-project-id/overview

1. Install Firebase CLI Tools

npm install -g firebase-tools
firebase --version

2. Firebase Project Setup

Log in to Firebase:
firebase login
Important:
  • Run all commands below from your Cloud Functions project directory (e.g., your-project/functions/).
Initialize Firebase (if not already initialized):
firebase init
During this process, follow these prompts:
Firebase Init Prompts for Cloud Functions:
? Are you ready to proceed? Yes
? Which Firebase features do you want to set up?
  (*) Functions: Configure a Cloud Functions directory and its files

=== Project Setup
? Please select an option: Use an existing project
? Select a default Firebase project: your-project-id

=== Functions Setup
? What language would you like to use? JavaScript
? Do you want to use ESLint? No
? Do you want to install dependencies with npm now? Yes
+  Wrote functions/package.json
+  Wrote functions/index.js
+  Wrote functions/.gitignore
+  Wrote configuration info to firebase.json
+  Wrote project information to .firebaserc

+  Firebase initialization complete!

3. Install Function Dependencies

cd functions
npm install

4. Deploy Your Functions

firebase deploy --only functions
Expected Terminal Output:
=== Deploying to 'your-project-id'...

i  deploying functions
i  functions: preparing codebase default for deployment...
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
+  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: Loading and analyzing source code...

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/your-project-id/overview
Tip:

If deployment fails, check for syntax errors in your function files and ensure all dependencies are correctly installed. Also verify you are on the Blaze plan.

Here you will find all the setup guides for Admin Panel configuration.

Important Notes:
  • Some Firebase features require the Blaze plan.
  • If you are on the free Spark plan, please upgrade to Blaze Plan for full functionality.

Update HTML Title

<head>
  ...
  <title>Your New App Name</title>
  ...
</head>

1. Install Firebase CLI Tools

npm install -g firebase-tools

2. Authenticate Firebase CLI

firebase login

3. Create a Firebase Project

firebase projects:create

OR

1 Add Firebase to your Flutter App:
  • On the Firebase Project Overview page, you will see the text "Get started by adding Firebase to your app" with platform icons (iOS, Android, Web, Unity, Flutter).
  • Click the Flutter icon (the last icon, looks like a diamond shape).
  • Firebase will show the "Add Firebase to your Flutter app" wizard with two commands.
2 Run the FlutterFire CLI commands shown in the wizard:
$ dart pub global activate flutterfire_cli
$ flutterfire configure --project=YOUR_PROJECT_ID

This automatically registers your per-platform apps with Firebase and adds a lib/firebase_options.dart configuration file to your Flutter project.

  • After running both commands, click Next in the Firebase wizard.
  • Then click Continue to console.

4. Initialize Firebase in Your Flutter App

dart pub global activate flutterfire_cli
flutterfire configure --project=YOUR_PROJECT_ID
Platform Selection (Admin Panel = Web only):
? Which platforms should your configuration support?
  ( ) android
  ( ) ios
  ( ) macos
  (*) web        <-- Select ONLY this
  ( ) windows

Use arrow keys and Space to select web only. Press Enter to confirm.

1. Generate a Google Maps API Key

2. Add API Key to Flutter Web

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>

Flutter Web

For Flutter web, the favicon represents your application in the browser tab.

Replace Favicon:
Tip:

You can use online tools like favicon.io or realfavicongenerator.net to generate favicons from your logo in all required sizes.

CORS (Cross-Origin Resource Sharing) must be configured on your Firebase Storage bucket to allow the web panel to load images and files.

1. Open the Google Cloud Console

2. Select Your Project

3. Activate Google Cloud Shell

Welcome to Cloud Shell! Type "help" to get started.
Your Cloud Platform project in this session is set to your-project-id.
Use 'gcloud config set project [PROJECT_ID]' to change to a different project.

4. Create a CORS Configuration File

echo '[{ "origin": ["*"], "method": ["GET"], "maxAgeSeconds": 3600, "responseHeader": ["Content-Type"] }]' > cors-config.json

5. Get Your Storage Bucket Name

6. Apply the CORS Configuration to Your Bucket

gsutil cors set cors-config.json gs://YOUR_BUCKET_NAME
Security Note:
  • The "origin": ["*"] setting allows requests from any domain. For production, consider restricting this to your specific domain for better security.
Note:

Run all commands below from the project folder in your Android Studio terminal or system terminal.

1. Create the Build for Server Upload

flutter clean
flutter pub get
flutter build web --release
Compiling lib/main.dart for the Web...
✓ Built build\web                                          19.5s
build/web/
Note:

Run all commands below from the project folder in your terminal.

1. Build and Deploy Using Firebase Hosting

npm install -g firebase-tools
firebase login
firebase init
Follow the Firebase Init prompts:
? Are you ready to proceed? (Y/n) y

? Which Firebase features do you want to set up?
  (*) Hosting: Configure files for Firebase Hosting
      and (optionally) set up GitHub Action deploys

=== Project Setup
? Please select an option: Use an existing project
i  Using project your-project-id

=== Hosting Setup
? What do you want to use as your public directory? build/web
? Configure as a single-page app (rewrite all urls to /index.html)? Yes
? Set up automatic builds and deploys with GitHub? No
flutter build web --release
firebase deploy
Expected Deployment Output:
=== Deploying to 'handyhive-3d7fa'...

i  deploying firestore, hosting
i  hosting[handyhive-3d7fa]: beginning deploy...
i  hosting[handyhive-3d7fa]: found 516 files in build/web
+  hosting[handyhive-3d7fa]: file upload complete
+  hosting[handyhive-3d7fa]: version finalized
+  hosting[handyhive-3d7fa]: release complete

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/handyhive-3d7fa/overview
Hosting URL: https://handyhive-3d7fa.web.app
Success:

Your Admin Panel is now live! Copy the Hosting URL shown in the output (e.g., https://handyhive-3d7fa.web.app) to access your deployed admin panel.

The same setup steps below apply to all three Flutter mobile apps — Customer (handyhive_customer/), Partner (handyhive_partner/) and Worker (handyhive_worker/) — for both Android and iOS.

Changing the package name of a Flutter project involves updating multiple files and configurations for both Android and iOS platforms.

Android

Update the applicationId in build.gradle:
defaultConfig {
    applicationId "com.new.package.name"
}
Rename Java Package Directories:
Update AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.new.package.name">
</manifest>
Update Other Manifest Files:

iOS

Update PRODUCT_BUNDLE_IDENTIFIER in Xcode:
Update Bundle Identifier in Info.plist:

Prerequisites

Android

Update AndroidManifest.xml:
<application
    android:name="${applicationName}"
    android:icon="@mipmap/ic_launcher"
    android:label="Your App Name"
    ...>
</application>
Update strings.xml:
<string name="app_name">Your New App Name</string>

iOS

Update Info.plist:
<key>CFBundleName</key>
<string>Your New App Name</string>
Update Display Name in Xcode:
Note:

This setup applies to all four Flutter projects — the Admin Panel (web) and the three mobile apps (Customer, Partner, Worker). The steps are identical — just run them once inside each project folder, picking the appropriate platforms in step 4.

1. Install Firebase CLI Tools

npm install -g firebase-tools

2. Authenticate Firebase CLI

firebase login

3. Create a Firebase Project

firebase projects:create

OR

On the Project Overview page, click the Flutter icon under "Get started by adding Firebase to your app". The wizard will show two commands to run:
$ dart pub global activate flutterfire_cli
$ flutterfire configure --project=YOUR_PROJECT_ID

Run both in your project terminal. Then click NextContinue to console.

4. Initialize Firebase in Your Flutter App

dart pub global activate flutterfire_cli
flutterfire configure --project=YOUR_PROJECT_ID
Platform Selection — pick per project:
? Which platforms should your configuration support?
  (*) android      <-- Customer / Partner / Worker apps
  (*) ios          <-- Customer / Partner / Worker apps
  ( ) macos
  (*) web          <-- Admin Panel only
  ( ) windows

Mobile apps (handyhive_customer, handyhive_partner, handyhive_worker): select android + ios.
Admin panel (admin_panel): select web only.

Firebase configuration file lib/firebase_options.dart generated successfully
with the following Firebase apps:

Platform  Firebase App Id
android   1:XXXXXXXXX:android:XXXXXXXXX
ios       1:XXXXXXXXX:ios:XXXXXXXXX

1. Create a Firebase Project

2. Add Your Flutter App to Firebase

Android Setup:
iOS Setup:

3. Add Firebase Packages

dependencies:
  firebase_core: ^latest
  firebase_auth: ^latest
  cloud_firestore: ^latest
flutter pub get

4. Configure DefaultFirebaseOptions

flutterfire configure

5. Initialize Firebase in main.dart

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(MyApp());
}

1. Generate a Google Maps API Key

2. Add API Key - Android

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_API_KEY"/>

3. Add API Key - iOS

import GoogleMaps
GMSServices.provideAPIKey("YOUR_API_KEY")
Security Tip:
  • Restrict your API key in the Google Cloud Console to specific apps (using package name/bundle ID) and specific APIs to prevent unauthorized usage.

SHA keys are required for Firebase services like Google Sign-In and Phone Authentication on Android.

1. Generate SHA Keys

For Windows (Debug Keystore):
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
For macOS/Linux (Debug Keystore):
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

2. Add SHA Keys to Firebase Console

🔎 Navigation Path: Firebase Console → ⚙ Gear Icon → Project Settings → General tab → Your apps → Android app → Add Fingerprint
Important Notes:
  • For release builds, use your custom release keystore (not the default debug one).
  • Keep your keystore file secure and never expose it publicly.
  • You must regenerate SHA keys if you change your signing configuration or keystore.
Note:

Run all commands from your project folder in the terminal.

1. Generate APK (for direct installation)

flutter clean
flutter pub get
flutter build apk --release
build/app/outputs/flutter-apk/app-release.apk

2. Generate AAB (for Google Play Store)

flutter clean
flutter pub get
flutter build appbundle --release
build/app/outputs/bundle/release/app-release.aab
Difference between APK and AAB:
  • APK: Universal package for direct installation or testing on devices.
  • AAB: Optimized format required by Google Play Store. It generates smaller, device-specific APKs automatically.

Using Command-Line Interface (CLI)

Open Terminal and navigate to your project:
cd path/to/your_flutter_project
Run the Flutter App:
flutter run

Using Android Studio

Using Visual Studio Code

Useful Flutter Commands:
  • flutter devices - List all connected devices
  • flutter run -d chrome - Run on Chrome (web)
  • flutter run -d <device_id> - Run on a specific device
  • flutter run --release - Run in release mode

1. Get the FCM Sender ID

🔎 Navigation Path: ⚙ Gear Icon → Project Settings → Cloud Messaging tab → Sender ID

2. Get the Web Client ID (for Google Sign-In)

🔎 Navigation Path: Authentication → Sign-in method → Google (edit) → Web SDK configuration → Web client ID

3. Get the Firebase Service Account JSON File

🔎 Navigation Path: ⚙ Gear Icon → Project Settings → Service accounts tab → Generate new private key

4. Add All Keys in the Admin Panel

Admin Panel → Settings → Notification Settings:
Field What to Enter Stored in Firestore as
FCM Server Key The Sender ID from Cloud Messaging tab (Step 1) notification_server_key
Google Client ID The Web client ID from Authentication → Google (Step 2) googleClientId
Service Account JSON Upload the JSON file generated in Step 3 jsonFileURL
Note — where each setting lives in the Admin Panel:

Settings → Notification Settings: FCM Server Key, Service Account JSON, Google Client ID (this page).
Settings → General Settings: Google Maps key, Support URL, App version — configured separately.

HandyHive ships with a standalone public marketing site that lives in the landing_page/ folder at the repo root (sibling of admin_panel/). Every piece of copy and imagery is editable from the admin panel under Content → Landing Page and is rendered from Firestore at runtime — no redeploy needed when content changes.

Folder Structure

HandyHive/
  admin_panel/                 Flutter web admin (the "Landing Page" editor lives here)
  landing_page/                Plain HTML/CSS/JS marketing site (this section)
    index.html                 Markup skeleton with data-bind attributes
    styles.css                 Theme tokens (purple #AD5CFF) + responsive layout
    config.js                  Firebase Web config (edit this for your project)
    app.js                     Listens to settings/landing_page and renders the page
    README.md                  Quick start notes

1. Update Firebase Credentials

// landing_page/config.js
window.HH_FIREBASE_CONFIG = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID",
  measurementId: "YOUR_MEASUREMENT_ID",
};

2. Get Firebase Credentials

No Web App shown?

If no Web App is listed, click "Add app" → select the Web icon (</>) → enter a nickname → click "Register app". The firebaseConfig will then appear.

3. Firestore Security Rule

The landing page reads settings/landing_page without authentication, so that document needs to be publicly readable. Add this rule to your firestore.rules (write access stays admin-only):

match /databases/{database}/documents {
  match /settings/landing_page {
    allow read: if true;                       // public can read
    allow write: if request.auth != null;      // only authenticated admins write
  }
}

4. Edit Content from Admin Panel

Sign in to the admin panel and navigate to Content → Landing Page. The editor is split into nine sections:

Click Save. Because the landing page subscribes to Firestore with onSnapshot, any open browser tab updates live — visitors do not even need to reload.

5. Image Uploads

The Logo, Favicon, Hero background, App preview, and Testimonial avatars are all real image pickers. Picking a file uploads it to Firebase Storage and stores the resulting download URL on the Firestore document. Files land in these folders:

Make sure your storage.rules allows authenticated admins to write to these paths.

6. Running Locally

The landing_page/ folder is a plain static site — no build step.

  1. Double-click index.html — the browser opens via file://. The page renders with its built-in default copy if the browser blocks file:// network requests.
  2. Serve it over HTTP (recommended — required for Firebase to load):
    cd landing_page
    python3 -m http.server 8080
    # or
    npx serve .
    Then open http://localhost:8080/.

Open DevTools → Console. Any errors from the Firestore listener appear tagged [LandingPage] — use them to debug missing fields or permission denied errors.

7. Deploying to Production

Deploy the folder to any static host:

Option A — Firebase Hosting (recommended)
npm install -g firebase-tools
cd landing_page
firebase login
firebase init hosting
# - Use an existing project → your HandyHive Firebase project
# - Public directory: .  (this current folder)
# - Configure as SPA? → No
# - Set up automatic builds? → No
# - Overwrite index.html? → No

firebase deploy --only hosting

You'll receive a live URL like https://your-project.web.app.

Option B — Any other static host

Upload the whole landing_page/ folder to Netlify, Vercel, GitHub Pages, AWS S3 + CloudFront, or your own server. No build step required.

8. Troubleshooting

Page shows the default copy instead of my admin-panel content
Image uploads show "Upload failed"
Logo or favicon doesn't update on the live site
Play Store / App Store buttons go nowhere
Setup Complete: edit landing_page/config.js → save content from Content → Landing Page → deploy. Your landing page is live and fully admin-driven.

Here are solutions to common issues you might encounter during setup.

Flutter Issues

"flutter" is not recognized as a command
flutter doctor shows issues

Firebase Issues

Firebase CLI not found
Permission denied during firebase deploy
Cloud Functions deployment fails

Google Maps Issues

Map shows grey/blank

Build Issues

Build fails with Gradle errors
iOS build fails
Q: Do I need a Mac to build the iOS app?

Yes. Xcode is required for building iOS apps, and Xcode only runs on macOS. You can develop and test the Android and Web versions on Windows or Linux.

Q: Which Firebase plan do I need?

The Blaze plan (pay-as-you-go) is recommended. Cloud Functions, phone authentication, and some other features are not available on the free Spark plan. The Blaze plan still includes a free usage tier.

Q: Can I use my own backend instead of Firebase?

HandyHive is designed to work with Firebase. Using a different backend would require significant modifications to the codebase.

Q: How do I update the app after making changes?

After making code changes, rebuild the app using the appropriate build commands (flutter build apk, flutter build web, etc.) and redeploy.

Q: The app crashes on startup. What should I check?
Q: How do I contact support?
Version 8.4 11 June 2026 Latest
  • Mobile Number Validation — Added proper validation for mobile number fields across the apps.
  • Chat Seen Status Fixed — Corrected the "seen" indicator behaviour in chat conversations.
  • Language Selection Fixed — Resolved the first-time language selection not applying correctly.
  • App Theme Selection Fixed — Fixed the app theme not being applied/selected properly.
  • Booking Details Phone Format — Corrected the customer phone number format to include the country code on the booking details screen.
  • Dynamic Booking OTP Verification — Made the booking OTP verification flow admin-configurable; when disabled, Start and Complete actions run directly without an OTP dialog.
  • Extra Charge Payment Fixed — Resolved the payment issue that occurred when an extra charge amount was applied to a booking.
  • UI Improvements — Fixed various UI-related issues for a more polished experience.
Version 8.3 26 April 2026
  • Revamped Admin Panel with a more modern and attractive UI design.
  • Updated project to support the latest Flutter version (Flutter 3.41.0).
  • Fixed known bugs to improve overall stability.
  • Enhanced app performance and responsiveness.
  • Upgraded dependencies to the latest compatible versions.
Version 8.2 28 January 2026
  • Minor Issue Fixes — Resolved several UI and functional bugs for improved stability.
Version 8.1 08 November 2025
  • Zone Feature Implemented — Added zone-based operations for better location handling.
  • Minor Issue Fixes — Resolved several UI and functional bugs for improved stability.
  • Enhanced Searching — Improved search functionality for faster and more accurate results.
  • Subscription Issue Fixed — Corrected issues with subscription plan handling and validation.
  • Flutter Updated — Upgraded project to support the latest Flutter version for better performance and compatibility.
Version 8.0 14 April 2025
  • Implemented automatic cancellation for unaccepted service requests after a set duration. If the order was paid online, the amount is refunded automatically upon cancellation.
  • Added report generation functionality for the following modules: Orders, Workers, Job Requests, Users, Subscriptions, Services, Providers, and Payouts.
  • Integrated Subscription module for Providers, enabling subscription-based access and management.
Version 7.0 12 September 2024
  • Added a new feature allowing users to provide services at the store.
  • Implemented a robust support system for users, enabling easy issue reporting and faster response times.
  • Updated all Flutter dependencies to the latest compatible versions.
  • Application now supports and is fully compatible with Flutter version 3.22.3.
  • Resolved various minor bugs and performance issues for a smoother user experience.
Version 6.0 29 June 2024
  • Added animations.
  • Implemented pagination.
  • Integrated search functionality in the admin panel.
  • Added new payment gateways: Paystack, Flutterwave, MercadoPago and PayFast.
  • Updated UI.
  • Fixed minor bugs.
  • Dependencies set to their latest versions.
  • Updated to support the latest Flutter version 3.22.2.
Version 5.0 14 April 2024
  • Added OTP feature for enhanced security.
  • Implemented hourly-based service options.
  • Introduced a “Hold Reason” feature for better transaction tracking.
  • Conducted minor bug fixes and optimizations.
Version 4.0 08 April 2024
  • Implemented dynamic color scheme functionality.
  • Enabled the ability to save multiple addresses within the customer application.
  • Updated the user interface of the admin panel for enhanced usability.
  • Implemented automatic refund to the user's wallet in case of booking cancellation.
  • Enabled access to certain features for customers without requiring them to log in.
  • Conducted minor bug fixes to enhance the overall stability and performance of the application.
Version 3.0 22 February 2024
  • Monthly earnings cap — all applications and admin sites can change their currency symbol.
  • Added search capabilities to the admin sites for VerifyDocuments, Users, Providers, Workers, OrderHistory and JobRequest History.
  • Changed the dependency of flutter_html to flutter_widget_from_html for all applications.
  • Set up partner account deletion and partner data deletion.
  • Added the ability to filter by date on order histories, job requests and history admin sites.
  • Added a partner application with date filter capabilities.
  • Created a job request information page.
Version 2.0 25 January 2024
  • Fixed document verification issue.
  • Resolved home screen load issue.
  • Fixed location permission issue.
  • Upgraded to the latest Flutter version.
  • Updated project dependencies.
  • Minor bug fixes.
Version 1.0 17 January 2024
  • Initial upload.