An Android application for discovering tourist destinations, viewing routes on Google Maps, and booking travel packages.
Touristo is an Android travel application built to help users discover tourist destinations across India, plan trip details, and book travel packages.
The app allows users to explore popular attractions, view location details and distance from their current location, visualize routes on Google Maps, and complete package bookings using UPI payment integration.
- Destination discovery by country, popularity, rating, and price
- Real-time distance calculation from user's GPS coordinates
- Google Maps route visualization with custom map layers
- Trip booking with date, time, and passenger selection
- Integration with UPI apps (Google Pay, PhonePe, Paytm) for payment processing
- Saved places and purchased tour package history
This project is showcased through screenshots below.
| Home Dashboard | User Login | Sign Up |
|---|---|---|
![]() |
![]() |
![]() |
| Live Search | Explore Grid | Navigation Drawer |
|---|---|---|
![]() |
![]() |
![]() |
| Feature | Description |
|---|---|
| Video Onboarding | Full-screen video background introduction on initial launch. |
| User Authentication | Registration with live email availability checking and user login. |
| Destination Search | Real-time text search filtering destinations by title. |
| GPS & Distance Calculation | Automatically detects user location and calculates distance to destinations in kilometers. |
| Interactive Maps | Displays location pins, route polylines, and map type selection (Normal, Satellite, Terrain, Hybrid). |
| Trip Booking & UPI Payments | Selects travel date, time, and headcount, launching UPI payment intents. |
| Package History | View history of booked tour packages and transaction details. |
| Saved Places | Bookmark favorite destinations for quick access. |
| Category | Technology |
|---|---|
| Languages | Java 8 (Android App), PHP 8.2 (Backend API), SQL |
| Android SDK | compileSdk 33, minSdk 19, targetSdk 33 |
| UI Components | Material Components, RecyclerView, ViewPager2, ConstraintLayout |
| Networking | Loopj AsyncHttpClient |
| Image Loading | Picasso |
| Payments | EasyUpiPayment SDK |
| Maps & Location | Google Maps SDK, Fused Location Provider, Maps Utilities (SphericalUtil) |
| UI Libraries | SlidingRootNav, SmoothBottomBar, Lottie, KenBurnsView, CircleImageView |
| Storage | SharedPreferences (Android local session), MySQL (Backend Database) |
| Build System | Gradle 7.4.2 |
The project uses an Activity and Fragment based structure on Android, communicating with a custom PHP REST API connected to a MySQL database.
graph TD
A[Android App] --> B[PHP REST API]
B --> C[MySQL Database]
flowchart TD
subgraph Android Client
A[Activity / Fragment] -->|User Actions| B[RequestParams]
B -->|Async HTTP POST| C[AsyncHttpClient Engine]
C -->|JSON Callback| D[JsonHttpResponseHandler]
D -->|Update UI| A
D -->|Session & Location Data| E[SharedPreferences]
end
subgraph Backend Server
C -->|HTTP Request| F[PHP API Endpoints]
F -->|Database Queries| G[(MySQL Database)]
G -->|Result Sets| F
F -->|JSON Response| C
end
graph TD
A[Welcome Activity] -->|Session Exists| B[Splash Activity]
A -->|New User| C[Login Activity]
C --> D[Signup Activity]
D --> C
C --> E[Home Activity]
B --> E
subgraph Main App Navigation
E --> F[Home Fragment]
E --> G[Explore Fragment]
E --> H[Saved Fragment]
E --> I[Profile Fragment]
E --> J[Your Package Fragment]
E --> K[Search Fragment]
end
F --> L[Selected Location]
G --> L
H --> L
K --> L
L --> M[Maps Activity]
L --> N[Payment Details]
N --> O[Payment Activity]
O -->|UPI Intent| P[UPI App]
Touristo_APP
├── app/ # Android application module
│ └── src/main/
│ ├── AndroidManifest.xml # App permissions & component declarations
│ ├── java/com/polytechnic/touristo_app/
│ │ ├── Constants/ # API endpoint definitions
│ │ ├── Dialog/ # Custom dialog components
│ │ ├── adapters/ # RecyclerView adapters
│ │ ├── models/ # Data models
│ │ └── ... # Activity & Fragment controllers
│ └── res/ # Layouts, drawables, fonts, animations
├── TouristoAPI/ # PHP backend API endpoints
│ └── ... # Database connection & API scripts
└── touristo_database.sql # MySQL database schema & sample data
- Android Studio: Electric Eel (2022.1.1) or newer
- JDK: Java 8 or 11
- Local Server: XAMPP, WAMP, or MAMP for PHP/MySQL
-
Clone the repository
git clone https://github.com/vickyraut/Touristo_APP.git cd Touristo_APP -
Set up backend database
- Import
touristo_database.sqlinto phpMyAdmin. - Copy
TouristoAPIto your local server root (e.g.htdocs). - Update
OnlineAddressinUrls.javawith your local IP address:public static final String OnlineAddress = "http://YOUR_LOCAL_IP/TouristoAPI/";
- Import
-
Configure Google Maps API Key
- Add your Google Maps API key to
AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_GOOGLE_MAPS_API_KEY" />
- Add your Google Maps API key to
-
Build and Run
- Open the project in Android Studio, sync Gradle, and run on an emulator or physical device.
| Permission | Purpose | Where Used |
|---|---|---|
INTERNET |
Make API requests and load remote images | AsyncHttpClient, Picasso |
ACCESS_NETWORK_STATE |
Check network availability | AsyncHttpClient |
ACCESS_FINE_LOCATION |
Get precise device location for distance and maps | Home, MapsActivity |
ACCESS_COARSE_LOCATION |
Get approximate device location | Home, MapsActivity |
READ_EXTERNAL_STORAGE |
Pick profile images from gallery | ProfileFragment |
SEND_SMS |
Send feedback SMS messages | AboutUsFragment |
- Location Distance Math: Calculates distance between user coordinates and destinations using Google Maps
SphericalUtil. - UPI Integration: Triggers native UPI payment apps with pre-filled transaction parameters using
EasyUpiPayment. - Maps Visualization: Displays interactive Google Maps with route polylines and map layer switching.
- Custom UI Transitions: Combines side drawer navigation, smooth bottom bar, ViewPager2 page scaling, and Lottie animations.
- Developed: 2023
- Purpose: Built as a learning project to explore Android application development, REST APIs, Google Maps integration, and UPI payments.
- Current Status: Archived portfolio project maintained for demonstration purposes.
Looking back at this codebase, here is how I would modernize the project today:
- Language: Migrate 100% of the codebase from Java to Kotlin.
- UI Framework: Replace XML layouts and custom view libraries with Jetpack Compose and Material 3.
- Architecture: Refactor to MVVM architecture using ViewModels, StateFlow, and Repository patterns.
- Networking: Replace Loopj AsyncHttpClient with Retrofit 2, OkHttp, and Kotlin Coroutines.
- Database: Implement Room for local database caching and offline support.
- Dependency Injection: Add Hilt for clean dependency management across components.
Vicky V. Raut
AI & Software Engineer
If you found this project helpful, consider giving it a ⭐ on GitHub. Your support is appreciated!
Made with ❤️ by Vicky V. Raut (CodeMonk)





