Skip to content

Vithu-29/Orix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

64 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


πŸš€ OrixOrix – Feature-Based Flutter Application

OrixOrix is a robust, scalable mobile application built with Flutter, following a Feature-Based Architecture. It uses GetX for state management, routing, and dependency injection, Firebase for authentication and real-time database, and Supabase for high-performance image storage.


✨ Features

πŸ” Authentication

  • Email & Password authentication (Firebase Auth)
  • Google Sign-In support
  • Secure session handling with GetX

πŸ”„ Real-Time Database

  • Cloud Firestore integration
  • Live data synchronization

πŸ–Ό Image Storage

  • Supabase Storage for fast image uploads & retrieval
  • Cached network images for performance

βš™οΈ App Capabilities

  • GetX state management & navigation
  • Internet connectivity monitoring
  • Centralized error handling
  • Scalable feature-based structure
  • Dark and Light theme support

πŸ›  Tech Stack

Category Technology
Framework Flutter
Language Dart
State Management GetX
Navigation GetX
Authentication Firebase Auth
Database Cloud Firestore
Image Storage Supabase
Connectivity connectivity_plus
Image Caching cached_network_image

πŸ“¦ Main Packages Used

get: ^4.x.x
firebase_core: ^2.x.x
firebase_auth: ^4.x.x
cloud_firestore: ^4.x.x
google_sign_in: ^6.x.x
supabase_flutter: ^2.x.x
connectivity_plus: ^5.x.x
cached_network_image: ^3.x.x

πŸ“‚ Folder Structure (Feature-Based)

Refactored structure based on the current repository and architecture image

lib/
β”œβ”€β”€ main.dart
β”œβ”€β”€ app_binding.dart
β”‚
β”œβ”€β”€ common/
β”‚   β”œβ”€β”€ styles/
β”‚   └── widgets/
β”‚
β”œβ”€β”€ data/
β”‚   └── repositories/
β”‚
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ authentication/
β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ views/
β”‚   β”‚   └── widgets/
β”‚   β”‚
β”‚   β”œβ”€β”€ personalization/
β”‚   └── shop/
β”‚
β”œβ”€β”€ routes/
β”‚
└── utils/
    β”œβ”€β”€ constants/
    β”œβ”€β”€ device/
    β”œβ”€β”€ exceptions/
    β”œβ”€β”€ formatters/
    β”œβ”€β”€ helpers/
    β”œβ”€β”€ http/
    β”œβ”€β”€ local_storage/
    └── logging/

βœ… Why this structure?

  • Clear separation of features
  • Easy to scale and maintain
  • Business logic isolated from UI
  • Reusable utilities & widgets

πŸ“± Main Screens

Login Screen Home Screen Store Screen
Login Screen Home Store
Prduct Detail Screen Profile Screen Wishlist Screen
Product Profile Wishlist

⚑ Installation & Setup Guide

1️⃣ Prerequisites

Ensure you have installed:

  • Flutter SDK
  • Git
  • Node.js (for Firebase CLI)
  • VS Code / Android Studio

2️⃣ Clone the Repository

git clone https://github.com/Vithu-29/Orix.git
cd Orix

3️⃣ Install Flutter Dependencies

flutter pub get

πŸ”₯ Firebase Setup (First-Time Users)

Step 1: Install Firebase CLI

npm install -g firebase-tools

Verify installation:

firebase --version

Step 2: Login to Firebase

firebase login

Step 3: Install FlutterFire CLI

dart pub global activate flutterfire_cli

Ensure global pub cache is in your PATH.


Step 4: Configure Firebase for Flutter

flutterfire configure
  • Select your Firebase project

  • Choose platforms (Android, iOS, Web if needed)

  • This auto-generates:

    • firebase_options.dart
    • Platform-specific config files

Step 5: Firebase Console Configuration

πŸ” Enable Authentication

  • Go to Firebase Console β†’ Authentication

  • Enable:

    • βœ… Email/Password
    • βœ… Google Sign-In

πŸ”‘ Google Sign-In (Important)

For Android, add SHA keys:

cd android
./gradlew signingReport

Copy:

  • SHA-1
  • SHA-256

Add them in:

Firebase Console β†’ Project Settings β†’ Android App


πŸ—„ Enable Firestore

  • Firebase Console β†’ Firestore Database
  • Create database
  • Start in Test Mode (for development)

πŸ–Ό Supabase Setup (Image Storage)

  1. Create a project in Supabase

  2. Go to Storage

  3. Create a public bucket named images

  4. Copy:

    • Project URL
    • Anon Public Key

Create constants file:

// lib/utils/constants/api_keys.dart
class ApiKeys {
  static const String supabaseUrl = 'YOUR_SUPABASE_PROJECT_URL';
  static const String supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
}

▢️ Run the Application

Check devices:

flutter devices

Run app:

flutter run

🧠 Architecture Highlights

  • GetX Bindings for dependency injection
  • Repository pattern for data handling
  • Centralized exception handling
  • Reusable UI components
  • Feature isolation for scalability

πŸ“Œ Future Improvements

  • Role-based access control
  • Push notifications
  • Offline Firestore persistence
  • Unit & widget testing
  • CI/CD with GitHub Actions

⭐ Support

If you find this project helpful, please ⭐ star the repository and share it!


About

Ecommerce application using flutter , Getx and Firebase

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors