Exportformat
Deine Daten gehören dir. OdoNote exportiert alles kostenlos in offenen Formaten, die andere Software lesen kann – auch falls die App einmal eingestellt wird.
Dateien
- JSON-Sicherung: garagelog-backup-YYYYMMDD.json bzw. eine .zip mit backup.json sowie den Ordnern attachments/ und vehicles/, wenn Fotos enthalten sind. Ein Import stellt alles wieder her.
- CSV: eine Datei je Eintragsart (vehicles.csv, entries.csv, service_lines.csv, reminders.csv, documents.csv) in einer .zip. UTF-8 mit BOM, kommagetrennt, Anführungszeichen nach RFC 4180. Die Kopfzeilen sind standardmäßig englisch.
Konventionen
- IDs sind UUIDs und ändern sich nie, damit Einträge über mehrere Exporte hinweg zugeordnet werden können.
- Zeitpunkte im ISO-8601-Format in UTC; Datumsangaben als yyyy-mm-dd.
- Beträge als Dezimalzeichenkette (z. B. "45.30") mit ISO-4217-Währungscode.
- Mengen metrisch: Liter, kWh, kg. Kilometerstände in der distance_unit des Fahrzeugs.
- Aufzählungswerte sind Zeichenketten; unbekannte Werte als "other" behandeln.
JSON-Sicherung (format_version 1)
{
"format": "garagelog-backup",
"format_version": 1,
"exported_at": "2026-09-24T08:00:00Z",
"app_version": "1.0",
"vehicles": [ { "id": "…", "name": "…", "kind": "car", "energy": "hybrid", … } ],
"entries": [ … ],
"service_lines": [ … ],
"reminders": [ … ],
"documents": [ … ],
"attachments": [ … ],
"service_templates": [ … ],
"vendors": [ … ]
}
Felder
Feldnamen sind feste englische Bezeichner. Maßgeblich sind die englischen Feldbeschreibungen.
vehicles · vehicles.csv
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
name | string | Name shown in the garage. |
kind | enum | car | motorcycle | truck | other |
energy | enum | gasoline | diesel | lpg | cng | electric | hydrogen | hybrid | phev |
make / model / trim | string? | Free text typed by the user. |
year | integer? | Model year. |
plate / vin | string? | Licence plate and VIN, if entered. |
color_hex | string? | #RRGGBB |
distance_unit | enum | km | mi — the unit of every odometer value of this vehicle. |
volume_unit | enum | liter | galUS | galUK (display preference; quantities are stored in litres). |
economy_unit | enum | kmPerL | lPer100km | mpgUS | mpgUK | kmPerKWh | kWhPer100km | miPerKWh | kmPerKg (display preference). |
odometer_input | enum | odometer | trip |
currency | string | ISO 4217 code, e.g. JPY, KRW, USD, EUR. |
tank_capacity_l | number? | Fuel tank size in litres. |
battery_capacity_kwh | number? | Usable battery size in kWh. |
purchase_date | date? | yyyy-mm-dd |
purchase_price | decimal? | In the vehicle currency. |
purchase_odometer | number? | In distance_unit. |
specs | array | List of {key, value}; key is a built-in id such as tire_size_front or user text. |
region_preset | string | US, JP, KR, DE, ES, CN … — decides built-in templates and document types. |
notes | string? | Free text. |
archived_at | datetime? | Set when the vehicle is archived. |
sort_order | integer | Position in the garage. |
photo_file | string? | Path inside the backup zip (only when photos are included). |
created_at | datetime | When the vehicle was created. |
updated_at | datetime | When the vehicle was last changed. |
entries · entries.csv
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
vehicle_id | uuid | Owning vehicle. |
kind | enum | fuel | charge | hydrogen | service | expense | odometer | note |
date | datetime | When it happened. |
odometer | number? | Odometer reading in the vehicle distance_unit. |
trip_distance | number? | Trip meter value, when the vehicle uses trip input. |
total_cost | decimal? | Amount paid. |
currency | string | ISO 4217 code. |
vendor_name | string? | Station or shop name. |
notes | string? | Free text. |
is_incomplete | bool | Marked "to complete later". |
quantity | number? | Energy added: litres (fuel), kWh (charge) or kg (hydrogen / CNG). |
unit_price | decimal? | Price per litre, kWh or kg. |
is_full | bool | Tank filled / battery charged to full. |
missed_previous | bool | A previous fill-up was not recorded. |
fuel_grade | string? | Built-in id (regular, premium, diesel …) or user text. |
charge_location | enum? | home | publicFast | publicSlow |
energy_override | enum? | For plug-in hybrids: whether this entry was fuel or electricity. |
is_diy | bool | Service done by the owner. |
labor_cost | decimal? | Labour part of a service. |
expense_category | enum? | insurance | tax | registration | inspection | parking | toll | wash | fine | loan | other |
recurrence | enum? | none | monthly | yearly |
source | enum | manual | ocr | import | quick |
created_at | datetime | When the entry was created. |
updated_at | datetime | When the entry was last changed. |
service_lines · service_lines.csv
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
entry_id | uuid | The service entry this line belongs to. |
template_id | string? | Built-in template id (engine_oil, oil_filter, tires …) or a service_templates id. |
title | string | Item name (empty for built-in templates; use template_id). |
part_name / part_number | string? | Part details. |
quantity | number? | Amount of the part. |
unit | string? | L, pcs, qt … |
unit_price / cost | decimal? | Price per unit and line total. |
sort_order | integer | Order within the entry. |
reminders · reminders.csv
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
vehicle_id | uuid | Vehicle. |
document_id | uuid? | Document this reminder renews, if any. |
mode | enum | distance | time | either | fixedDate |
template_id | string? | Completing a service with this template resets the reminder. |
title | string | Reminder name. |
interval_distance | number? | In the vehicle distance_unit. |
interval_months | integer? | Time interval. |
due_date | date? | For fixedDate reminders. |
advance_distance / advance_days | number? | How early to warn. |
manual_last_date / manual_last_odometer | date? / number? | Last done, when there is no matching record. |
is_enabled | bool | Reminder on or off. |
snoozed_until | datetime? | Snooze end. |
created_at | datetime | When the reminder was created. |
updated_at | datetime | When the reminder was last changed. |
documents · documents.csv
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
vehicle_id | uuid | Vehicle. |
kind | enum | inspection | insurance | compulsoryInsurance | tax | registration | license | warranty | other |
title / provider / number | string? | Free text (policy number etc.). |
start_date / expiry_date | date? | Validity. |
amount | decimal? | Premium or fee. |
currency | string | ISO 4217 code. |
renew_months | integer? | Default extension when renewed. |
notes | string? | Free text. |
created_at | datetime | When the document was created. |
updated_at | datetime | When the document was last changed. |
attachments
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
entry_id / document_id | uuid? | What the photo or PDF belongs to. |
kind | enum | image | pdf |
file | string? | Path inside the backup zip, e.g. attachments/<id>.jpg (null when photos are not included). |
captured_at | datetime? | When the photo was taken. |
ocr_text | string? | Text recognised on the device. |
sort_order | integer | Order. |
created_at | datetime | When it was added. |
service_templates
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
title / symbol | string | Name and SF Symbol name. |
default_distance_km | number? | Default interval in km. |
default_months | integer? | Default interval in months. |
applies_to_kinds | array | Vehicle kinds; empty = all. |
hidden_built_in_id | string? | Built-in template this one hides or overrides. |
created_at | datetime | When the template was created. |
updated_at | datetime | When the template was last changed. |
vendors
| Feld | Typ | Beschreibung |
id | uuid | Stable identifier. |
name | string | Station or shop name (for auto-complete). |
kind | enum | station | shop | parts | other |
use_count / last_used_at | integer / datetime | Usage statistics. |