Skip to content

mbet-dev/Adera-app-august-1

Repository files navigation

πŸš€ Adera App

Adera Logo Version Platform

A comprehensive dual-purpose platform combining PTP Parcel Delivery & E-Commerce for Addis Ababa, Ethiopia

Features Tech Stack


πŸ“‹ Table of Contents


🎯 Overview

Adera is a revolutionary dual-purpose platform designed specifically for Addis Ababa, Ethiopia, that seamlessly combines:

  • πŸ“¦ Peer-to-Peer Parcel Delivery System - Real-time tracking with QR codes
  • πŸ›οΈ E-Commerce Subsystem - Partner shops with integrated payment solutions
  • 🚚 Driver Management - Route optimization and performance tracking
  • πŸ’³ Payment Integration - Multiple Ethiopian payment gateways

🎯 Mission

To revolutionize logistics and e-commerce in Ethiopia by providing a unified platform that connects customers, partners, drivers, and businesses through innovative technology solutions.


✨ Key Features

πŸ” Authentication & Security

  • Role-based authentication (Customer, Partner, Driver, Staff, Admin)
  • Supabase Auth integration with secure token management
  • Biometric authentication support
  • Multi-language support (i18next)

πŸ“¦ Parcel Management

  • Multi-step parcel creation wizard
  • Real-time tracking with QR codes
  • Status-based delivery flow
  • Photo evidence upload
  • Route optimization

πŸͺ Partner System

  • Partner registration and approval
  • QR code scanning interface
  • Earnings tracking
  • E-commerce store setup
  • Product management

🚚 Driver System

  • Route optimization
  • Real-time location tracking
  • Parcel scanning and status updates
  • Performance metrics
  • Earnings dashboard

πŸ›’ E-commerce Integration

  • Partner store templates
  • Product management
  • Order processing
  • Commission tracking
  • Inventory management

πŸ’³ Payment Integration

  • Telebirr mobile money
  • Chapa payment gateway
  • ArifPay integration
  • Cash on delivery support

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Mobile App    β”‚    β”‚   Web App       β”‚    β”‚   Admin Panel   β”‚
β”‚   (React Native)β”‚    β”‚   (React Web)   β”‚    β”‚   (React Web)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   Supabase      β”‚
                    β”‚   (Backend)     β”‚
                    β”‚   - Database    β”‚
                    β”‚   - Auth        β”‚
                    β”‚   - Storage     β”‚
                    β”‚   - Functions   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚                       β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Payment       β”‚    β”‚   SMS Service   β”‚    β”‚   Map Service   β”‚
β”‚   Gateways      β”‚    β”‚   (Notifications)β”‚   β”‚   (Location)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Frontend

  • React Native (0.79.5) - Cross-platform mobile development
  • Expo (53.0.20) - Development platform and tools
  • TypeScript - Type safety and better development experience
  • React Navigation - Navigation between screens
  • React Hook Form - Form handling and validation

Backend & Database

  • Supabase - Backend-as-a-Service
    • PostgreSQL database
    • Real-time subscriptions
    • Authentication
    • Storage
    • Edge Functions

State Management

  • Zustand - Lightweight state management
  • React Query - Server state management
  • AsyncStorage - Local data persistence

UI/UX

  • React Native Vector Icons - Icon library
  • Expo Linear Gradient - Gradient components
  • React Native Maps - Map integration
  • React Native Safe Area Context - Safe area handling

Payment & Services

  • Telebirr API - Ethiopian mobile money
  • Chapa API - Payment gateway
  • ArifPay API - Payment processing
  • SMS Service - Notifications

Development Tools

  • Expo CLI - Development and build tools
  • TypeScript - Type checking
  • ESLint - Code linting
  • Prettier - Code formatting

πŸš€ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • Expo CLI (npm install -g @expo/cli)
  • Supabase account
  • Payment gateway accounts (Telebirr, Chapa, ArifPay)

Installation

  1. Clone the repository

    git clone https://github.com/mbet-dev/Adera-app.git
    cd Adera-app
  2. Install dependencies

    npm install
  3. Environment Configuration Create a .env file in the root directory:

    # Supabase Configuration
    EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url
    EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    
    # Map Configuration
    EXPO_PUBLIC_MAPBOX_TOKEN=your_mapbox_token
    
    # Payment Gateway Configuration
    EXPO_PUBLIC_TELEBIRR_API_KEY=your_telebirr_api_key
    EXPO_PUBLIC_CHAPA_API_KEY=your_chapa_api_key
    EXPO_PUBLIC_ARIFPAY_API_KEY=your_arifpay_api_key
    
    # SMS Service Configuration
    EXPO_PUBLIC_SMS_API_KEY=your_sms_service_api_key
    EXPO_PUBLIC_SMS_SENDER_ID=your_sms_sender_id
    
    # App Configuration
    EXPO_PUBLIC_APP_NAME=Adera
    EXPO_PUBLIC_APP_VERSION=1.0.0
    EXPO_PUBLIC_ENVIRONMENT=development
  4. Start Development

    # Start Expo development server
    npm start
    
    # Run on specific platform
    npm run android
    npm run ios
    npm run web

πŸ“ Project Structure

src/
β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”œβ”€β”€ ui/             # Basic UI components (Button, Input, Card)
β”‚   β”œβ”€β”€ forms/          # Form components
β”‚   β”œβ”€β”€ maps/           # Map-related components
β”‚   └── business/       # Business logic components
β”œβ”€β”€ screens/            # Screen components
β”‚   β”œβ”€β”€ auth/           # Authentication screens
β”‚   β”œβ”€β”€ customer/       # Customer-specific screens
β”‚   β”œβ”€β”€ partner/        # Partner-specific screens
β”‚   β”œβ”€β”€ driver/         # Driver-specific screens
β”‚   └── admin/          # Admin screens
β”œβ”€β”€ navigation/         # Navigation configuration
β”œβ”€β”€ store/              # State management (Zustand)
β”œβ”€β”€ services/           # API and external services
β”œβ”€β”€ hooks/              # Custom React hooks
β”œβ”€β”€ contexts/           # React contexts
β”œβ”€β”€ utils/              # Utility functions
β”œβ”€β”€ types/              # TypeScript type definitions
β”œβ”€β”€ lib/                # Library configurations
└── map/                # Map-related utilities

πŸ’» Development

Available Scripts

npm start              # Start Expo development server
npm run android        # Run on Android
npm run ios           # Run on iOS
npm run web           # Run on web
npm run build:web     # Build for web
npm run serve:web     # Serve web build

Code Style Guidelines

  • Use TypeScript for type safety
  • Follow React Native best practices
  • Use functional components with hooks
  • Implement proper error handling
  • Follow consistent naming conventions

State Management

  • Zustand for global state
  • React Query for server state
  • Local state for component-specific data

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Write clean, readable code
  • Add appropriate tests
  • Update documentation as needed
  • Follow TypeScript best practices
  • Ensure cross-platform compatibility

πŸ“„ License

This project is proprietary software. All rights reserved.


πŸ‘¨β€πŸ’» Developer

Developed by: Ermias Dejene under/for MBet-Adera project - Β©2025


Made with ❀️ for Ethiopia

GitHub Issues Pull Requests

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published