A hiking & national-parks app combining a social feed, gear loadout tracking, and a P2P marketplace for used outdoor gear. Built with Expo (React Native) + Supabase.
Forked from the DYNO climbing app — roughly 60% of the codebase is shared (feed, marketplace, profiles, auth, photo handling, push). Climbing-specific routes (sends, grades, climbing gear) are being reshaped into hiking equivalents (expeditions, distances/elevation, outdoor gear).
- Gear Locker — digital locker for every piece of outdoor gear you own
- Loadout Builder — assemble a loadout for a hike with auto base-weight calc
- Social Feed — vertical expedition posts with hero photo, map snippet, elevation stats, tagged loadout
- The Outpost — P2P marketplace for used outdoor gear (Stripe Connect for payments)
- National Park Check-ins — 63 parks, public geofence data, sticky badge mechanic
V2 (deferred): live GPS tracker (Mapbox 3D terrain, OSM trails, offline tiles), AI photo gear recognition.
# Homebrew (skip if installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Node.js
brew install node
# CocoaPods (for iOS builds)
brew install cocoapodsVerify: node --version (v18+ or v20+).
You also need Xcode from the Mac App Store. Open it once to accept the license, then:
sudo xcode-select --switch /Applications/Xcode.appcd caldera-app
npm install- Create a project at https://supabase.com (name it
caldera). - Settings → API — copy your Project URL and anon public key.
- Open
lib/supabase.tsand replace:YOUR_PROJECT_IDwith your Project URLYOUR_ANON_KEY_HEREwith your anon key
- Authentication → Providers — make sure Email is enabled.
On a physical iPhone (recommended):
npx expo run:ios --deviceiPhone needs Developer Mode on (Settings → Privacy & Security → Developer Mode → On).
On the iOS Simulator:
npx expo run:iosQuick web preview (layout only, not full native):
npx expo start --webcaldera-app/
├── app/
│ ├── _layout.tsx # Root layout (auth provider, dark theme)
│ ├── index.tsx # Entry (redirects to tabs or auth)
│ ├── auth.tsx # Sign in / sign up
│ └── (tabs)/
│ ├── _layout.tsx # Tab navigation
│ ├── index.tsx # Feed (home)
│ ├── explore.tsx # Explore — to be reshaped (currently climbing sends)
│ ├── log.tsx # Log a send — to be reshaped into "log expedition"
│ ├── market.tsx # Marketplace (will become The Outpost)
│ └── profile.tsx # Profile (will gain Proof-of-Work badges)
├── components/
│ ├── StoriesRow.tsx # Story bubbles (Instagram-style)
│ └── FeedCard.tsx # Feed post cards
├── constants/
│ ├── theme.ts # Caldera design system
│ └── dummy-data.ts # Test data
├── lib/
│ ├── supabase.ts # Supabase client (paste creds here)
│ └── auth-context.tsx # Auth state
├── app.json # Expo config
├── package.json
└── README.md
The tab routes still carry their DYNO names. They'll be renamed and reshaped in the next phase (climbing send → hike expedition, climbing gear listing → outdoor gear listing, plus new screens for Gear Locker, Loadout Builder, and Park Check-ins).
Palette inherited from DYNO; will evolve toward more earth/volcanic tones as Caldera's identity solidifies.
| Token | Value | Usage |
|---|---|---|
| Background | #0D0F12 |
Main screen bg |
| Glass card | rgba(255,255,255,0.04) + 0.08 border |
Cards, posts |
| Teal | #5DCAA5 |
Primary actions, active states |
| Amber | #EF9F27 |
Streaks, prices, engagement |
| Blue | #85B7EB |
XP, info, secondary accent |
| Coral | #D85A30 |
Avatars, warm gradient |
| Text primary | #f0ede6 |
Headings, body |
| Text muted | rgba(240,237,230,0.45) |
Captions, meta |
- Schema diff — map DYNO's tables to Caldera's; add gear_locker, loadouts, park_checkins; drop grades and send-tracking.
- Reshape climbing routes — rename
log.tsx→ expedition logger, rebuildmarket.tsxfor outdoor gear, etc. - Park check-ins — seed 63 NPS parks with geofence data, badge mechanic.
- Marketplace polish — Stripe Connect onboarding, escrow flow.
V2 (later): Mapbox 3D terrain, background GPS, offline tiles, AI gear recognition.
Built with Expo + Supabase.