Launch your store. Grow on your own terms. Pay only when you sell.
Raij is an AI-enhanced multi-vendor marketplace built for startup sellers and small businesses. It removes the two biggest barriers to starting an e-commerce business — high upfront cost and technical complexity — while giving buyers a smarter, faster way to discover what they're looking for.
Traditional e-commerce platforms charge fixed monthly fees before a startup has made a single sale. Discovery favors big brands with ad budgets, leaving quality products from new sellers invisible. Meanwhile, small teams waste hours on manual work — cleaning product photos, analyzing reviews, writing listings — instead of building their business.
Raij is built around the opposite philosophy: you pay when you sell, AI handles the heavy lifting, and every seller starts on equal footing.
No subscriptions. No flat fees. Credits are deducted per confirmed order based on product category. New sellers start with a 250 EGP welcome bonus — enough to process your first sales risk-free.
- Semantic Search — buyers find products via natural language, image upload, or voice queries using vector similarity. A small seller with a great product has the same shot at discovery as anyone else.
- AI Bundle Suggestions — intelligent frequently-bought-together recommendations drive higher order values automatically.
- AI Background Removal — clean, professional product photos in one click. No design skills needed.
- Review Sentiment Analysis — the platform reads your customer reviews at scale and surfaces what buyers love, what they dislike, and what to fix first.
- Fake Review Detection — ML model flags suspicious reviews before they distort your ratings.
Sellers get a transparent dashboard showing orders, wallet balance, credit deductions per order, and performance trends — not vanity metrics. Every fee is traceable. Every deduction has a reason.
Go from signup to live store in minutes. Add products, set up categories, configure variants — no technical knowledge required.
| Layer | Technology |
|---|---|
| Framework | Flutter + Dart |
| State Management | flutter_bloc (Cubit) |
| Architecture | Clean Architecture (Feature-First) |
| Routing | go_router |
| DI | get_it + injectable |
| Networking | Dio |
| Serialization | freezed + json_serializable |
| Backend | Next.js (App Router) |
| Database & Auth | Supabase (PostgreSQL + RLS) |
| AI / ML | HuggingFace (semantic search, sentiment, fake review detection) |
| Image Processing | Cloudinary (background removal, avatars, product images) |
| Push Notifications | OneSignal + Firebase Cloud Messaging |
| Error Tracking | Sentry |
| Storage | flutter_secure_storage + shared_preferences |
| Localization | flutter_localizations + intl (AR/EN) |
| Feature | Who Benefits |
|---|---|
| Multi-vendor marketplace | Buyers discover products across many stores in one place |
| Text, image & voice search | Buyers find what they want naturally; small sellers get found fairly |
| Order-based credit fees | Sellers pay only on confirmed orders, not upfront |
| Seller wallet + top-up | Full credit balance management with transparent audit trail |
| Bundle suggestions API | Sellers increase average order value with zero effort |
| AI review insights | Sellers act on customer feedback at scale |
| Role-based access (admin/seller/buyer) | Secure, scoped workflows for every user type |
| Moderator system | Store owners can invite team members with granular permissions |
| Promotions & coupons | Flexible discount campaigns with usage and expiry controls |
| Real-time order tracking | Buyers and sellers stay in sync across every order status |
| Maps & location | Store locator and delivery area mapping |
raij-mobile/
├── lib/
│ ├── core/ # Shared across all features
│ │ ├── cache/ # Local caching strategies
│ │ ├── constants/ # Roles, permissions, API endpoints, order statuses
│ │ ├── DI/ # Dependency injection setup (get_it)
│ │ ├── errors/ # Custom exceptions and failures
│ │ ├── network/ # Dio client, interceptors, refresh token logic
│ │ ├── routes/ # go_router configuration
│ │ ├── services/ # Location, notifications, and other platform services
│ │ ├── theme/ # App theme, colors, typography tokens
│ │ └── utils/ # Responsive layout helpers
│ ├── features/ # Feature modules (Clean Architecture)
│ │ ├── account/ # User account management
│ │ ├── add_to_cart/ # Add to cart flow
│ │ ├── address/ # Address management
│ │ ├── auth/ # Login, register, forgot password, OTP verification
│ │ ├── checkout/ # Checkout flow
│ │ ├── faqs/ # FAQ section
│ │ ├── help_center/ # Help center
│ │ ├── home/ # Home screen
│ │ ├── map/ # Map and location features
│ │ ├── order/ # Order management and tracking
│ │ ├── payment/ # Payment processing
│ │ ├── product_details/ # Product detail screens
│ │ ├── products/ # Product listing, search, categories
│ │ ├── reviews/ # Reviews and ratings
│ │ └── search/ # Search functionality (text, image, voice)
│ ├── l10n/ # Localization strings (AR/EN)
│ ├── shared/ # Shared widgets
│ ├── utils/ # Global utility functions
│ ├── firebase_options.dart # Firebase configuration
│ └── main.dart # App entry point
├── assets/
│ ├── images/
│ ├── icons/
│ ├── logos/
│ ├── mocks/
│ ├── animation/
│ └── fonts/
├── test/ # Unit, widget, and integration tests
├── docs/ # Project documentation
└── pubspec.yaml
Each feature module follows Clean Architecture layers:
feature/
├── data/
│ ├── data_sources/ # Remote (API) and local data sources
│ ├── models/ # DTOs with JSON serialization (freezed)
│ └── repositories/ # Repository implementations
├── domain/
│ ├── entities/ # Core business models
│ ├── repositories/ # Abstract repository interfaces
│ └── usecases/ # Single-responsibility business operations
└── presentation/
├── bloc/ # Cubit/BLoC state management
└── view/
├── screens/ # Full-page screens
└── widgets/ # Reusable feature-specific widgets
- Flutter SDK ^3.9.2
- Dart SDK ^3.9.2
- A running instance of the Raij backend (Next.js API)
# Clone the repository
git clone https://github.com/raij-eg/raij-mobile.git
cd raij-mobile
# Install dependencies
flutter pub get
# Set up environment variables
cp .env.example .env
# Edit .env with your API base URL and keys
# Run build runner (for freezed/json_serializable code generation)
flutter pub run build_runner build --delete-conflicting-outputs
# Run the app
flutter run# Watch for code generation changes
flutter pub run build_runner watch --delete-conflicting-outputs
# Run tests
flutter test
# Analyze code
flutter analyze
# Format code
dart format lib/MOBILE_API_KEY=your_mobile_api_key
ONESIGNAL_APP_ID=your_onesignal_app_id- Architecture Guide — Detailed Clean Architecture breakdown
- Recommendations API — AI-powered product recommendations
Proprietary — All rights reserved.