<<<<<<< HEAD
=======
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.
- 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.
- 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.
- 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
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.
- Android Studio (Latest Version)
- JDK 11+
- A Google account (to set up Firebase)
git clone https://github.com/your-username/travenor-project.git
cd travenor-projectBecause the system relies completely on Firebase for authentication and database synchronization, you must set up a new project:
- Go to the Firebase Console.
- Click Create Project and name it (e.g., "Travenor-App").
- Disable Google Analytics (optional, not used in this project).
- Once created, go to the project dashboard.
You need to register both apps in your newly created Firebase project.
Register Customer App:
- Click the Android icon to add an app.
- Enter the Android package name:
com.travenor.customer - Click Register App.
- Download
google-services.jsonand place it inside theTravenor/app/directory.
Register Admin App:
- Go back to Project Overview and click Add App -> Android.
- Enter the Android package name:
com.travenor.admin - Click Register App.
- Download the new
google-services.jsonand place it inside theTravenor-Admin/app/directory.
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;
}
}
}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:buildFor the best experience, run both apps simultaneously on two different emulators or physical devices:
- Device 1: Run Travenor (Customer). Create an account, browse destinations, and click "Book Now".
- Device 2: Run Travenor-Admin (Owner). Choose the location that was just booked. You will see the incoming request pop up instantly.
- Accept or reject the request on Device 2.
- Watch the status instantly update on Device 1!
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)