Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

<<<<<<< HEAD

Travenor-App

=======

Travenor - Destination Booking Platform

A real-time travel and destination booking platform comprising two native Android applications: Travenor (Customer App) and Travenor Admin (Owner/Manager App). The two applications seamlessly communicate via a Firebase backend to handle real-time bookings.

📱 Applications Overview

1. Travenor (Customer App)

  • Package: com.travenor.customer
  • Browse destinations with a beautiful horizontal scrolling UI.
  • Search for specific locations and read detailed descriptions.
  • Book destinations in real-time.
  • Receive instant "Accepted" or "Rejected" status updates on active bookings.
  • Email and OTP Verification.

2. Travenor Admin (Owner/Manager App)

  • Package: com.travenor.admin
  • Select and manage active locations/destinations.
  • Receive real-time incoming booking requests from customers.
  • Seamlessly Accept or Reject requests with live feedback to the customer app.
  • Silent background push notifications for incoming requests.

🛠 Tech Stack

  • UI: Jetpack Compose (100% Declarative UI)
  • Architecture: MVVM (Model-View-ViewModel) with Repository Pattern
  • Async & State: Coroutines & StateFlow
  • Networking: Retrofit
  • Database: Firebase Firestore (Real-time sync)
  • Authentication: Firebase Authentication (Email + Password / OTP)
  • Notifications: Firebase Cloud Messaging (FCM) + WorkManager
  • Language: Kotlin

🚀 Getting Started

If you are cloning or forking this repository, you must connect it to your own Firebase project. For security reasons, the google-services.json files and local environment variables are excluded from the repository.

Prerequisites

  • Android Studio (Latest Version)
  • JDK 11+
  • A Google account (to set up Firebase)

1. Clone the Repository

git clone https://github.com/your-username/travenor-project.git
cd travenor-project

2. Set Up Your Firebase Project

Because the system relies completely on Firebase for authentication and database synchronization, you must set up a new project:

  1. Go to the Firebase Console.
  2. Click Create Project and name it (e.g., "Travenor-App").
  3. Disable Google Analytics (optional, not used in this project).
  4. Once created, go to the project dashboard.

3. Register the Android Apps in Firebase

You need to register both apps in your newly created Firebase project.

Register Customer App:

  1. Click the Android icon to add an app.
  2. Enter the Android package name: com.travenor.customer
  3. Click Register App.
  4. Download google-services.json and place it inside the Travenor/app/ directory.

Register Admin App:

  1. Go back to Project Overview and click Add App -> Android.
  2. Enter the Android package name: com.travenor.admin
  3. Click Register App.
  4. Download the new google-services.json and place it inside the Travenor-Admin/app/ directory.

4. Enable Firebase Services

In the Firebase Console menu (left side), set up the following services:

A. Authentication:

  • Go to Build -> Authentication and click Get Started.
  • Go to the Sign-in method tab.
  • Enable Email/Password.

B. Firestore Database:

  • Go to Build -> Firestore Database and click Create Database.
  • Start in Test Mode (or implement the security rules matching the app needs).
  • Set the location to your nearest region.

Standard Firestore Security Rules (For Development):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

⚙️ Building & Running

Once your google-services.json files are properly placed, open the root Travenor-Project folder in Android Studio.

Sync the Gradle files when prompted. You can run the apps using the target drop-down in Android Studio, or via the terminal:

# Build Customer App
./gradlew :Travenor:build

# Build Admin App
./gradlew :Travenor-Admin:build

Testing the Real-Time Flow

For the best experience, run both apps simultaneously on two different emulators or physical devices:

  1. Device 1: Run Travenor (Customer). Create an account, browse destinations, and click "Book Now".
  2. Device 2: Run Travenor-Admin (Owner). Choose the location that was just booked. You will see the incoming request pop up instantly.
  3. Accept or reject the request on Device 2.
  4. Watch the status instantly update on Device 1!

📂 Project Structure

Travenor-Project/
├── Travenor/                # Customer App Source
│   ├── app/src/main/...     # UI, ViewModel, Repository logic
│   └── build.gradle.kts
├── Travenor-Admin/          # Owner/Admin App Source
│   ├── app/src/main/...     # Location management and request handling
│   └── build.gradle.kts
├── README.md                # Overview & Getting Started
├── Developer-Guide.md       # ⚠️ Master Setup & Requirements Guide
└── .gitignore               # Secures keystores, env files, and google-services

0fafd07 (docs: consolidate project documentation into Developer-Guide.md)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages