Hova is a modern, scalable cross-functional navigation application designed to help users easily hail taxis, find optimal routes, and track real-time locations. Drawing inspiration from popular ride-hailing apps like Uber, Hova offers a sleek and seamless experience with additional features that cater to both drivers and passengers.
The vision behind Hova is to create an all-in-one navigation platform that not only helps users get from point A to point B but also integrates real-time ride-hailing services, advanced geolocation tracking, and dynamic route optimization.
Our goal is to build a smarter, faster, and more reliable navigation and transportation solution, leveraging modern technologies and real-time APIs to provide users with an efficient and enjoyable experience.
Hova's core values:
- Convenience: Simple and intuitive design for both drivers and passengers.
- Reliability: Accurate location tracking and timely ride matching.
- Security: End-to-end encryption and secure payment systems.
Example of Navigation Flow in Hova (demo gif)
Before we begin building Hova, here is an overview of the projected system structure and the components that will interact within the platform.
- Frontend (Web App): Provides the user interface for both drivers and passengers. Built with ReactJS and handles all user interactions, such as registration, ride requests, and location tracking.
- Backend (Server): Powered by Django and handles all business logic, user management, ride matching, payment processing, and database management.
- Database: PostgreSQL for storing user, driver, and ride data. Scalable with the potential to grow as the platform expands.
- Location Tracking & Navigation: Google Maps API for routing, location tracking, and real-time navigation. Additional third-party services may be integrated for route optimization.
- Payment Gateway: Stripe or PayPal will handle secure transactions for ride payments.
- Real-Time Communication: Socket.io/WebSockets will be used for live location tracking, notifications, and communication between drivers and passengers.
- Push Notifications: Firebase will handle push notifications to alert users of ride status, promotions, etc.
Projected architecture for Hova's backend, frontend, and communication systems.
- Frontend: ReactJS, Redux
- Backend: Django, Python
- Database: PostgreSQL
- APIs: Google Maps API, Firebase, Payment Gateway (Stripe/PayPal)
- Authentication: JWT Authentication
- Real-Time Location Tracking: Socket.io
- Cloud Infrastructure: AWS, Docker
- Testing: Jest, Cypress
Component | Technology | Purpose |
---|---|---|
Frontend | ReactJS, Redux | User Interface and State Management |
Backend | Django, Python | Backend Logic & Database Handling |
Database | PostgreSQL | Store User and Ride Data |
Authentication | JWT, Firebase | Secure User Authentication |
Geolocation & Maps | Google Maps API | Navigation and Map Rendering |
Payment Processing | Stripe/PayPal | Handle Payments and Transactions |
Real-time Location | Socket.io, WebSockets | Real-time Ride Tracking & Notifications |
Cloud Infrastructure | AWS, Docker | Scalable Hosting & Containerization |
The Hova Mobile App is designed to provide a seamless ride-hailing experience directly from your smartphone. While the web application will serve as the primary interface for users accessing the platform on their desktops or laptops, the mobile app will be built for iOS and Android users, providing them with on-the-go access to the platformβs services.
- Driver & Passenger Registration: Users can easily create an account or log in using their credentials.
- Ride Booking: Passengers can book rides, track drivers, and receive notifications when a driver is nearby.
- Real-time GPS Navigation: Passengers and drivers receive real-time updates and navigation using Google Maps API.
- In-App Payments: Secure transactions using integrated payment systems like Stripe or PayPal.
- Push Notifications: Users receive notifications for ride updates, arrival times, and promotions.
- Rating & Reviews: Passengers can rate drivers after each ride, ensuring quality service on both ends.
- Real-time Location Tracking: Passengers can track their ride in real-time on the map.
The mobile app will be built using a cross-platform framework to support both iOS and Android devices. We are using React Native for its ability to provide native-like performance while maintaining a shared codebase.
- Framework: React Native
- Mobile Navigation: React Navigation
- State Management: Redux (for consistent state across the app)
- API Integration: Axios (to communicate with the Django backend)
- Geolocation & Maps: Google Maps API, React Native Maps
- Push Notifications: Firebase Cloud Messaging (FCM)
- Payment Integration: Stripe API, PayPal API
- Authentication: Firebase Authentication
- Real-time Communication: Socket.io (for real-time updates)
Component | Technology | Purpose |
---|---|---|
Framework | React Native | Cross-platform mobile app development |
Navigation | React Navigation | Mobile app routing and navigation |
State Management | Redux | Global state management across app |
Geolocation | React Native Maps, Google Maps API | Display maps and provide navigation |
Payment Gateway | Stripe, PayPal | In-app secure payment processing |
Push Notifications | Firebase Cloud Messaging (FCM) | Alerts and notifications for users |
Authentication | Firebase Auth | Secure user authentication |
Real-time Tracking | Socket.io | Real-time location updates |
Secure user login and registration using JWT authentication. Drivers and passengers can register, sign in, and access their profiles seamlessly.
// React - Handling User Login
const handleLogin = async (email, password) => {
try {
const response = await axios.post('/api/auth/login', { email, password });
localStorage.setItem('token', response.data.token); // Store JWT
} catch (error) {
console.error("Login failed:", error);
}
};
Hova supports real-time location tracking, ensuring users and drivers are always updated with the current location, estimated time of arrival (ETA), and route progress. It also features:
- Real-time vehicle tracking
- Live map updates
- Instant notifications for both riders and drivers
- WebSockets/Socket.io: Provides continuous and low-latency communication between the client and server, ensuring live updates for location.
Tracking the vehicle in real-time on Hova
Hova leverages Google Maps API for:
- Route optimization: Provides the most efficient routes considering traffic, distance, and ETA.
- Traffic data integration: Avoids traffic jams and reroutes drivers accordingly.
- Address auto-completion: Easily search for pickup/drop-off locations.
# Backend - Using Google Maps API for routing
import googlemaps
def get_route(start_location, end_location):
gmaps = googlemaps.Client(key='GOOGLE_API_KEY')
directions = gmaps.directions(start_location, end_location, mode="driving", avoid="ferries")
return directions
Hova uses dynamic pricing based on distance, traffic conditions, and demand. The Fare Calculation Model is designed to ensure fairness for both drivers and passengers.
Ride Distance (km) | Base Fare ($) | Price per km ($) | Estimated Fare ($) |
---|---|---|---|
1 - 5 | 3.00 | 1.50 | 6.50 |
5 - 15 | 5.00 | 1.20 | 18.40 |
15 - 30 | 7.00 | 1.00 | 27.00 |
Passengers can rate drivers after each ride, helping maintain quality and trust within the community. Ratings are calculated based on:
- Driver professionalism
- Vehicle cleanliness
- Timeliness
Instant notifications are delivered to users for important events, such as:
- Ride confirmations
- Vehicle arrival updates
- Ride status updates
Hova uses Firebase Cloud Messaging to push notifications.
To set up Hova locally, follow these steps:
git clone https://github.com/Ndegwadavid/hova.git
cd hova
- Navigate to the
backend
folder and install dependencies:
cd backend
pip install -r requirements.txt
- Run database migrations:
python manage.py migrate
- Start the Django development server:
python manage.py runserver
- Navigate to the
frontend
folder and install dependencies:
cd frontend
npm install
- Start the React development server:
npm start
Now, access Hova at http://localhost:3000
(frontend) and http://localhost:8000
(backend).
We are always open to new ideas and contributions to make Hova better! Here's how you can contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-name
). - Implement your feature or fix.
- Commit your changes (
git commit -am 'Add feature'
). - Push your changes to your fork (
git push origin feature-name
). - Create a pull request to the
main
branch of this repository.
We encourage you to follow our Contribution Guidelines.
David Njoroge
Founder & Lead Developer
Feel free to reach out for any questions, collaboration, or feedback at:
π§ Email 1: [email protected]
π§ Email 2: [email protected]
This project is licensed under the MIT License - see the LICENSE file for details.
Thank you for exploring Hova! We hope you enjoy navigating with us ππ¨