Skip to content

Repository files navigation

Touristo Logo

Touristo

Android Travel Discovery & Booking Application

An Android application for discovering tourist destinations, viewing routes on Google Maps, and booking travel packages.

Android Platform Java 8 Gradle Version Status

Touristo Project Banner

Overview

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.

Key Capabilities

  • 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

Screenshots

This project is showcased through screenshots below.

Home Dashboard User Login Sign Up
Home Dashboard User Login Sign Up
Live Search Explore Grid Navigation Drawer
Live Search Explore Grid Navigation Drawer

Features

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.

Tech Stack

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

Architecture

The project uses an Activity and Fragment based structure on Android, communicating with a custom PHP REST API connected to a MySQL database.

System Overview

graph TD
    A[Android App] --> B[PHP REST API]
    B --> C[MySQL Database]
Loading

System Component Architecture

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
Loading

Screen Navigation Flow

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]
Loading

Folder Structure

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

Installation

Prerequisites

  • Android Studio: Electric Eel (2022.1.1) or newer
  • JDK: Java 8 or 11
  • Local Server: XAMPP, WAMP, or MAMP for PHP/MySQL

Setup Instructions

  1. Clone the repository

    git clone https://github.com/vickyraut/Touristo_APP.git
    cd Touristo_APP
  2. Set up backend database

    • Import touristo_database.sql into phpMyAdmin.
    • Copy TouristoAPI to your local server root (e.g. htdocs).
    • Update OnlineAddress in Urls.java with your local IP address:
      public static final String OnlineAddress = "http://YOUR_LOCAL_IP/TouristoAPI/";
  3. 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" />
  4. Build and Run

    • Open the project in Android Studio, sync Gradle, and run on an emulator or physical device.

Permissions

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

Project Highlights

  • 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.

Project Background

  • 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.

What I Would Improve Today

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.

Author

Vicky V. Raut
AI & Software Engineer

Portfolio GitHub LinkedIn Email



If you found this project helpful, consider giving it a ⭐ on GitHub. Your support is appreciated!

Made with ❤️ by Vicky V. Raut (CodeMonk)

About

Creating app that can help travellers

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages