====== ShinyShitbox ====== > Live at **[[https://ndoo.github.io/ShinyShitbox/|ndoo.github.io/ShinyShitbox]]**. > Code at [[https://github.com/ndoo/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 [[https://claude.ai/code|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)