Sri Lanka's vehicle rental market has traditionally been fragmented. Owners relied on Facebook groups and word-of-mouth, while renters struggled to find verified vehicles, transparent pricing, and real-time availability.
| Feature | RentEase | Facebook Groups | ikman.lk |
|---|---|---|---|
| Verified Listings | ✅ Yes | ❌ No | Partial |
| Real-time Chat | ✅ Yes | ❌ No | ❌ No |
| Availability Calendar | ✅ Yes | ❌ No | ❌ No |
| Location-based filtering (Province/District/City) | ✅ Yes | ❌ No | Basic |
To ensure the platform addressed real needs, I conducted lightweight stakeholder interviews and competitive analysis, then defined distinct user journeys for the two primary sides of the marketplace — Vehicle Owners and Renters. Requirements were captured as jobs-to-be-done and prioritized (MoSCoW) into an MVP backlog.
Has 2 vehicles, wants passive income
"I want to rent out my extra car, but I don't want to constantly answer calls just to say the car isn't available this weekend."
Frequent renter for family trips
"I hate scrolling through messy Facebook groups. I just want to search for an SUV near me and see if it's available today."
The design evolved from rough wireframes to a polished, premium dark-mode interface using glassmorphism principles to establish trust and modernity. The landing page focuses on a clear value proposition: "Find Your Perfect Ride Today", inviting users to discover vehicles from trusted owners across Sri Lanka.

RentEase is packed with production-ready features designed for performance and scale.
Built a low-latency chat system using Firestore `onSnapshot`. When a user messages an owner from a vehicle page, the chat automatically attaches the vehicle context (thumbnail and title) to the conversation, ensuring owners always know which vehicle is being discussed. Features read receipts and unread badges.

Implemented cascading Province → District → City selection for listings and search. Users set a location to fetch "Near Me" results and see proximity-ranked vehicles around the selected city, powered by localized Sri Lankan city coordinate mapping and dynamic district expansion.

To ensure fast loading times on mobile networks, vehicle uploads go through client-side WebP compression (`browser-image-compression`). The app generates three variants (thumb, medium, large) and serves them using responsive `srcSet` tags, reducing bandwidth consumption significantly.

The platform is built on a modern serverless stack, allowing for rapid development and infinite scaling without managing infrastructure.
Ensuring reliability in a marketplace is critical. I implemented a robust manual testing strategy and quality checks to guarantee a seamless user experience.
Scenario: User attempts to view a chat thread they are not a participant in.
Expected: Firestore security rules deny read access. UI gracefully handles the error and redirects to inbox.
Status: Passed ✅
Scenario: After Email signup, user signs in with Google.
Expected: Accounts link to a single profile; existing listings and messages remain intact.
Status: Passed ✅
Scenario: Image pipeline serves correct variant via srcSet on a high-DPR mobile device.
Expected: Browser requests appropriate medium/large variants; no layout shifts occur in the gallery.
Status: Passed ✅
Building RentEase from scratch to a production-ready application was a massive learning experience in full-stack architecture.
What Worked Well: Firebase's real-time capabilities were perfect for the chat system and calendar syncing. The decision to use a 3-tier image optimization pipeline drastically improved load times, especially for users on slower mobile networks in Sri Lanka.
Challenges: Handling complex global state across 30+ routes and managing edge cases in authentication (like linking Email and Google Auth accounts) required deep dives into React Context and Firebase documentation.
Future Improvements: I plan to integrate a direct payment gateway for booking deposits and migrate the codebase to TypeScript for better developer experience and type safety.