Platforms — Where to get the app
Left of the Dial runs on Web, Desktop (Mac, Windows, Linux), iOS, and Android. The same core features are available on all platforms. Web and Desktop share the same UI and build (including mini-games on the Dashboard and keyboard shortcuts). Expo (iOS/Android) implements the same flows with a native UI; Dashboard mini-games open in the in-app browser. In the repository, `spec.md` is the build entry (canonical docs); `docs/FEATURE-PARITY.md` is the line-by-line platform matrix. User-facing help here describes shared behavior; where layout differs (for example Quick Actions icons), the underlying behavior matches.
### Mobile parity
- Mobile web: Open the same `/app/` URL on your phone — the app uses a mobile layout (bottom tab bar, full-width content, safe areas for notches). Behavior matches the Expo app for collection, wantlist, dashboard, scan, and profile.
- Native (Expo): Install the iOS or Android app for the best camera/scan experience and system integrations (Share, SecureStore, haptics).
- Screenshots: Help pages embed Web screenshots under `docs/help/screenshots/web/`. For store listings or support, add matching `ios/` and `android/` shots (same filenames) per screenshots/README.md.
- URL: Your deployment's app path, e.g. `https://www.leftofthedial.app/app/`
Web
- Use: Open in any modern browser (Chrome, Safari, Firefox, Edge). No install required.
- PWA: Add to your home screen for an app-like shortcut with offline support.
- Keyboard shortcuts: Press `?` to see all shortcuts. `1-5` switch tabs, `/` opens global search, arrow keys navigate the Crate view.
- Installers: Download the native app for your OS. The desktop app uses the same codebase as the web app (collection, wantlist, dashboard, scan, profile, games).
Desktop (Mac, Windows, Linux)
- Mac: `.app` or `.dmg` from Electron build. Copy to Applications.
- Windows: `.exe` installer. Built with `npm run electron:build:win`.
- Linux: AppImage or `.deb`. Built with `npm run electron:build:linux`.
- Development: Run `npm run build && npm run electron:start` to open the app without installing.
- Updates: The app checks for updates on launch; you’ll be notified when a new version is available.
- Expo Go (development): Run `cd expo-app && npm start`, then scan the QR code with the Expo Go app on your iPhone.
See ELECTRON.md in the repo for full build and signing steps.
iOS (Expo)
- TestFlight / App Store: Use the link provided by the team.
- Build yourself: Use EAS Build: 1. Install EAS CLI: `npm install -g eas-cli` 2. Log in: `eas login` 3. Configure: `eas build:configure` 4. Build: `eas build --platform ios --profile preview` 5. Install the `.ipa` via the EAS link or Ad Hoc distribution.
- Expo Go (development): Run `cd expo-app && npm start`, then scan the QR code with Expo Go on your Android device.
Android (Expo)
- Play Store: Install from the Play Store if published.
- Build yourself: Use EAS Build: 1. EAS CLI and login as above. 2. Build: `eas build --platform android --profile preview` 3. Download the `.apk` from the EAS link and install.
- Web / Desktop: If the API is on another domain, set `` in `app.html` (or leave empty for same-origin). The Electron app can use the production API by default.
Feature comparison
| Feature | Web | Desktop | iOS | Android |
| Dashboard | ✓ | ✓ | ✓ | ✓ |
| Collection (6 views) | ✓ | ✓ | ✓ | ✓ |
| Wantlist + Hunt Rules | ✓ | ✓ | ✓ | ✓ |
| Barcode Scanner | ✓ | ✓ | ✓ | ✓ |
| Batch Scan | ✓ | ✓ | ✓ | ✓ |
| Profile & Achievements | ✓ | ✓ | ✓ | ✓ |
| Profile: Show weekly mission again (after dismiss) | ✓ | ✓ | ✓ | ✓ |
| Connected Services | ✓ | ✓ | ✓ | ✓ |
| Digital Crates | ✓ | ✓ | ✓ | ✓ |
| Profile: Hunt pricing strategy | ✓ | ✓ | ✓ | ✓ |
| Profile: Music life lists (memorabilia, equipment, shows) | ✓ | ✓ | ✓ | ✓ |
| Profile: Music life — unified taste; help explains Spotify vs streaming library | ✓ | ✓ | ✓ | ✓ |
| Price Alerts | ✓ | ✓ | ✓ | ✓ |
| Travel Mode | ✓ | ✓ | ✓ | ✓ |
| Record Shops | ✓ | ✓ | ✓ | ✓ |
| Dashboard: Daily habit + Spin This Today | ✓ | ✓ | ✓ | ✓ |
| Dashboard: Weekly Mission (8 types; dismiss for this week) | ✓ | ✓ | ✓ | ✓ |
| Dashboard: Week in Review, Activity feed, Stories | ✓ | ✓ | ✓ | ✓ |
| Dashboard: Your cities → browse / map | ✓ | ✓ | ✓ | ✓ |
| My Record Shops (RSS feed URL optional) | ✓ | ✓ | ✓ | ✓ |
| Wantlist: Search Bandcamp | ✓ | ✓ | ✓ | ✓ |
| Taste DNA | ✓ | ✓ | ✓ | ✓ |
| Taste bridge (dashboard; web refetch on tab switch; Expo one GET per tab focus; live region) | ✓ | ✓ | ✓ | ✓ |
| Export CSV | ✓ | ✓ | ✓ | ✓ |
| Mini-games (7 on Dashboard) | ✓ | ✓ | ✓ | ✓ |
| Keyboard shortcuts | ✓ | ✓ | — | — |
| Haptic feedback | — | — | ✓ | ✓ |
Backend and env
All platforms use the same API (e.g. Vercel). Ensure:
See Getting started for required environment variables.