Logo Lanfrica

teyvi/GoTrotro

Domaine:

mobilitygeospatial

Type de record:

software
Créateur:
tey
Hôte:
A web app designed for trotro users in Ghana to easily find routes between locations. Users can search for routes, see where to board and alight, and get transfer points. Future updates will include fare estimates to help plan journeys more efficiently # Gotrotro Gotrotro is a free and open-source web app designed to help trotro users in Ghana find the best routes for their journeys. The app uses data from **OpenStreetMap** and open tools to provide reliable, community-driven navigation for public transport. ## Current Features Under Development - 🔍 **Search**: Search for routes between different locations using **Nominatim**. - ⚙️ **Config**: Manage app configurations for better customization and performance. - 🗺️ **MapLayer**: Integrate interactive maps with various layers for enhanced visuals. - 🎨 **Stylesheet**: Apply custom styles for a user-friendly interface. - 💻 **UI**: Work in progress to create an intuitive and accessible design. ## Tech Stack - **Frontend**: React - **Mapping**: OpenStreetMap - **Styling**: Tailwind ## Getting Started ### Prerequisites Ensure you have the following tools installed: - Node.js - Git ### Installation 1. **Clone the repository:** ```bash git clone github.com cd GoTrotro ### License This project is licensed under the MIT License. # GoTrotro Architecture Diagram ## Component Structure ```mermaid flowchart TD A["src/index.tsx"] --> B["src/App.tsx (router)"] B --> P1["pages/Home.tsx"] B --> P2["pages/RouteViewPage.tsx"] %% Home side P1 --> H1["hooks/useDebounce.ts"] P1 --> Q1["queries/searchLocations.ts"] Q1 --> S1["services/GeocoderService.ts"] S1 --> G1["adapters/geocoders/NominatimAdapter.ts"] S1 --> G2["adapters/geocoders/PhotonAdapter.ts"] P1 --> C1["configuration/config.ts"] C1 --> R1["adapters/routingEngines/OtpAdapter.ts"] C1 --> R2["adapters/routingEngines/OsrmAdapter.ts"] C1 --> R3["adapters/routingEngines/VahallaAdapter.ts"] %% Route view side P2 --> V1["components/RouteView.tsx"] V1 --> M1["components/MapComponent.tsx"] V1 --> I1["components/RouteInstructions.tsx"] M1 --> U1["utils/otpTransformer.ts"] M1 --> U2["utils/polylineDecoder.ts"] M1 --> T2["types/routeDisplay.ts"] %% Shared typing P1 --> T1["types/mapTypes.ts"] M1 …