diff --git a/README.md b/README.md index b26b5f6..a1863c2 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,99 @@ # Luggage List -Minimal local-first luggage management app built with Expo. +[![Expo](https://img.shields.io/badge/Expo-54.0.33-000020?logo=expo&logoColor=white)](https://expo.dev/) +[![React Native](https://img.shields.io/badge/React%20Native-0.81-61dafb?logo=react&logoColor=white)](https://reactnative.dev/) +[![Local-first](https://img.shields.io/badge/Storage-Local--first-22c55e)](#data-and-backup) +[![Backup](https://img.shields.io/badge/Backup-JSON-8b5cf6)](#data-and-backup) -## Current Features (V2) +Luggage List is a local-first Expo app for keeping trips, luggage, and check-ups organized without a server, login, or cloud sync. -- No auth, no server, local storage only (AsyncStorage) -- Trips with name, location, calendar date picker, optional image from gallery -- Active trip auto-select on first load, with manual trip switching anytime via global trip picker -- Default trip template (copied into new trip, not linked) -- Luggage items with: - - name, description, category - - status: packed, unpacked, lost, left-behind, lent-to (+ person name) - - placement: suitcase, backpack, with-user, other - - optional image from gallery -- Item create/edit via modal -- Check-up flow as yes/no checklist with live stats (correct/bad/pending): - - “No” opens update modal - - fixes can be check-up-only or optionally synced to trip item list -- Check-up history per selected trip with saved snapshots + stats +## Highlights -## Notes +- Trip planning with names, locations, dates, images, and archive support +- Global trip switching with sensible auto-selection on first launch +- Default trip template that gets copied into new trips +- Luggage items with quantity, description, category, status, placement, and optional photos +- Quick status edits plus full item editing in a modal +- Guided check-up flow with live stats and editable mismatches +- Check-up history per trip with saved snapshots +- JSON backup and restore, including file import/export and pasted JSON -- JSON export is removed for now. -- Dark-mode-first minimalist UI. +## Tech Stack -## Run +- Expo +- React Native +- AsyncStorage for local persistence +- expo-image-picker, expo-document-picker, expo-file-system, expo-sharing +- Vitest for tests + +## Getting Started ```bash npm install npm run start -``` \ No newline at end of file +``` + +### Run on a platform + +```bash +npm run android +npm run ios +npm run web +``` + +## Scripts + +- `npm run start` , start the Expo dev server +- `npm run android` , open on Android +- `npm run ios` , open on iOS +- `npm run web` , run in the browser +- `npm run test` , run tests once +- `npm run test:watch` , run tests in watch mode + +## Data and Backup + +All data stays on-device in AsyncStorage. + +Backup and restore is done through JSON, either by: + +- exporting to a file +- importing a saved file +- pasting JSON directly into the app + +## What You Can Track + +### Trips + +- Trip name +- Location +- Start and end dates +- Optional trip image +- Archive state + +### Items + +- Name and quantity +- Description and category +- Status: packed, unpacked, lost, left-behind, lent-to +- Placement: suitcase, backpack, with-user, other +- Optional item image + +### Check-ups + +- Yes / no checklist flow +- Live correct, bad, and pending counters +- Optional sync back into the trip item list +- Saved history per trip + +## Notes + +- Dark-mode-first UI +- No auth +- No backend +- No cloud sync + +## Development + +```bash +npm run test +```