A React Native mobile application for displaying live music events from austin.showlists.net.
- 📅 Day Navigation: Swipe or tap arrows to navigate between days
- 🔍 Search: Real-time search by artist or venue name
- 🔄 Pull to Refresh: Refresh event data with pull-to-refresh
- 📍 Map Integration: Tap map pin icons to open venue locations in Google Maps
- 🔗 Event Links: Tap artist names to open event/ticket pages
- 💾 Offline Support: Cached data available when offline
- 🎨 Design Match: Matches the original website design exactly
- React Native with Expo
- TypeScript for type safety
- Cloudflare Workers for backend API proxy
- AsyncStorage for local caching
- React Navigation for navigation (future)
- React Native Gesture Handler for swipe gestures
- Node.js 18+ and npm/yarn
- Expo CLI:
npm install -g expo-cli - Cloudflare account (for backend deployment)
- iOS Simulator (Mac) or Android Emulator
-
Install dependencies:
npm install
-
Set up Cloudflare Worker:
cd backend npm install -g wrangler wrangler login wrangler publishCopy the worker URL and update
src/utils/constants.ts:export const API_BASE_URL = 'https://your-worker.workers.dev';
-
Run the app:
npm start
Then press
ifor iOS simulator orafor Android emulator.
showlist-austin/
├── src/
│ ├── components/ # React components
│ ├── screens/ # Screen components
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API services
│ ├── types/ # TypeScript types
│ └── utils/ # Utilities and constants
├── backend/ # Cloudflare Worker
│ └── src/
│ └── index.js # Worker code
└── App.tsx # App entry point
The Cloudflare Worker parses HTML from austin.showlists.net and serves it as JSON.
cd backend
wrangler publishUpdate backend/wrangler.toml if needed for production settings.
Update the API URL in src/utils/constants.ts:
export const API_BASE_URL = 'https://your-worker.workers.dev';Adjust cache duration in src/utils/constants.ts:
export const CACHE_DURATION_MS = 30 * 60 * 1000; // 30 minutesnpm start- Start Expo development servernpm run ios- Run on iOS simulatornpm run android- Run on Android emulatornpm run web- Run on web browser
- TypeScript strict mode enabled
- Follow React Native best practices
- Use functional components with hooks
- Maintain accessibility (a11y) standards
- Swipe left/right works smoothly
- Arrow buttons disabled at boundaries
- All event links open correctly
- Map pins open Google Maps
- Search filters events in real-time
- Loading states show appropriately
- Error states display helpful messages
- Pull to refresh works
- App works offline with cached data
-
Build with EAS:
eas build --platform ios
-
Submit to App Store Connect
Building and uploading to TestFlight without EAS (local xcodebuild + altool) is documented
in TESTFLIGHT_NO_EAS.md.
-
Build with EAS:
eas build --platform android
-
Upload to Google Play Console
- Data sourced from austin.showlists.net
- Submit shows: austin.showlists.net/submit/
- Support Showlist: Patreon
[Your License Here]
[Contributing Guidelines]
For issues or feature requests, please open an issue on GitHub.