Inspiration

Vehicle records often end up scattered across fuel receipts, workshop invoices, phone notes, spreadsheets, and memory. I created RoadTally to give everyday car and motorcycle owners one calm, private place to understand what their vehicle costs, what service is due next, and how efficiently it is running.

What it does

RoadTally is a private, offline vehicle logbook that lets users:

  • Record fuel, service, repairs, expenses, and odometer readings
  • Calculate fuel economy and vehicle costs
  • Create date- and mileage-based service reminders
  • Review every record in one chronological history
  • Manage multiple cars and motorcycles
  • Back up, restore, and export their data

The core app remains fully usable for free. RevenueCat powers an optional ad-free purchase that removes advertising while supporting the app's continued development.

How I built it

I built RoadTally with React Native, Expo SDK 54, TypeScript, and Expo Router. I used a feature-based architecture to keep vehicle records, subscriptions, shared services, and reusable components clearly separated.

Vehicle data is stored locally with MMKV for fast, offline access. Local notifications power maintenance reminders, while backup and CSV export features give users control over their records.

I integrated RevenueCat through a dedicated purchase service that loads the current Offering, displays store-localized prices, checks the ad_free entitlement, supports purchases and restoration, and handles loading, cancellation, failure, and offline states.

The custom paywall uses live RevenueCat Offering data instead of hard-coded products. Advertising is initialized only after RevenueCat resolves the customer's entitlement, preventing returning paid users from briefly seeing ads.

Challenges I ran into

The biggest challenge was combining monetization with a privacy-first, offline product. RoadTally must remain useful when RevenueCat or the app stores are unavailable, while still ensuring that existing paid customers never receive ads.

I addressed this by treating entitlement resolution as an explicit state. The app does not assume that an unresolved customer is a free customer; it waits for a valid RevenueCat customer snapshot before enabling advertising.

Another challenge was supporting store-specific products, localized prices, restoration, cancellations, and payment failures without making the paywall complicated. Real purchase testing also required native development builds because Expo Go cannot process store transactions.

Finally, I had to keep all these systems from interfering with RoadTally's primary goal: letting someone save a vehicle record in seconds.

Accomplishments that I'm proud of

I am especially proud of building a complete local-first experience without requiring an account or cloud connection. Users retain control over their vehicle history through backup, restore, and export tools.

I am also proud of the RevenueCat integration. The custom paywall remains driven by live Offering data, supports recoverable purchases, and coordinates safely with advertising.

Most importantly, monetization does not hold user data hostage. Every logging and record-management feature remains available, while the purchase provides a clear benefit: an uninterrupted, ad-free experience.

What I learned

I learned that purchase integration involves much more than displaying a price and purchase button. A reliable implementation must account for entitlement resolution, restoration, localization, offline behavior, cancellation, platform differences, and every feature affected by a purchase.

I also learned that privacy and monetization do not have to conflict. RevenueCat allowed me to create a transparent value exchange without introducing accounts or placing essential functionality behind a subscription.

The project reinforced that trust is itself a product feature. Local storage, data portability, transparent pricing, and dependable restoration all contribute to an app that users can rely on for years.

What's next for RoadTally: Your Private Vehicle Logbook

Next, I plan to complete real-store purchase testing across Android and iOS, validate purchase restoration on fresh installations, and refine the paywall using user feedback.

I also want to expand reporting, improve accessibility and localization, add support for more vehicle and fuel types, and continue optimizing performance for users with years of records.

The long-term goal is to make RoadTally the simplest and most trustworthy personal vehicle logbook—fast enough for everyday use, private by default, and sustainable without compromising its core experience.

Built With

Share this project:

Updates

Submission history