kenya long distance travel booking app
# Matwana App
**Matwana** is an Android application for booking long-distance matatu (shared minibus) travel across various routes in Kenya. This app allows users to create an account, browse vehicle schedules, book seats, and make payments conveniently.
## Features
- **User Authentication**: Sign up, log in, and log out using email/password or third-party providers (Google, Facebook).
- **Route Management**: View routes such as Nairobi to Mombasa, Kakamega, Bungoma, Turkana, and more.
- **Seat Booking**: Choose available seats and confirm bookings for selected routes and times.
- **Payment Integration**: Securely pay for tickets directly within the app.
- **User Profile**: Manage personal information like name, email, and phone number.
- **Offline Support**: Access trip history and user profile offline using Room database.
---
## Technologies Used
### Frontend
- **Kotlin**: Primary language for Android development.
- **Jetpack Compose**: Modern declarative UI framework for building UIs.
- **Navigation Component**: For seamless screen transitions.
### Backend
- **Firebase Authentication**: Manage user authentication.
- **Firebase Firestore**: Store and retrieve booking and route data.
- **Room Database**: Store user profile and booking data for offline access.
### Additional Libraries
- **Coroutines**: For asynchronous programming.
- **StateFlow**: To handle UI state and authentication updates.
- **Retrofit**: For network requests (optional if external APIs are used).
---
## Project Structure
```
app/
├── view/
│ ├── pages/ # Individual screens (Login, SignUp, HomePage, etc.)
│ ├── MatwanaNavigation # Centralized navigation graph
├── viewmodel/ # ViewModels for state management
├── repository/ # Handles data interactions (Firebase, Room, etc.)
├── model/ # Data models (e.g., User, Route, Booking)
```
---
## Setup Instructions
### Prerequisites
1. **Android Studio** (Arctic Fox or later).
2. **Fir …