December 12, 2025

Car Rental

An Android booking app built to make availability, filtering, and reservation flow feel straightforward on mobile.

Car Rental cover image

Car Rental was designed around a transactional workflow that people usually complete under time pressure. When someone is trying to book transportation, the product has to answer practical questions immediately: what is available, what matches the need, what does it cost, and how quickly can the reservation be finished.

That makes this kind of app a useful design test. It is not enough for the screens to look clean. The booking flow has to reduce hesitation and support confidence from search through confirmation.

Booking flow strategy

The product was structured to keep the booking journey linear without making it feel rigid. Users can search, refine, review options, and move toward reservation with a clear sense of progress, while still being able to back up and adjust choices without losing context.

That matters because booking products fail when every step feels like a form. The interface should feel like guided decision-making, not a bureaucratic sequence.

Android architecture

The app was built in Kotlin with MVVM, Jetpack Navigation, Retrofit, Room, and Hilt. That combination created a clean split between navigation, networking, persistence, and dependency wiring, which made the project easier to scale as more screens and state transitions were introduced.

Using Room also helped the app support a smoother experience when users moved through repeated search and selection flows. The app could retain useful local state instead of treating every screen as a fresh start.

Search, filters, and availability

Availability-driven products live or die by whether search results feel trustworthy. In this project, the emphasis was on making filters understandable and keeping availability-related decisions visible at the right moment in the journey.

Instead of burying key constraints deep in the flow, the interface keeps dates, vehicle relevance, and pricing context close to the decision surface so users can narrow options without second-guessing what the system is showing them.

Detail and confirmation states

Vehicle detail screens were designed to support quick evaluation, not just visual appeal. The user needs enough information to compare cars confidently without being forced through a dense wall of specs before reaching the booking action.

Confirmation-related states then tighten the hierarchy even further. Once someone is ready to commit, the app should remove ambiguity, restate the essentials clearly, and make the next step obvious.

Outcome

Car Rental demonstrates a practical Android implementation of a multi-step reservation product with a focus on clarity and booking momentum. It brings together common mobile engineering concerns, but the stronger lesson is product-oriented: transaction flows work best when every screen reduces uncertainty instead of adding more options to process.

That principle shaped the final experience and remains one of the most useful things this project reinforced for me.

Built by

Arjun Bishnoi

View source code