Operators and fleet managers expect a daily vehicle condition check before a vehicle goes on the road. In practice, that often means paper forms that are easy to lose, skip, or fill inconsistently — and hard to produce when someone asks for a specific date.
Vehicle Daily Check is AEK Tech's own SaaS product: a twelve-section checklist aligned to council-style requirements, typed photo evidence, an immutable audit trail for every submitted day, and a live Compliance workspace for fleet operators. Drivers get a guided phone check and on-demand PDF proof; operators invite drivers, see who checked today, and browse inspections without chasing WhatsApp photos.
What users are saying
“I used to keep paper checklists in the glovebox and could never find the right week when licensing asked. Now I do the whole thing on my phone in about ten minutes — photos included. Last time they wanted a specific date I just exported the PDF. No panic, no digging through folders.”
David
Private hire driver · West Midlands
“I'll be honest — I used to skip days when I was rushed. Paper just sat in the car. This takes me maybe eight minutes before I head out. The streak thing sounds daft but it actually got me into a habit.”
Sarah
Private hire driver
The problem
Before Vehicle Daily Check, drivers and fleet operators faced predictable friction with paper-based compliance and ad-hoc photo chasing.
| Area | Problem | Impact |
|---|---|---|
| Daily checks | Paper forms or skipped checks | Licensing risk if checks are missing or inconsistent |
| Record keeping | Paper easy to lose or fill inconsistently | No reliable history when an officer asks for a specific date |
| Audit trail | No centralised record of who checked, when, or what was found | Inspectors cannot verify compliance; drivers and operators cannot prove diligence |
| Evidence | Photos sit in camera rolls, unlinked to the checklist | Hard to produce coherent proof under time pressure |
| Inspection visits | Searching paper for one date is slow and stressful | Gaps in the daily record surface during audits and compliance visits |
| Safety culture | No structured daily messaging for licensed drivers | Missed professional standards and weak inspection habits |
| Existing fleet tools | Generic operator-focused apps at higher price points | Solo drivers, small operators and councils lack a simple, affordable fit |
Product screens
Demo / product UI from the live driver app and fleet Compliance workspace (seeded demo data, no real customer PII).
Tap or click any screen to enlarge. Pinch or use + / − to zoom, then swipe to browse.
What we built
Drivers (web PWA + Expo mobile)
- Daily inspection wizard — Wolverhampton 12-section checklist with Correct / Faulty flow
- Photo evidence — up to three photos per check, stored with the record
- Timestamped submission — records locked and immutable after submit (no driver signature or declaration field yet)
- Draft resume with grace period; missed-check handling for expired drafts
- Dashboard with today's status, safety reminder, streak tracking, and fleet-covered badge when invited
- Inspection history, on-demand PDF export, and Driver Safety Centre
- 7-day trial, Stripe personal plans from £4.99/month, trial countdown banners
Fleet operators — Compliance workspace (live)
- Create a fleet, invite drivers by email, and see who checked today
- Compliance dashboard — org KPIs, done / missing / faults, drivers, vehicles, seats
- Drivers list with range filters, search, and per-driver completion
- Browse submitted inspections and download PDF proof
- Fleet lifecycle — invites, revoke, remove/leave, admin transfer, close fleet, pause/restore
- Fleet trial + per-seat Stripe billing (e.g. £4.99 / seat / month) with Billing Portal
Web PWA only (not yet on Expo)
- Stats screen — current streak, monthly totals, faults logged, and 14-day completion heatmap
Compliance & reporting
- Timestamped PDF with driver details, vehicle registration, mileage, and every section result
- Immutable audit trail for every submitted day — records locked after submission
- Council-layout checklist template (Wolverhampton first) — licensing proof via PDF today, not a council portal
Marketing & acquisition
- Live marketing site — drivers and fleet operators (vehicledailycheck.com)
- Fleet marketing page and self-serve fleet register
- Driver pricing with 7-day full-access trial and subscription plans
- Book-a-demo flow where operators want a walkthrough
Billing & infrastructure
- Driver registration starts 7-day full-access trial — no credit card required; one trial per driver
- Stripe Checkout for personal plans — card saved, first charge deferred until trial ends
- Fleet seat capacity + Stripe Billing Portal for operator subscriptions
- Computed subscription access — active, expired, or inactive from period end; read-only history when lapsed
- Progressive trial reminders on web and mobile
- API-first monorepo — one Django API for web, mobile, fleet, and marketing
- Cloudflare R2 for private evidence photos with presigned URLs
Internal admin (limited)
- /admin/safety aggregate safety stats — not a dedicated council inspector portal
Roadmap (next phases)
- Dedicated council inspector portal as a separate product surface
- Expo stats screen parity with web PWA
- Driver signature or declaration attestation at submission
- Native iOS and Android app store releases
- Flexible inspection templates for different licensing requirements
Technology choices and outcomes
| Component | Technology | Why it matters |
|---|---|---|
| Marketing site | Astro 7 + Tailwind CSS 4 | Driver and fleet acquisition site with pricing, demo booking, and product screenshots. |
| Web driver app | Vue 3.5 + Vite 8 + PWA | Installable browser app for drivers — no app-store friction required to start. |
| Fleet Compliance workspace | Vue 3 + same Django API | Operator KPIs, drivers, vehicles, inspection browse, invites, and PDF access. |
| Mobile app | Expo SDK 54 + React Native | Cross-platform iOS and Android delivery from one codebase (app stores coming soon). |
| Backend / API | Django 5 + DRF | One API for inspections, fleet lifecycle, billing, evidence, PDFs, and mobile clients. |
| Database | PostgreSQL | Relational audit records tied to authenticated accounts and fleet membership. |
| Hosting | Vultr VPS, nginx, gunicorn | Simple production deployment with predictable operating cost. |
| Evidence storage | Cloudflare R2 | Private object storage for evidence photos with time-limited access. |
| Billing | Stripe Checkout + Billing Portal | Personal plans and fleet per-seat billing from £4.99 — trials, portal, seat capacity. |
| PDF export | xhtml2pdf | Timestamped inspection records generated on demand for drivers, operators, or licensing asks. |
Security model
The product is designed for authenticated access, private evidence storage, and audit integrity. We avoid broad claims like "fully encrypted" or certified security until those controls are independently verified.
- Production traffic uses HTTPS/TLS; secure cookies, SSL redirect, and HSTS are enabled when deployed with production settings.
- Web sessions use HttpOnly JWT cookies with CSRF protection; mobile clients use bearer tokens stored in secure device storage.
- Evidence photos are designed for private object storage with authenticated, time-limited access rather than public file URLs.
- Submitted inspection records are immutable and tied to authenticated driver accounts.
- PDFs are generated on demand and access-controlled at download time. Once a driver downloads a PDF, it behaves like a normal shareable document.
- Passwords are hashed by Django, and login abuse protection locks accounts after repeated failed attempts.
Hardest technical challenges
The hard part was not drawing screens. It was keeping dual clients, immutable compliance records, private evidence, and live Stripe access states aligned under real-world failure modes.
01
Dual-client authentication
The same API serves a Vue PWA (HttpOnly JWT cookies + CSRF) and an Expo app (Bearer tokens). Login, refresh, and logout shapes differ per client — solved with shared JWT utilities and client detection.
02
PDF generation with private R2 evidence
Inspector PDFs must embed photos from a private R2 bucket. Server-side HTML → xhtml2pdf resolves local paths or signed URLs before render — avoiding heavy GTK dependencies on dev machines.
03
Draft grace period and compliance integrity
Drivers may not finish a check same-day. Configurable grace windows, incomplete-draft banners, and auto-abandon for expired drafts — while keeping submitted records immutable.
04
Stripe checkout under real-world failure modes
Users may close the browser after checkout, or webhooks arrive late. Completion retries, status sync, and webhook backup keep subscription access aligned with trial end and renewal periods.
05
Trial access without a separate billing tier
Trial is modelled as subscription_source, not a plan — access_state is computed from current_period_end, not stored flags. trial_used prevents restart, SubscriptionEvent logs audit snapshots, and registration starts the trial in the same database transaction as user creation.
06
Stripe subscription lifecycle
Model A trial behaviour, webhooks, Billing Portal cancellation, auto-renewal state, and payment failure grace all had to map cleanly into one app-facing access model.
Results
Qualitative outcomes — no invented user or revenue metrics.
| Metric | Before | After |
|---|---|---|
| Daily check record | Paper forms or nothing | Structured 12-section digital checklist |
| Audit trail | None / scattered paper | Timestamped, immutable submitted records |
| Photo evidence | Camera roll, unlinked | Typed photos stored with each inspection |
| Proof on demand | Manual search through paper | Timestamped PDF for any submitted date |
| Fleet visibility | WhatsApp photos / paper chase | Operator Compliance view of daily checks |
| Completion tracking | No visibility | Streak, monthly stats, and 14-day heatmap on web PWA |
| Mobile access | Paper only | Installable Vue PWA + Expo mobile app |
| Check duration | Variable, often skipped | Designed to be quick before shift (~5–10 minutes with photos) |
Where the platform is now
Vehicle Daily Check is live: marketing at vehicledailycheck.com, driver web PWA and fleet Compliance workspace in production, Stripe billing on AEK Tech UK Ltd (personal plans and per-seat fleet billing from £4.99). Expo mobile shares the same API for core inspection flows; native store releases are still coming. Wolverhampton is the first checklist template. Drivers start a 7-day trial with no card; fleets can register, invite drivers by email, and manage seats through Stripe. Licensing proof today is timestamped PDF export — a dedicated council inspector portal is still on the roadmap. Product support: support@vehicledailycheck.com · AEK: hello@aektech.co.uk
Vehicle Daily Check is a product of AEK Tech UK Ltd. Contact hello@aektech.co.uk · Product support support@vehicledailycheck.com