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.
This template is built using modern Android development practices and libraries:
- Language: 100% Kotlin
- UI: Jetpack Compose for declarative UI.
- Theming: Material 3 (Material You) with dynamic color support.
- **Navigation: ** Compose Navigation 3 for screen transitions.
- 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, andActions. ViewModels follow a declarative approach. - Domain Layer: (Optional) UseCases encapsulate specific business logic (e.g.,
GetFavoriteCoastersUseCase). - Data Layer:
Repositorypattern providing a single source of truth.
- UI Layer: State-driven UI using
- **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:
- Unit Tests: JUnit 4 & Mockk
- Screenshot Tests: Paparazzi
- UI Tests: Compose Test Rules
- 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.
This project follows a standard multi-module setup, which is highly recommended for separation of concerns and build speed.
- 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).
This project is licensed under the MIT License - see the LICENSE file for details.







