Expo / React Native prototype for discovering experiences in San Luis Obispo. The visual baseline is the approved green Elsewhere mockup and compact Beli-inspired header, with Discover, My lists, Guides, and You in the bottom navigation.
npm install
npx expo login --browser
npm startSign in to the same Expo account in the CLI and Expo Go on iPhone, then scan the QR code with Expo Go (SDK 57). This is required by the current iOS Expo Go release; see Expo's login requirement. Use a phone and computer on the same network. npm run web starts the browser version. An Expo development server must remain running for the phone demo.
Real activity listings link to their official sources. Friend identities, community scores, and example guides are fixture data, disclosed in the app's About Elsewhere screen. Personal saves, rankings, and awareness responses stay on this device; there is no production backend or account system yet. Routine screens use product copy; data provenance and preview controls live in About rather than repeated footers.
The proposed ranking and nicheness methods are our product design, not Beli's proprietary algorithms.
- New users choose optional interests on one animated welcome screen, then land in Discover with a dismissible saving tip. Draft choices and completion persist across restarts; existing local histories skip onboarding. The first save offers View list. Example social data starts off for new users and remains available in About.
- Search 11 real activities; filter by admission budget, approximate radius, vibe, and suggested duration. Unknown prices do not satisfy a strict budget.
- Pan and zoom the real map, select activity markers, search the visible area, recenter on your device location with permission, and switch to the same filtered list.
- Native uses
react-native-maps(Apple Maps on iOS); web uses Leaflet and OpenStreetMap tiles. Map tiles require internet. Points have source provenance and precision notes: some identify parks or peaks rather than entrances. Distances are straight-line from Downtown SLO until you use My location; then nearby filtering and distances use the returned device coordinates. Location denial, failure, and timeout leave the map in place and show an error. - Open an activity's official source or search its venue for access/directions.
- Save Want to Try entries, log a reaction, compare experiences, tie or skip, and view the resulting personal scores in Been. Load sample history from About Elsewhere to demonstrate comparisons immediately; this is allowed only with an empty history.
- Edit visit notes and the revisit choice directly from Your visit or the activity menu, without changing rankings. Favorites shows only experiences with a liked reaction.
- Read editorial nicheness estimates for all 11 activities. Each score links to its research and explains how far the activity sits outside SLO's usual visitor circuit. These are labeled estimates, not measured community awareness; review counts are not used. The optional familiarity answer is stored separately and does not silently change the research estimate. See nicheness research.
- Browse a photo grid of four example guides, search by title or creator, and open compact place lists with save, map, and share actions. The My guide tab holds your personal collection.
- Build a city guide from fully ranked liked experiences, reorder it, add separate guide notes, preview, and copy its text and official links. Reopening an existing guide preserves its selection and order, including an intentionally emptied guide. Private visit notes are omitted; example guide notes appear under each pick.
- When a search, area, or filter hides all entries in a personal list, clear filters in place to recover the list. Activity Map actions reset conflicting discovery modes and city selection and center on the activity.
- Turn off Example social data in About Elsewhere to hide sample scores, friend guides, and activity across the app. Your personal guide remains available.
- Choose a search city from the header or menu. Only SLO has catalog entries; other cities show an empty state. My location searches the existing catalog nearby and does not fetch new venues.
- Open an activity detail page with a swipeable real-photo header, full-screen photo viewer with source credits, venue title, rank/save actions, compact website/directions links, separate personal/friends/community score circles, nicheness and practical details. The map lives under Plan your visit. All 11 activities have matched venue photos; provenance and reuse notes are recorded in
src/data/activity-photos.json. - Open and dismiss menus with independently animated backdrop opacity and measured sheet movement, including reduced-motion support and retained closing content.
src/data/slo.json records official venue, city, Cal Poly, and Visit SLO sources checked September 5, 2026. src/data/geocodes.json retains geocoding provenance. Vibes and durations are editorial planning labels. The Botanical Garden is outside downtown; admission can have additional parking costs. The History Center has conflicting official hours, documented on its detail screen.
Map data: © OpenStreetMap contributors, geocoding by Nominatim, except the arboretum's coordinate published by Cal Poly. City photo: Photo: Visit SLO, from the official image gallery, with requested attribution. It is used as SLO scenery, not as a verified photo of a specific experience.
npm run typecheck
npm test
npx expo export --platform web --platform ios --platform androidBrowser flow checks cover real tiles and markers, map-area filtering, detail navigation, comparison ranking, and local persistence. Native bundle export verifies bundling; it does not replace testing on a physical phone.
Regression scenarios for guide preservation, visit editing, and discovery are recorded in flow regressions.
This is the first working prototype, not a production community service. Authentication, server persistence, real friend reviews, measured niche estimates, live availability, multiple-city catalogs, revocable hosted guide links, and learned recommendation models remain to build. The current recommendation ordering matches stated interests and recorded reactions to activity metadata. Sample social numbers demonstrate the visual treatment and do not represent venue reviews.