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 …