██╗ ██╗ ██╗███╗ ██╗ ██████╗██╗ ██╗ ██║ ██║ ██║████╗ ██║██╔════╝██║ ██║ ██║ ██║ ██║██╔██╗ ██║██║ ███████║ ██║ ██║ ██║██║╚██╗██║██║ ██╔══██║ ███████╗╚██████╔╝██║ ╚████║╚██████╗██║ ██║ ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝
Cross-platform restaurant selector app built with Tauri + Alpine.js.
Hats off to the OG Python version by @zookinheimer 🎩
See docs/architecture.md for the full migration plan from FastHTML to Alpine.js + Tauri.
lunchjs/
├── docs/
│ └── architecture.md # Migration plan and architecture docs
├── src-tauri/
│ ├── src/ # Rust backend (Tauri commands)
│ │ ├── main.rs
│ │ ├── lib.rs
│ │ └── db.rs
│ ├── dist/ # Static frontend (Alpine.js)
│ │ ├── index.html
│ │ ├── add.html
│ │ ├── list.html
│ │ ├── settings.html
│ │ ├── app.css
│ │ ├── basecoat.min.css
│ │ ├── logo.png
│ │ ├── fonts/
│ │ └── js/
│ │ ├── alpine.min.js
│ │ ├── app.js
│ │ └── basecoat/
│ ├── icons/
│ ├── tauri.conf.json
│ └── Cargo.toml
└── lunch_list.csv # Seed data
-
Install Node.js and Rust:
mise install
If you encounter GPG signature verification errors, import the Node.js release key:
gpg --keyserver hkps://keys.openpgp.org --recv-keys 86C8D74642E67846F8E120284DAA80D1E737BC9F
-
Install dependencies:
npm install
-
Install iOS targets (for mobile development):
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
-
Install ios-deploy (for physical device deployment):
brew install ios-deploy
-
Setup iOS Simulator (for simulator development/testing):
- Simulators are automatically available in Xcode
- Default simulator: iPhone 13 mini (iOS 18.6)
- To add more simulators:
- Open Xcode → Window → Devices and Simulators
- Click + (Plus sign) at bottom left
- Select Device Type and OS Version
- Click Create
- To change the default simulator, edit
IOS_SIM_DEVICEin.env
-
Configure Apple Developer account (for iOS device builds only):
- Not required for simulator builds (
task ios:devortask ios:build:sim) - Required for device builds and App Store distribution
- Open Xcode → Settings → Apple Accounts → Add your Apple ID
- Connect an iOS device or manually add device IDs at developer.apple.com/account
- The Taskfile will automatically initialize the iOS project when needed
- Not required for simulator builds (
# Development (macOS) - uses nightly + parallel frontend (~10% faster)
task dev
# Development (macOS) - stable toolchain fallback
task tauri:dev:stable
# Development (iOS simulator)
task ios
# Development (physical iOS device)
task ios:run:device
# Run tests
task test
# Build (macOS - current architecture)
task build
# Build (macOS - Apple Silicon)
task build:arm64
# Build (macOS - Intel)
task build:x64
# Build (iOS for App Store - requires device/provisioning)
task ios:build
# Build (iOS Simulator - no provisioning required)
task ios:build:sim
# Sync code signing certificates
task certs
# Upload to TestFlight
task ios:testflight
# Upload to App Store
task ios:release
# Clean build artifacts
task clean# Development (macOS)
npx tauri dev
# Development (iOS simulator)
cd src-tauri && npx tauri ios dev
# Build (macOS)
npx tauri build
# Build (iOS)
cd src-tauri && npx tauri ios build- macOS (desktop)
- iOS (mobile)