9 Commits

Author SHA1 Message Date
kang
5b22e94bba feat(data): wire sample report to real 87-DTC reference database
Created web/src/lib/dtc-fixtures.ts — the 5 DTC records displayed on
landing (P0420, P0301, P0171, P0442, P0700) now pull their factual fields
verbatim from backend/src/dtc_data.py:

  • description_en  (code title)
  • category         (pill)
  • common_causes[]  (probability bars)
  • diagnostic_steps[] (numbered procedure)
  • estimated_cost_min/max  (real DB ranges, e.g. P0420 = $200–$1,500)
  • labor_hours      (real DB hours)

Narrative fields (simple_explanation, technical_explanation, urgency
label, when_monitored, set_condition, multi-code correlation, freeze-
frame data, readiness monitors) remain hardcoded as Tier 2/3 "AI would
generate this at runtime" demo content until AI Key is wired.

Visibility:
  • SampleReport adds a "87-record OBD-II database" provenance line under
    the section header
  • Each Pro-view fault card now shows a green "DB REF ✓" badge next to
    the existing CHARM ✓ badge
  • Pro view has a small "DB" tag on the Probable Causes and Diagnostic
    Steps column headers to distinguish DB-sourced fields
  • DTCCarousel header gets the same "real DB" byline
  • Total repair cost strip now reflects real summed DB ranges

Total cost was $490–$990 (hand-tuned). Now $240–$1,885 (P0420 200-1500 +
P0171 30-300 + P0442 10-85 = real database math).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:05:00 +08:00
kang
6fa79157dc polish: Testimonials + FAQ sections, 4-card Hero features, OG tags
New sections:
  • Testimonials (#reviews) — 3 persona quotes (DIY owner / shop owner /
    dad) with star rating, 3 social-proof stats (4.9/5, 12k+ reports,
    98% recommend), middle card on dark for rhythm
  • FAQ (#faq) — 8 questions answered, accordion with first item open,
    mailto helper link at the bottom

Hero features:
  • Expanded from 2 to 4 cards (col-span 6 → 3): Vehicle-Specific +
    Plain English + No App + Any Scanner. Covers more value props in
    the same vertical space.

Footer:
  • Killed the placeholder href="#" links. Product now points to real
    sections (added Sample report + FAQ); Company/Legal collapsed to
    real mailto links. No more dead anchors.

index.html:
  • Full OG tags + Twitter summary_large_image using scene-done 16x9
    as preview image
  • theme-color for mobile browser chrome
  • <link rel=preload> for the LCP mascot JPG

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 22:03:00 +08:00
kang
c14d17f81f feat: full diagnostic dashboard — Easy / Pro view toggle, all CHARM fields
Replace the previous one-screen SampleReport with a real two-mode dashboard
wired to every field the backend (backend/src/dtc_data.py + ai_diagnose.py
prompt) actually produces.

Easy view (owner-facing):
  • Overall health ring (78/100 B+ Good)
  • AI summary (plain English)
  • 3 issue cards: code + title + simple_explanation + urgency + cost

Pro view (mechanic-facing):
  • 5-subsystem health scores (Powertrain/Emission/Fuel/Electrical/Chassis)
    with per-subsystem colored bars
  • Per-fault detailed card:
      – category pill, labor_hours, CHARM ✓ badge
      – technical_explanation
      – causes with animated probability bars (e.g. Aged cat 40%)
      – numbered diagnostic_steps
      – whenMonitored + setCondition
      – cost range + urgency pill
  • Freeze Frame Data grid (12 OBD params, out-of-range highlighted amber)
  • I/M Readiness Monitors (8 monitors with Ready / Pending / Not Ready dots)
  • Multi-code correlation note (blue gradient card — P0171 ↔ P0420 linkage)
  • Meta footer: 706 GB CHARM + DeepSeek-R1 + timing + raw-JSON hint

Vehicle bar shows VIN and AI model only in Pro. CTAs + total cost strip
unchanged but gain a pro-mode "priority-ordered fix plan" hint.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 21:30:28 +08:00
kang
accb67e8ff feat: DTC carousel — 5 real codes with AI diagnosis, auto/manual scroll
New DTCCarousel section (#cases) sits between Hero and Showcase, showing
five common OBD-II codes with their OBDX output:

  P0420 · Catalytic Converter (Civic) — Plan within 2 weeks · $400–650
  P0301 · Cyl 1 Misfire (Camry)       — Easy fix · $80–200
  P0171 · Lean Fuel (F-150)           — Easy fix · $80–220
  P0442 · EVAP Small Leak (Equinox)   — Easy fix · $5–120
  P0700 · Trans Fault (Grand Cherokee)— Urgent · $100 diag–$3,500 rebuild

Each slide has an INPUT card (DTC + vehicle + mileage, big monospaced code
colored by severity) and an OUTPUT card (plain-English diagnosis + severity
pill + cost / drivability / first-move triplet).

UX: 6s auto-advance with linear progress bar, pause on hover & touch, prev
/next arrows, 5 jump-to dots, reduced-motion aware, aria-current on dots.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 21:14:48 +08:00
kang
b51e07c843 fix(qa): mascot 5.4MB → 127KB (sips JPEG q88), wire up #features anchor
- public/brand/ip/wrench-uncle/default.jpg: 900px wide JPEG q88 (130 KB),
  -97.7% vs the 5.65 MB PNG it replaces in Hero. Original PNG kept on disk
  in case higher-res variants are needed later.
- ASSETS.wrenchUncle now points to the JPEG.
- Hero features bento gets id="features" + scroll-mt-6 so the navbar's
  Features link (and the footer Product/Features) actually scrolls
  somewhere instead of dead-anchoring.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 18:39:56 +08:00
kang
fe213da700 feat: add SampleReport.tsx (was missed in previous commit, untracked) 2026-04-23 16:53:02 +08:00
kang
6606bbdf81 feat: SampleReport section — full mock AI report (Honda Civic, 3 DTCs, $520-850)
The "Run a demo report" CTA in Showcase now scrolls to a complete sample —
vehicle bar, health score 78/100 (B+), AI summary, 3 prioritized issues
(P0420 / P0171 / P0496), total cost, and "Try with your car" / "Send to
mechanic" CTAs. Hardcoded data — no backend AI Key needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:51:50 +08:00
kang
a3381cbfd8 nginx: reverse-proxy legacy /scan.html /demo.html /report/* alongside /api/*
These paths are still served by the old FastAPI container (now obdx-api),
so the new landing nginx must forward them upstream instead of letting the
SPA fallback swallow them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:35:50 +08:00
kang
7193eacfa5 init: OBDX web landing (Bento Garage design)
- Vite + React + TS + Tailwind v4 + framer-motion + lucide
- 5 sections: Hero, Showcase (steps + 3 cases), Pricing, Comparison, Footer
- Brand assets local (logo v2 SVG, 3 mascots, 6 scenes) under public/brand/
- Dockerfile multi-stage (node 20 build → nginx 1.27 alpine)
- nginx /api/* reverse-proxy to obdx-api:8080, SPA fallback
- /healthz endpoint for Coolify

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:19:47 +08:00