Skip to content

zishnusarker/Bus-Ticket-Reservation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸšŒ Bus Ticket Reservation

An Android mobile application for bus ticket booking with Firebase backend, featuring OTP-based authentication, ticket purchasing, booking history, and cancellation management.

Android Java Firebase License

Overview โ€ข Features โ€ข Tech Stack โ€ข Architecture โ€ข Installation โ€ข App Flow โ€ข Structure


๐Ÿ“– Overview

A full-featured Android mobile application for bus ticket reservation, built with Java and powered by Firebase backend services. The app provides a complete booking workflow - from user registration with phone OTP verification, to ticket purchasing, viewing booking history, and canceling reservations.

This project demonstrates practical mobile development skills including Firebase integration, multi-step authentication flows, real-time database operations, Material Design UI, and navigation architecture.


โœจ Features

๐Ÿ” Authentication

  • Multi-step user registration (3-page signup flow)
  • Phone number verification with OTP (PIN view input)
  • International country code picker (CCP library)
  • Secure login with Firebase Authentication
  • Forgot password flow with multiple recovery options
  • Set new password functionality

๐ŸŽซ Ticket Management

  • Browse available bus routes and schedules
  • Purchase tickets with seat selection
  • View detailed ticket information
  • Booking history tracking
  • Ticket cancellation with confirmation

๐Ÿ“ฑ User Experience

  • Splash screen with app branding
  • Onboarding / Getting started screens with image slider
  • Material Design UI with CardView layouts
  • Smooth navigation between screens
  • Intuitive main home dashboard

๐Ÿ›  Tech Stack

Category Technology Purpose
Language Java Core application logic
Platform Android (API 21+) Mobile platform
Build System Gradle Dependency management and build
Backend Firebase Cloud backend services
Auth Firebase Authentication Phone/OTP-based user authentication
Database Firebase Realtime Database User data and booking storage
Storage Firebase Storage File/image storage
Analytics Firebase Analytics Usage tracking and insights
UI - Material Material Design Components Modern Android UI components
UI - CardView AndroidX CardView Card-based layouts
UI - Navigation AndroidX Navigation Fragment-based navigation
UI - CCP Country Code Picker (hbb20) International phone number input
UI - PIN PinView (chaos) OTP input field
UI - Slider Custom SliderAdapter Onboarding image carousel
Lifecycle AndroidX Lifecycle Activity/fragment lifecycle management
Testing JUnit + Espresso Unit and UI testing

๐Ÿ— Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      ANDROID APP                              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   Splash     โ”‚โ†’โ”‚  Getting      โ”‚โ†’โ”‚  Login / SignUp      โ”‚  โ”‚
โ”‚  โ”‚   Screen     โ”‚  โ”‚  Started     โ”‚  โ”‚  Module              โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                  โ”‚             โ”‚
โ”‚         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚         โ”‚              Main Home Dashboard              โ”‚     โ”‚
โ”‚         โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค     โ”‚
โ”‚         โ”‚ Purchase โ”‚  Ticket   โ”‚  History  โ”‚  Cancel   โ”‚     โ”‚
โ”‚         โ”‚ Activity โ”‚  Activity โ”‚  Activity โ”‚  Activity โ”‚     โ”‚
โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                                                               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                     FIREBASE BACKEND                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   Auth   โ”‚  โ”‚   Realtime    โ”‚  โ”‚ Storage โ”‚  โ”‚Analyticsโ”‚  โ”‚
โ”‚  โ”‚  (OTP)   โ”‚  โ”‚   Database    โ”‚  โ”‚         โ”‚  โ”‚         โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Installation

Prerequisites

  • Android Studio (Arctic Fox or later recommended)
  • JDK 8 or higher
  • Android SDK (API 21+)
  • Firebase project (for backend services)

Setup

# Clone the repository
git clone https://github.com/zishnusarker/Bus-Ticket-Reservation.git
cd Bus-Ticket-Reservation/Bus\ ticket\ reservation\ master
  1. Open in Android Studio - File โ†’ Open โ†’ select the Bus ticket reservation master folder
  2. Sync Gradle - Android Studio will automatically sync dependencies
  3. Configure Firebase - The google-services.json is included, but for your own deployment you should:
    • Create a new Firebase project at console.firebase.google.com
    • Enable Authentication (Phone provider)
    • Enable Realtime Database
    • Download and replace app/google-services.json
  4. Run the app - Connect an Android device or emulator (API 21+) and click Run

Pre-built APK

A pre-built debug APK is available for quick testing:

Bus ticket reservation master/app-debug.apk

๐Ÿ“‹ App Flow

1. Onboarding

Splash Screen โ†’ Getting Started (Image Slider) โ†’ Login/SignUp Selection

2. Registration (3-Step Signup)

SignUp Page 1 (Basic Info) โ†’ SignUp Page 2 (Details) โ†’ SignUp Page 3 (Phone)
โ†’ OTP Verification โ†’ Registration Complete

3. Login

Login โ†’ Enter Credentials โ†’ Firebase Auth โ†’ Main Home

4. Forgot Password

Forgot Password โ†’ Select Recovery Method โ†’ Verify Identity โ†’ Set New Password

5. Booking Flow

