Skip to content
/ tripsync Public

Kotlin + Android Studio travels management app with an authenticator and personal profile to keep all trips. Connected to a firebase database.

Notifications You must be signed in to change notification settings

t2ne/tripsync

Repository files navigation

✈️ TripSync

TripSync is an Android application developed in Kotlin that allows users to plan, organize, and synchronize trips in an intuitive and collaborative way. It includes features such as itinerary creation, plan sharing, photo management, and offline support.


📖 Project Description

TripSync was created with travelers in mind who want to easily organize multiple trips in a single location. The application allows:

  • Create and edit trips with personalized information
  • Add and view photos associated with trips
  • Share plans with other users
  • Use the application in offline mode, with later synchronization
  • Manage multiple trips with a simple and functional interface

🧭 Project Structure

TripSync
│
├── UI
│   ├── LoginActivity
│   ├── RegisterActivity
│   ├── HomeActivity (Trip List)
│   ├── CreateTripActivity
│   ├── IntroActivity
│   ├── EditTripActivity
│   ├── EditProfileActivity
│   └── TripPhotosActivity
│
├── Adapters
│   ├── TripAdapter
│   ├── IntroSliderAdapter
│   └── PhotosAdapter
│
├── Models
│   ├── Trip
│   ├── IntroSlide
│   └── TripPhoto
│
├── Utils
│   └── ImageUtils
│
└── Database
    ├── AppDatabase
    ├── ImageDao
    └── ImageEntity

🔄 Data Flows

Communication between different parts of the application follows a layered architecture, facilitating maintenance and separation of concerns:

  • UI: Receives user input and displays data received from sources (Firebase/Room).
  • Adapters: Bridge the gap between data and visual components like RecyclerView.
  • Models: Structures that represent data used locally and remotely.
  • Database (Room): Allows saving images locally and accessing them offline.
  • Firebase (Firestore/Storage/Auth): Remote data source for synchronization, authentication, and cloud storage.
  • Utils: Support for repetitive operations, such as image manipulation or formatting.

🔁 Component Interactions

  • LoginActivity ↔ Firebase Auth
    Allows logging in and authenticating users. On success, redirects to HomeActivity.

  • HomeActivity ↔ Firestore
    Retrieves trips from the authenticated user and displays them using TripAdapter.

  • CreateTripActivity / EditTripActivity ↔ Firestore + Room
    Allows creating or modifying trips. Associated images can be saved locally (Room) and in the cloud (Storage).

  • TripPhotosActivity ↔ Room + Firebase Storage Shows locally saved images, synchronizes with the cloud, and allows adding new photos from the gallery.

  • Offline: When the user is offline, images are saved in Room and synchronized with Firestore/Storage as soon as there is an internet connection.


📦 Dependencies and Technologies

This project uses the following libraries:

  • Firebase Authentication – User authentication
  • Firebase Firestore – Remote data storage
  • Firebase Storage – Cloud image storage
  • Firebase Crashlytics – Crash reports
  • Room Database – Local image storage
  • ViewBinding – Safe view access
  • Material Components – Modern and consistent interface
  • RecyclerView & CardView – Efficient data listing
  • Jetpack Libraries – AppCompat, Core, Activity, ConstraintLayout
  • Kotlin Coroutines – Asynchronous and reactive
  • MockK – Unit and instrumentation testing

🔧 Configuration and Installation

Requirements

  • Android Studio Electric Eel or higher
  • Minimum SDK: Android 7.1 (API 25)
  • Target SDK: Android 14 (API 35)
  • Kotlin 1.9.0 or higher
  • Java 11

Compilation Steps

git clone https://github.com/t2ne/tripsync.git
  1. Open Android Studio
  2. Clone project from a remote repository
  3. Paste the link https://github.com/t2ne/tripsync.git
  4. Create the project
  5. Wait for Gradle synchronization
  6. Connect a device or emulator
  7. Run the application

📱 Usage Instructions

  1. Log in or create an account
  2. Create a new trip with title, description, and dates
  3. Associate locations with the trip
  4. Add photos directly from the gallery
  5. Edit or delete trips as needed
  6. Share plans with other users

📋 Functional Requirements

  • Create, edit, and delete trips
  • Add and remove photos associated with trips
  • Register and authenticate users with Firebase
  • Synchronize data with Firestore (online and offline)
  • Save images locally with Room
  • Share trips with other users

❗ Non-Functional Requirements

  • The application must work offline with automatic synchronization when online
  • Intuitive and responsive interface
  • Compatibility with Android API 25+ devices
  • Smooth performance without visible delays
  • Security guaranteed with Firebase authentication
  • Modular and easily maintainable code

🔐 Permissions Used

The application requires the following permissions, defined in AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

These permissions are used for:

  • Internet access (Firebase)
  • Access to image gallery (dependent on Android version)

👥 Authors

About

Kotlin + Android Studio travels management app with an authenticator and personal profile to keep all trips. Connected to a firebase database.

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages