Skip to content

Solaris is an Android app showcase built with Kotlin and Jetpack Compose, delivering location insights by leveraging data from multiple public APIs, including AI-generated data. It demonstrates the use of Coroutines, Dependency Injection, Room, Retrofit, Firebase, WorkManager, Fused Location Provider, and more.

License

Notifications You must be signed in to change notification settings

DavidRevolt/Solaris

Repository files navigation

🌍 Solaris - Location-Based Data Aggregator

Solaris is a case study Android application that demonstrates how to fetch location data and enrich it with related information from multiple sources.
It integrates points of interest (POI) (AI-generated using Firebase AI Logic), weather, and other contextual details to showcase modern Android development practices.

🚀 Feature Highlights

  • 🛰️ Real-time location tracking with Google Play Services
  • 💻 AI-generated data provided by Firebase AI Logic (Gemini models)
  • 🗂️ Offline-first architecture with local data storage and background syncing
  • ⏳ Persistent background work handled by WorkManager (DelegatingWorker + Hilt) for data syncing
  • 🎨 Modern UI built with Jetpack Compose and Material 3, using Coil for images and Lottie for animations
  • 🌐 Networking via Retrofit and OkHttp
  • 🔒 Runtime permissions handled via Accompanist Permissions
  • 🏗 Modular architecture with Hilt for dependency injection

📸 Screenshots

GIF 0 GIF 1 GIF 3 GIF 5

🛠️ Tech Stack

Core

Data

Background Work

UI/UX

🚀 How It Works

  1. Search Location - The user searches for a location by name or through device coordinates.
  2. Sync Related Data - SyncRelatedDataUseCase launches coroutines to sync weather, POI, and other related data
    from their dedicated repositories in parallel, emitting real-time sync status updates.
  3. Store & Cache - Data is cached locally using Room for offline access.
  4. Display Results - GetLocationsWithRelatedDataUseCase aggregates the data and exposes it to the UI as LocationWithRelatedData.
  5. Background Sync - WorkManager ensures data stays up-to-date by running periodic syncs in the background.

🔧 Setup and installation

Note

All APIs used in this project are free to use.

  1. Clone the repository

  2. Set up MeteoSource API key (for location and weather data)

    • Sign up at Meteosource
    • Place your API key in the root-level apikeys.properties file:
      METEOSOURCE_API_KEY=<YOUR_API_KEY>

    During the build process,
    if apikeys.properties file doesn't exist, the network module’s Gradle script will automatically generate it with the required field.

  3. Set up Firebase AI Logic (for AI-generated POI data)

    • Follow Get started with the Gemini API to create a Firebase project and enable Firebase AI Logic.
      Be sure to place google-services.json in the app module: app/google-services.json.
      Enable AppCheck in your Firebase project to prevent API abuse.
  4. Run the app
    Build and run the app on an Android device or emulator.


📜 License

Solaris is licensed under the Apache License 2.0. See the LICENSE file for details.

This project is licensed under the MIT License.

About

Solaris is an Android app showcase built with Kotlin and Jetpack Compose, delivering location insights by leveraging data from multiple public APIs, including AI-generated data. It demonstrates the use of Coroutines, Dependency Injection, Room, Retrofit, Firebase, WorkManager, Fused Location Provider, and more.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages