Skip to content

Roller Coasters is a personal playground where I experiment with modern Android development practices, libraries, and tools. It is a space to try new APIs, patterns, and approaches—especially around Jetpack Compose—without the constraints of production code. The project is under active development.

Notifications You must be signed in to change notification settings

Sottti/RollerCoasters

Repository files navigation

Roller Coasters

API Compose BOM Navigation Kotlin GitHub last commit GitHub repo size License

Overview

Roller Coasters is a personal playground where I experiment with modern Android development practices, libraries, and tools. It is a space to try new APIs, patterns, and approaches—especially around Jetpack Compose—without the constraints of production code.

The project is under active development and the codebase is not yet stable or nearly finished.

⚙️ Tech Stack & Architecture

This template is built using modern Android development practices and libraries:

  • Language: 100% Kotlin
  • UI: Jetpack Compose for declarative UI.
  • Architecture: Follows Google's official "Guide to app architecture", combining MVVM (Model-View-ViewModel) with principles from Clean Architecture.
    • UI Layer: State-driven UI using ViewModel, State, and Actions. ViewModels follow a declarative approach.
    • Domain Layer: (Optional) UseCases encapsulate specific business logic (e.g., GetFavoriteCoastersUseCase).
    • Data Layer: Repository pattern providing a single source of truth.
  • **Asynchronicity: ** Kotlin Coroutines & Flows for managing background tasks and data streams.
  • Dependency Injection: Hilt for managing dependencies throughout the app.
  • Networking: Ktor Client for REST API communication.
  • Serialization: Kotlinx.serialization for JSON parsing.
  • Testing:

📱 App Features

  • Explore Feed: View roller coasters, filterable by various criteria (specs, materials, etc.).
  • Favorites: Mark and view your favorite roller coasters.
  • Details Screen: See detailed information and images for each coaster.
  • Settings:
    • Customize theme (Light/Dark/System)
    • Enable/disable dynamic color
    • Adjust color contrast
    • Change language (English, Spanish and Galician)
    • Select measurement system (Metric/Imperial).
  • Modern UI:
    • Dynamic Theming (Material You).
    • Support for multiple languages.
    • Edge-to-edge display.
    • Predictive back navigation.
  • About Screen: Information about the project/developer.

📷 Screenshots

💡 Light Theme

🌙 Dark Theme

📁 Project Structure

This project follows a standard multi-module setup, which is highly recommended for separation of concerns and build speed.

🚀 Planned Features or Improvements

  • Search: Find roller coasters by name.
  • Parks: Add information about amusement parks.
  • Enhanced Discovery: More filtering options (manufacturer, park, etc.).
  • Robustness: Improved error handling and empty state displays.
  • UI/UX: Add animations; improve support for large screens and foldables.
  • Navigation: Migrate fully to Jetpack Compose Navigation 3 (if not already done).

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Roller Coasters is a personal playground where I experiment with modern Android development practices, libraries, and tools. It is a space to try new APIs, patterns, and approaches—especially around Jetpack Compose—without the constraints of production code. The project is under active development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages