Skip to content

Repository files navigation

DriveKeeper

A personal car maintenance companion. Oil changes, tyre rotations, filters, MOT and registration, and even the car wash — tracked in one place, with reminders that account for how much you actually drive.

Status: planning. No code yet. This repo currently holds the plan.

The idea in one paragraph

Most maintenance reminders are wrong because they're calendar-based, while half of car maintenance is distance-based — and nobody knows their odometer reading offhand. DriveKeeper keeps a running estimate of your mileage from occasional check-ins, then converts every interval, distance or calendar, into a single answer: what needs attention, and when.

Constraints shaping the plan

  • No app stores. Distributed as an installable web app (PWA), which is also what makes external billing possible — Apple and Google mandate their own in-app purchase systems for digital subscriptions.
  • The second vehicle is the paywall: free is one car, Pro unlocks the garage.
  • ≥10 paying customers is the success condition, so the roadmap is ordered by shortest path to a paid invoice, and distribution is planned as a deliverable.
  • US, UK, and EU units and regulations from launch — including the fact that the UK measures distance in miles, fuel in litres, and economy in imperial mpg.

Documents

Doc What's in it
docs/PLAN.md The master plan — platform recommendation, scope, the garage and paywall, units and regions, the reminder strategy, billing and VAT, milestones, risks, open questions
docs/DATA_MODEL.md Postgres schema and the core algorithms: distance estimation, due calculation, reminder planning
docs/DECISIONS.md 16 ADRs, including the four that later decisions superseded
data/schedule-templates/ Maintenance interval templates (imperial + metric) and per-region legal task packs

Stack

Split by surface, served from one origin:

Path Stack
/, /pricing, /legal Next.js, statically exported — SEO decides whether strangers convert
/checkin/[token] Next.js — the odometer check-in, must open instantly
/app/* Flutter Web — the logged-in product
API, cron, webhooks Supabase Edge Functions — this is the backend

Hosted on Cloudflare Workers (static assets). Supabase for Postgres, magic-link auth, and storage (first-class SDKs in both TypeScript and Dart). Resend for the email reminder backbone, scheduled by GitHub Actions cron. Billing starts as a payment link plus a manually granted entitlement, and becomes Polar (merchant of record, so EU VAT is never yours) once ten people have paid.

Running cost: $0/month, plus ~$12/year for a domain. Every tier used permits commercial use — that constraint drove the hosting choices (ADR-018).

The maintenance engine lives server-side in TypeScript, not in the Flutter client — the reminder cron needs it too, and one implementation beats two.

Start reading at docs/PLAN.md.

About

Car maintenance app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages