Switch backend from Python/Flask to Rust/Axum

https://claude.ai/code/session_015myTTMs6yDsAGarATe5ePZ
This commit is contained in:
Claude 2026-03-18 18:18:45 +00:00
parent 2b5a39a550
commit 235fbd226b
No known key found for this signature in database

20
PLAN.md
View file

@ -14,9 +14,9 @@
| Layer | Technology | | Layer | Technology |
|-------------|-----------------------------| |-------------|-----------------------------|
| Backend | Python + Flask | | Backend | Rust + Axum |
| AI / OCR | Claude API (vision) | | AI / OCR | Claude API (vision) |
| Spreadsheet | openpyxl (Excel .xlsx) | | Spreadsheet | rust_xlsxwriter (Excel) |
| Frontend | Mobile-friendly HTML | | Frontend | Mobile-friendly HTML |
--- ---
@ -33,11 +33,13 @@
``` ```
Driverthing/ Driverthing/
├── app.py # Flask server + Claude API call ├── src/
├── mileage.py # Excel read/write logic │ ├── main.rs # Axum server + routes
│ ├── claude.rs # Claude API vision call
│ └── excel.rs # Excel read/write logic
├── templates/ ├── templates/
│ └── index.html # Mobile camera upload page │ └── index.html # Mobile camera upload page
├── requirements.txt ├── Cargo.toml
└── mileage_log.xlsx # Generated, gitignored └── mileage_log.xlsx # Generated, gitignored
``` ```
@ -47,7 +49,7 @@ Driverthing/
``` ```
Phone camera → upload photo Phone camera → upload photo
Flask receives image Axum receives multipart/form-data
→ Claude Vision: "What is the odometer reading?" → Claude Vision: "What is the odometer reading?"
→ Extract number → Extract number
→ Calculate delta from last reading → Calculate delta from last reading
@ -59,11 +61,11 @@ Phone camera → upload photo
## Implementation steps ## Implementation steps
1. Set up Flask app with a file upload endpoint 1. Set up Axum server with a multipart file upload endpoint
2. Send uploaded image to Claude API with a vision prompt 2. Send uploaded image (base64) to Claude API with a vision prompt
3. Parse the odometer number from the response 3. Parse the odometer number from the response
4. Read the last recorded odometer value from the Excel file 4. Read the last recorded odometer value from the Excel file
5. Calculate the difference (km driven) 5. Calculate the difference (km driven)
6. Append a new row (date, time, odometer, trip km, notes) to the sheet 6. Append a new row (date, time, odometer, trip km, notes) to the sheet
7. Return confirmation to the browser 7. Return confirmation to the browser
8. Add a download button for the Excel file 8. Add a download endpoint for the Excel file