Site Tools


Sidebar

Work

Projects Travel Singapore Socials (External)

projects:automotive:shinyshitbox

ShinyShitbox

Client-side vehicle maintenance tracker. All data lives in your browser's IndexedDB — no account, no server, no sync.

Open index.html directly in any browser. No installation or local server needed.

All data is stored only in your browser's IndexedDB. It will be lost if you clear browser data, switch browsers, or reinstall your OS. You should regularly export a backup via Settings → Data → Export.

Features

  • Multi-vehicle fleet with per-vehicle service history
  • Part lifecycle tracking — install date, odometer, grade/variant, condition at removal
  • Dual-interval due dates (km + calendar) with binding-constraint urgency
  • Condition estimation (0–100%) and weighted vehicle health score
  • Odometer interpolation — estimates install odometer from reading history
  • Service clustering — groups parts due within ±15 days / ±1000 km
  • Toyota/Daihatsu EPC data (data/parts-db.json) pre-fills intervals and OEM part numbers
  • Full export/import backup as JSON
  • Dark mode, configurable alert thresholds, km/miles, 12 currency options
  • Localisation — English, Bahasa Melayu, Simplified Chinese, Traditional Chinese; auto-detected from browser language with a manual override in Settings

Built with Claude Code

This project was built entirely through vibe coding with Claude Code. No production code was written by hand.

How it was developed

The loop: describe what you want → Claude reads the relevant files and writes the code → open the browser and try it → give feedback → repeat.

Key decisions made during sessions:

  • No build step — deploy anywhere static. No React, TypeScript, or bundlers.
  • Dexie.js over raw IndexedDB for its promise API and migrations.
  • Hash routing — simple, no server config, works on GitHub Pages.
  • Bundled parts DB — avoids scraping and CORS issues.
  • Odometer interpolation — supports backfilled readings.
  • Part record chaining — preserves audit trail.

Tips for working with Claude

  • Give relevant files before requesting changes
  • State constraints upfront
  • Describe intent, not implementation
  • Increment DB version for schema changes (current: 4)
projects/automotive/shinyshitbox.txt · Last modified: by Andrew Yong