RideMate is a comprehensive, dual-mode transportation application built with React Native and a SQL Server-backed REST/WebSocket API. The system is designed to handle two distinct logistical domains simultaneously: an on-demand, in-city ride-sharing network (similar to Uber) and an inter-city transit booking system (bus ticketing).
The architecture features distinct interfaces with custom access privileges for riders and drivers, ensuring a streamlined and secure user experience across different user roles.
- WebSocket Integration: Engineered a live pricing and negotiation system utilizing WebSockets for bidirectional, low-latency communication.
- Instant Fare Transactions: Enables riders and drivers to broadcast, receive, and accept live fare offers with minimal latency, instantly updating the application state across multiple clients.
- On-Demand Ride-Sharing: Integrates mapping APIs to handle dynamic pickup/drop-off routing, spatial querying for nearby drivers, and real-time location tracking.
- Inter-City Bus Ticketing: Features a structured booking pipeline for scheduled city-to-city transit, managing seat availability, scheduling databases, and ticket generation.
- SQL Server Infrastructure: Utilized SQL Server to handle highly relational data, ensuring ACID compliance for critical transactional data such as fare agreements, user balances, and booking histories.
- Frontend: React Native (Cross-Platform iOS/Android)
- Backend Architecture: Node.js / Express.js (REST API)
- Real-Time Communication: WebSockets
- Database: SQL Server
- Integrations: Geolocation & Mapping APIs
backend/: Contains the RESTful API routes, WebSocket server initialization, and SQL Server connection logic.frontend/: Contains the React Native client, state management, and UI components separated by user privileges (Driver/Rider workflows).
(Ensure a local instance of SQL Server is running and Map API keys are configured in your environment variables).
Backend Setup:
cd backend
npm install
npm run startFrontend Setup:
cd frontend
npm install
npx react-native run-android # or run-ios