71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
# Mileage Tracking Automation — Plan
|
|
|
|
## How it works
|
|
|
|
1. Open the web app on your phone
|
|
2. Take a photo of the odometer
|
|
3. Claude Vision API reads the number automatically
|
|
4. The km driven is calculated and saved to an Excel sheet
|
|
5. Download the sheet anytime
|
|
|
|
---
|
|
|
|
## Stack
|
|
|
|
| Layer | Technology |
|
|
|-------------|-----------------------------|
|
|
| Backend | Rust + Axum |
|
|
| AI / OCR | Claude API (vision) |
|
|
| Spreadsheet | rust_xlsxwriter (Excel) |
|
|
| Frontend | Mobile-friendly HTML |
|
|
|
|
---
|
|
|
|
## Excel sheet columns
|
|
|
|
| Date | Time | Odometer (km) | Trip (km) | Notes |
|
|
|------------|-------|---------------|-----------|-------|
|
|
| 2026-03-18 | 08:14 | 84 320 | 47 | Work |
|
|
|
|
---
|
|
|
|
## Files to create
|
|
|
|
```
|
|
Driverthing/
|
|
├── src/
|
|
│ ├── main.rs # Axum server + routes
|
|
│ ├── claude.rs # Claude API vision call
|
|
│ └── excel.rs # Excel read/write logic
|
|
├── templates/
|
|
│ └── index.html # Mobile camera upload page
|
|
├── Cargo.toml
|
|
└── mileage_log.xlsx # Generated, gitignored
|
|
```
|
|
|
|
---
|
|
|
|
## Flow
|
|
|
|
```
|
|
Phone camera → upload photo
|
|
→ Axum receives multipart/form-data
|
|
→ Claude Vision: "What is the odometer reading?"
|
|
→ Extract number
|
|
→ Calculate delta from last reading
|
|
→ Append row to Excel
|
|
→ Show confirmation on screen
|
|
```
|
|
|
|
---
|
|
|
|
## Implementation steps
|
|
|
|
1. Set up Axum server with a multipart file upload endpoint
|
|
2. Send uploaded image (base64) to Claude API with a vision prompt
|
|
3. Parse the odometer number from the response
|
|
4. Read the last recorded odometer value from the Excel file
|
|
5. Calculate the difference (km driven)
|
|
6. Append a new row (date, time, odometer, trip km, notes) to the sheet
|
|
7. Return confirmation to the browser
|
|
8. Add a download endpoint for the Excel file
|