Main Home โ†’ Purchase Activity โ†’ Select Route/Details
โ†’ Purchase Confirmation โ†’ Ticket Generated

6. Manage Bookings

Main Home โ†’ History (View past bookings)
Main Home โ†’ Cancel Activity (Cancel a booking)
Main Home โ†’ Information (View ticket details)

๐Ÿ“ Project Structure

Bus-Ticket-Reservation/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ .gitattributes
โ”‚
โ””โ”€โ”€ Bus ticket reservation master/        # Android project root
    โ”œโ”€โ”€ build.gradle                      # Project-level Gradle config
    โ”œโ”€โ”€ settings.gradle                   # Gradle settings
    โ”œโ”€โ”€ gradle.properties                 # Gradle properties
    โ”œโ”€โ”€ gradlew / gradlew.bat            # Gradle wrapper scripts
    โ”œโ”€โ”€ app-debug.apk                    # Pre-built debug APK
    โ”‚
    โ”œโ”€โ”€ gradle/wrapper/                  # Gradle wrapper
    โ”‚
    โ””โ”€โ”€ app/                             # Application module
        โ”œโ”€โ”€ build.gradle                 # App-level dependencies
        โ”œโ”€โ”€ google-services.json         # Firebase configuration
        โ”‚
        โ””โ”€โ”€ src/main/
            โ”œโ”€โ”€ AndroidManifest.xml      # App manifest
            โ”œโ”€โ”€ app_logo.png             # App logo asset
            โ”‚
            โ”œโ”€โ”€ java/.../project1/       # Java source code
            โ”‚   โ”œโ”€โ”€ Common/LoginSignUp/  # Authentication module
            โ”‚   โ”‚   โ”œโ”€โ”€ LoginSignUp.java       # Auth landing page
            โ”‚   โ”‚   โ”œโ”€โ”€ Login.java             # Login screen
            โ”‚   โ”‚   โ”œโ”€โ”€ Registration.java      # Registration handler
            โ”‚   โ”‚   โ”œโ”€โ”€ SignUp2ndPage.java      # Signup step 2
            โ”‚   โ”‚   โ”œโ”€โ”€ SignUp3rdPage.java      # Signup step 3
            โ”‚   โ”‚   โ”œโ”€โ”€ Verify_OTP.java        # OTP verification
            โ”‚   โ”‚   โ”œโ”€โ”€ ForgetPassword.java    # Forgot password
            โ”‚   โ”‚   โ”œโ”€โ”€ MakeSelectionForgetPass.java  # Recovery options
            โ”‚   โ”‚   โ””โ”€โ”€ SetNewPassword.java    # New password
            โ”‚   โ”‚
            โ”‚   โ”œโ”€โ”€ Database/            # Data layer
            โ”‚   โ”‚   โ””โ”€โ”€ userDatabaseHelperClass.java  # Firebase DB helper
            โ”‚   โ”‚
            โ”‚   โ”œโ”€โ”€ HelperClasses/       # UI helpers
            โ”‚   โ”‚   โ””โ”€โ”€ SliderAdapter.java     # Onboarding slider
            โ”‚   โ”‚
            โ”‚   โ””โ”€โ”€ commonForApp/        # Core app screens
            โ”‚       โ”œโ”€โ”€ Splash.java            # Splash screen
            โ”‚       โ”œโ”€โ”€ Getting_started.java   # Onboarding
            โ”‚       โ”œโ”€โ”€ Main_home.java         # Home dashboard
            โ”‚       โ”œโ”€โ”€ PurchaseActivity.java   # Buy tickets
            โ”‚       โ”œโ”€โ”€ PurchaseActivity_2nd.java # Confirm purchase
            โ”‚       โ”œโ”€โ”€ TicketActivity.java     # View ticket
            โ”‚       โ”œโ”€โ”€ HistoryActivity.java   # Booking history
            โ”‚       โ”œโ”€โ”€ CancelActivity.java    # Cancel booking
            โ”‚       โ””โ”€โ”€ InformationActivity.java # Ticket info
            โ”‚
            โ””โ”€โ”€ res/                     # Resources (layouts, drawables, etc.)

๐Ÿ”‘ Key Technical Details

Detail Value
Min SDK 21 (Android 5.0 Lollipop)
Target SDK 28 (Android 9.0 Pie)
Compile SDK 30 (Android 11)
Application ID aidooo.spydo.com.project1
Build Tools 29.0.3

๐Ÿ”ฎ Future Improvements

  • Migrate to Kotlin from Java
  • Update to latest AndroidX and Firebase SDK versions
  • Implement MVVM architecture pattern
  • Add real-time bus tracking with Google Maps API
  • Implement online payment gateway (Razorpay/Stripe)
  • Add push notifications for booking confirmations
  • Implement seat selection UI with visual bus layout
  • Add user profile management with photo upload
  • Write comprehensive unit and UI tests
  • Add dark mode support

โš ๏ธ Note

The google-services.json file included in this repository is for development purposes. For production deployment, you should create your own Firebase project and replace the configuration file.


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


About

Android bus ticket reservation app with Firebase backend, featuring OTP authentication, ticket purchasing, booking history, and cancellation management

Topics

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages