A comprehensive dual-purpose platform combining PTP Parcel Delivery & E-Commerce for Addis Ababa, Ethiopia
- Overview
- Key Features
- Architecture
- Tech Stack
- Getting Started
- Project Structure
- Development
- Contributing
- License
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
To revolutionize logistics and e-commerce in Ethiopia by providing a unified platform that connects customers, partners, drivers, and businesses through innovative technology solutions.
- Role-based authentication (Customer, Partner, Driver, Staff, Admin)
- Supabase Auth integration with secure token management
- Biometric authentication support
- Multi-language support (i18next)
- Multi-step parcel creation wizard
- Real-time tracking with QR codes
- Status-based delivery flow
- Photo evidence upload
- Route optimization
- Partner registration and approval
- QR code scanning interface
- Earnings tracking
- E-commerce store setup
- Product management
- Route optimization
- Real-time location tracking
- Parcel scanning and status updates
- Performance metrics
- Earnings dashboard
- Partner store templates
- Product management
- Order processing
- Commission tracking
- Inventory management
- Telebirr mobile money
- Chapa payment gateway
- ArifPay integration
- Cash on delivery support
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β 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) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- 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
- Supabase - Backend-as-a-Service
- PostgreSQL database
- Real-time subscriptions
- Authentication
- Storage
- Edge Functions
- Zustand - Lightweight state management
- React Query - Server state management
- AsyncStorage - Local data persistence
- React Native Vector Icons - Icon library
- Expo Linear Gradient - Gradient components
- React Native Maps - Map integration
- React Native Safe Area Context - Safe area handling
- Telebirr API - Ethiopian mobile money
- Chapa API - Payment gateway
- ArifPay API - Payment processing
- SMS Service - Notifications
- Expo CLI - Development and build tools
- TypeScript - Type checking
- ESLint - Code linting
- Prettier - Code formatting
- Node.js (v18 or higher)
- Expo CLI (
npm install -g @expo/cli
) - Supabase account
- Payment gateway accounts (Telebirr, Chapa, ArifPay)
-
Clone the repository
git clone https://github.com/mbet-dev/Adera-app.git cd Adera-app
-
Install dependencies
npm install
-
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
-
Start Development
# Start Expo development server npm start # Run on specific platform npm run android npm run ios npm run web
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
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
- Use TypeScript for type safety
- Follow React Native best practices
- Use functional components with hooks
- Implement proper error handling
- Follow consistent naming conventions
- Zustand for global state
- React Query for server state
- Local state for component-specific data
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Write clean, readable code
- Add appropriate tests
- Update documentation as needed
- Follow TypeScript best practices
- Ensure cross-platform compatibility
This project is proprietary software. All rights reserved.
Developed by: Ermias Dejene under/for MBet-Adera project - Β©2025