A Flutter-based mobile application designed to help Ethiopian commuters easily locate and navigate traditional bus taxi routes.
In Ethiopia, affordable public transportation options, such as traditional bus taxis, play a vital role in daily commuting. However, locating these taxis, particularly for less familiar routes, can be challenging due to:
- Lack of centralized information
- No real-time updates on taxi locations
- Difficulty finding correct pick-up points
- Limited knowledge of routes for unfamiliar destinations
- Time wasted waiting at incorrect stops
Weyalaw seeks to address these issues by offering a user-friendly platform that enables commuters to locate traditional bus taxis in real-time, access detailed information about popular routes, and receive personalized recommendations.
- Location Search: Search for any location and find nearby taxi stations
- Route Planning: Get optimal routes between your location and Taxi Place
- Price Estimation: View estimated taxi fares for your journey
- Real-time Navigation: Interactive maps with turn-by-turn directions
The project utilizes GebetaMaps API for the following services:
- Calculates optimal public transport routes
- Identifies traditional taxi routes between locations
- Provides estimated travel times
- Converts location names to coordinates
- Enables search functionality for destinations
- Identifies nearby landmarks for pick-up points
- Converts coordinates to readable addresses
- Helps identify current location context
- Provides landmark references for users
Important Note: While GebetaMaps provides excellent location services and routing APIs specifically optimized for Ethiopian transportation, it currently doesn't provide the actual map visualization service. Therefore, we use Google Maps to render and display the map interface. This is why both API keys are required - GebetaMaps for Ethiopian-specific location services and Google Maps for the visual map implementation.
The project utilizes Google Maps API for the following services:
- Map visualization and rendering
- Real-time navigation interface
- Custom markers for taxi stations
- Flutter SDK (^3.27.1)
- Android Studio (version 2024.1)
- Android SDK (version 35.0.0)
- Xcode 16.0 or higher (for iOS)
- VS Code (version 1.96.4) [Optional]
- Chrome (for web development) [Optional]
- GebetaMaps API key
- Google Maps API key
- Git
Note: Make sure to run
flutter doctor
to verify your setup is complete
- Clone the repository
git clone https://github.com/yourusername/weyalaw.git
cd weyalaw
- Create environment files:
.env in root directory:
GEBETA_MAPS_API_KEY=your_gebeta_api_key_here
- Set up Google Maps:
For iOS:
# 1. Copy the template configuration file
cp ios/Runner/Config.xcconfig.template ios/Runner/Config.xcconfig
# 2. Edit Config.xcconfig and add your Google Maps API key
# Replace 'your_google_maps_api_key_here' with your actual API key
# 3. Link Config.xcconfig to your build configurations in Xcode:
# - Open ios/Runner.xcworkspace in Xcode
# - Click on 'Runner' project in the Project Navigator
# - Select 'Runner' project (not target) in the left sidebar
# - Go to 'Info' tab
# - Under 'Configurations' section:
# - For 'Debug' configuration: Select Config.xcconfig
# - For 'Release' configuration: Select Config.xcconfig
# Note: If 'Configurations' section is missing:
# - Click '+' button next to 'Configurations'
# - Duplicate 'Debug' and 'Release' configurations
# - Set Config.xcconfig for both configurations
For Android:
# 1. Create/edit android/local.properties and add:
google.maps.key=your_google_maps_api_key_here
# 2. Create/edit android/app/src/main/res/values/strings.xml and add:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="google_maps_key">your_google_maps_api_key_here</string>
</resources>
- Install dependencies
flutter pub get
- Run pod install for iOS
cd ios
pod install
cd ..
- Run the app
flutter run
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable Maps SDK for iOS and Android
- Create credentials (API key)
- Add the API key to:
- iOS:
ios/Runner/Config.xcconfig
- Android:
android/local.properties
- iOS:
- Sign up at GebetaMaps
- Get your API key
- Add it to the
.env
file
- Location access
- Internet connectivity
- Background location updates
- Direction Service for optimal routes
- Geocoding for location search
- Reverse geocoding for address lookup
- Interactive maps
- Real-time navigation
- Custom markers for taxi stations
Contributions are welcome! Please feel free to submit a Pull Request.
You can download and test the latest version of Weyalaw:
Note: Make sure to enable "Install from Unknown Sources" in your Android settings to install the APK.
- GebetaMaps for providing the mapping API
- Redat for taxi route and fare data
- Used their API for accurate taxi fare information
- Leveraged their comprehensive database of Ethiopian taxi routes
- Trufi Association for inspiration and APIs for informal transport solutions
- Used their open-source APIs and tools for public transport routing
- Based on their proven solutions for informal transportation systems
For any queries or suggestions, please open an issue in the repository.
Made with β€οΈ for Ethiopian commuters