A sleek, modern bus booking application built with Expo and React Native, featuring Google Sign-In, interactive seat selection, and seamless booking management with production-ready architecture.
- π¨ Modern UI/UX - Tailwind CSS with custom Okra typography
- π Bus Booking - Search routes, select seats, manage bookings
- π Google Sign-In - Secure OAuth authentication
- π± Cross-Platform - iOS and Android with native performance
- πͺ Interactive Seats - Real-time seat availability and selection
- π Deep Linking - Direct bus access via shareable URLs
- β‘ TanStack Query - Efficient data fetching and caching
- πΎ MMKV Storage - Lightning-fast local storage
- π― TypeScript - Full type safety and enhanced developer experience
- π Location Services - City-to-city route discovery
Download and install the APK to experience the bus booking app on your Android device
- βοΈ Expo 53.0.15 - Development platform
- π React Native 0.79.4 - Mobile app framework
- πΊοΈ React Navigation 7.x - Navigation with deep linking
- π¨ NativeWind 4.1.23 - Tailwind CSS for React Native
- β‘ TanStack Query 5.81.5 - Server state management
- π Axios 1.10.0 - HTTP client for API requests
- π JWT Decode 4.0.0 - Token management
- π¨ NativeWind 4.1.23 - Tailwind CSS styling
- π React Native Linear Gradient 2.8.3 - Gradient effects
- π― React Native Heroicons 4.0.0 - Icon library
- πΌοΈ React Native SVG 15.9.0 - SVG support
- π Google Sign-In 15.0.0 - OAuth authentication
- πΎ React Native MMKV 3.3.0 - Fast key-value storage
- π DateTimePicker 8.4.2 - Native date/time selection
- π React Native Reanimated 3.18.0 - Smooth animations
- π React Native Gesture Handler 2.27.1 - Touch gestures
- π€ React Native Share 12.1.0 - Native sharing
- πΈ React Native View Shot 4.0.3 - Screenshot capture
- Node.js (β₯18.0.0)
- Expo CLI
- Expo account
- Android Studio (Android)
- Xcode (iOS - Mac only)
-
Clone the repository
git clone https://github.com/chayan-1906/Busgo-React-Native.git cd Busgo-React-Native
-
Install dependencies
npm install
-
iOS Setup (Mac only)
npm run pod-install
-
Environment Setup
Create
.env
file (refer to .env.example) -
Start Expo dev server
npm start
-
Run on device/simulator
# Android npm run android # iOS npm run ios
npm run generate-apk
APK will be generated at: android/app/build/outputs/apk/release/app-release.apk
Use Xcode for iOS production builds:
- Open
ios/BusGo.xcworkspace
- Select target device/simulator
- Product β Archive
src/
βββ components/ # Reusable UI components
β βββ home/ # Home screen components
β βββ ui/ # Generic UI components
β βββ ui/modals/ # Modal components
βββ screens/ # Application screens
βββ navigation/ # Navigation configuration
βββ service/ # API client and requests
β βββ requests/ # API endpoint handlers
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions and constants
βββ assets/ # Images, fonts, and static files
The app uses a hosted Node.js backend. Local setup is optional.
- Production:
https://busgo-node-js.onrender.com/api/v1
- Status: Live & Ready
# Clone the backend repository
git clone https://github.com/chayan-1906/BusGo-Node.js.git
cd BusGo-Node.js
# Install dependencies
npm install
# Setup environment variables
cp .env.example .env
# Start server
npm run dev
- Authentication:
/user/login
(POST) - RefreshToken:
/user/refresh-token
(POST) - Cities:
/city
(GET) - Buses:
/bus/search?from={from}&to={to}&date={date}&tags={tags}&sortBy={sortBy}
(GET) - BusDetails:
/bus?busId={busExternalId}
(GET) - Tickets:
/ticket
(GET) - BookTicket:
/ticket
(POST)
busgo://bus/{busExternalId}
# Direct bus access
busgo://bus/BUS_12345
# Open from terminal (Android)
adb -s 368fef2d shell am start -a android.intent.action.VIEW -d "busgo://bus/BUS_12345"
xcrun simctl openurl booted "busgo://bus/BUS_12345"
- Production Ready: Optimised Expo prebuild for iOS and Android
- Modern Architecture: Clean code with TypeScript and TanStack Query
- Offline First: MMKV storage with optimistic updates
- Secure: JWT authentication with Google Sign-In
- Performance: 60fps animations with Reanimated 3
- Developer Friendly: ESLint, Prettier, and hot reload
- Min SDK: 21 (Android 5.0)
- Target SDK: 34 (Android 14)
- Architecture: arm64-v8a, armeabi-v7a
- Min Version: iOS 13.0
- Architecture: arm64
- Node.js: β₯18.0.0
- Expo CLI: Latest
- Android Studio: Latest stable
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Padmanabha Das
- GitHub: @chayan-1906
- LinkedIn: Chayan Ranjan Das
- Email: [email protected]
If this project helped you, please give it a βοΈ!
Made with β€οΈ by Padmanabha Das
β Star this repo if you found it helpful!
Note: This is the Expo prebuild implementation. Bare React Native version also available.