ideas.
June 11, 2026 3 min read mobileconsumerproductivity

Interval tracker for real-world maintenance tasks

A mobile app that tracks recurring maintenance items — oil changes, filter replacements, appliance servicing — triggered by elapsed time, a custom counter, or both.

The idea

Most recurring maintenance tasks do not fit a calendar. Your car needs an oil change every 5,000 miles or six months, whichever comes first. Your HVAC filter needs replacing every 90 days, sooner if you have pets. Your water heater anode rod needs inspection every three years. None of these fit a time-of-day alarm; they need an interval tracker that works in two dimensions: time elapsed and a measurable counter.

This app stores a list of maintenance items, each with a schedule defined by elapsed time, a numeric threshold (miles, hours, cycles), or both with a "whichever comes first" rule. You update the counter manually when you complete the task, and the app shows what is coming due. A push notification fires when something is overdue or within 10% of its threshold.

Why build this

Car maintenance apps exist but are narrowly focused on vehicles. Home maintenance apps exist but are reminder-heavy, calendar-centric, and require an account. There is no minimal, offline-first app that handles the general case: any recurring task, any measurement unit, any combination of time and count thresholds.

The audience is homeowners, hobbyists, small workshop operators, and anyone who manages physical equipment without a dedicated facilities team. The unit economics are favorable: a single-purchase or free app with no backend means zero ongoing hosting cost for the developer. The entire value is in the local data model and the notification timing logic.

Expo's managed workflow handles push notification certificates on both platforms automatically, and expo-sqlite gives you a real relational database on-device without native build tooling — the combination makes this genuinely shippable by one developer in a month.

Stack sketch

  • Framework: Expo SDK 51 with React Native — managed workflow; no native build tooling required until app store upload
  • Storage: expo-sqlite via Drizzle ORM; the schema is flat (items, service_log, counters) and SQLite is the right choice for offline-first, user-owned data that needs no migration server
  • Push notifications: expo-notifications, scheduled entirely on-device via scheduleNotificationAsync based on the computed next-due date; no server component
  • State: Zustand — the data model is too flat to justify Redux; a single store slice per entity type
  • UI: React Native Paper for Material Design 3 components; no custom design system to maintain at this scale
  • Backup: plain JSON export to the device Files app; restoration from the same format; no cloud account needed

Scope for v1

  • Add, edit, and archive maintenance items with a name, emoji icon, and a schedule: elapsed-time interval, numeric counter with a custom unit label (miles, hours, cycles), or both with "whichever comes first" semantics
  • Log a service event that resets both the counter and the elapsed-time clock, with an optional free-text note
  • Dashboard sorted by days until due or percent-to-threshold; items within 10% shown in amber, overdue in red
  • Push notifications: one notification per overdue item firing at 9 AM on the due date, repeated daily until the item is logged
  • JSON export and import for manual backup
  • Deliberately out of scope for v1: cloud sync, multi-device sharing, photo attachments, a web UI, or a built-in template library

Where it could go

A template library is the highest-leverage follow-on. Common maintenance schedules — car, furnace, refrigerator, chainsaw, hot water heater — are well-documented and largely standardized. Shipping roughly 40 built-in templates that users can add in one tap removes the biggest friction point at first launch, when the app is empty and the value is not yet visible.

After templates, a home-screen widget showing the top three upcoming items is the feature most likely to drive long-term retention. A small iOS widget and an Android Glance widget can be added via Expo Modules without abandoning the managed workflow. Passive visibility — seeing "oil change: 200 mi" on your lock screen without opening the app — is what separates a tool you check once a month from one embedded in your routine.

Watch out for

Local push notifications are silently revoked when the user reinstalls the app or restores to a new device. Make the notification permission request explicit on first launch — explain what the notifications are before calling requestPermissionsAsync. If the user declines, degrade gracefully to in-app badges on the dashboard and do not re-prompt on every open; one clear explanation and a settings link is the correct UX.