RentalWheels
Modern Android Car Rental Platform
Filter Pipeline
5 Criteria, One Search
Users narrow down hundreds of vehicles to their perfect match through a cascading filter system — each criterion refines the results in real time.
Firestore compound queries + client-side Flow operators for instant results
Overview
The Rental Experience
RentalWheels is a modern Android car rental application that reimagines how users browse, filter, and book vehicles. With an interactive catalog, smart multi-criteria filtering, and a real-time Firebase backend, the app delivers a seamless rental experience from discovery to booking.
Built with Jetpack Compose and Material Design 3, it features dynamic theming (Light/Dark/System), a booking analytics dashboard, and real-time Firestore synchronization with offline support — showcasing modern Android architecture best practices.
Interface
App Screens
Home
Browse Cars
Car Details
Smart Filters
Bookings
Settings (Dark) Technical
Architecture & Stack
MVVM + Repository Pattern
Clean separation of concerns with Hilt dependency injection and Firebase-backed repositories.
- UI Layer: Jetpack Compose with Material 3
- ViewModel: StateFlow + Coroutines for async state
- Repository: Firestore CRUD with offline cache
- DI: Hilt modules for Firebase & repository injection
Technology Stack
Data Flow
Features
Core Implementation
Smart Vehicle Filtering
Advanced multi-criteria filtering system allowing users to find their perfect rental by brand, year, fuel type, transmission, and price range — all with real-time results.
- 5 simultaneous filter criteria with instant Compose recomposition
- Firestore compound queries with client-side fallback filtering
- Price range slider with dynamic min/max from available inventory
Booking Analytics
Dashboard with booking history, spending trends, and usage statistics via AnalyticsViewModel.
- Custom Compose chart components
- Aggregated Firestore queries
- Time-based trend analysis
Dynamic Theming
Full Light/Dark/System theme support with Material 3 dynamic color extraction.
- Material 3 dynamic color system
- DataStore theme persistence
- Smooth animated transitions
Firebase Auth & Sync
Secure user authentication with real-time Firestore data synchronization and offline support.
- Firebase Auth with email/password
- Firestore offline persistence
- Cloud Storage for vehicle images
Highlights
Technical Deep Dive
Type-Safe Navigation
Compose Navigation with type-safe route definitions, deep linking support, and seamless back-stack management across the entire app flow.
Reactive Data Layer
Kotlin Flow-based repository layer with Firestore snapshot listeners that push real-time updates through the ViewModel to the UI automatically.
Coil Image Pipeline
Coil integration for efficient vehicle image loading with disk caching, crossfade animations, and placeholder shimmer effects.
Booking Cart System
Simulated booking workflow with cart management, date range selection, price calculation, and booking confirmation — all backed by Firestore transactions.
Challenges
Problems Solved
Complex Filter Composition
Firestore's limited compound query support meant combining 5 filter criteria required creative architecture.
Solution: Hybrid approach — primary filter via Firestore query, secondary filters applied client-side with Kotlin Flow operators for reactive chain processing.
Real-time Availability
Showing accurate vehicle availability while multiple users browse and book simultaneously.
Solution: Firestore snapshot listeners for real-time inventory updates, with optimistic UI updates and conflict resolution on booking confirmation.
Takeaways
Key Learnings
- Compose + Firebase — building reactive UIs that respond to real-time Firestore updates through Flow-based data pipelines.
- Dynamic Theming — implementing Material 3's dynamic color system with theme persistence and smooth transitions across the entire app.
- Complex Filtering UX — designing a filter system that feels instant and intuitive while handling multiple asynchronous data sources.
- Analytics Architecture — structuring ViewModel and repository layers to efficiently aggregate and present booking trend data.
Interested in the code?
RentalWheels is open source. Explore the architecture, patterns, and implementation details.