# Luggage List [![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) Luggage List is a local-first Expo app for keeping trips, luggage, and check-ups organized without a server, login, or cloud sync. ## Highlights - 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 ## Tech Stack - 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 ``` ### 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 ``` ## Credits Travelling icons created by Freepik - Flaticon ## Ai Disclaimer This project was mainly developed by my AI Agent [Luna](https://luna.reversed.dev). The only changes, i, [Space](https://spaceistyping.com) have made were with Copilot or manually in the Readme and in the CI/CD Pipeline. All other code was generated by Luna. A Human was always in the loop to review the code and to make sure it was working before pushing it to the repository. (FYI: Luna runs on gpt-5.3-codex and 5.4-mini; Copilot was used with gpt-5.3-codex and gemini-3.1-pro)