A calm companion app for people worried about climate change. The Wellbeing Space is the front door — a private daily check-in, grounding exercises, and a gentle bridge from feeling to doing — wired to news, local events (Zürich, Bern, Winterthur, Basel, St. Gallen), and curated voices.
Built with Expo (React Native) for iOS, Android, and web from one codebase,
with Supabase as the backend. See ../ClimateBuddy_Product_Plan.md for the
full product plan.
⚠️ Not therapy. ClimateBuddy offers everyday support, not clinical treatment or crisis services. The Help screen signposts to Swiss resources (Die Dargebotene Hand 143, Pro Juventute 147, Notruf 144/112). Keep this framing everywhere.
climatebuddy/
├── app/ # expo-router screens
│ ├── _layout.tsx # root stack (tabs + modals)
│ ├── (tabs)/ # 🌱 Space · 📰 News · 📍 Events · 🎙️ Stimmen
│ │ ├── index.tsx # Wellbeing Space (home) — the heart
│ │ ├── news.tsx # placeholder (to build)
│ │ ├── events.tsx # events list, 5 cities, seed fallback
│ │ └── creators.tsx # curated creators directory
│ ├── check-in.tsx # daily mood check-in (modal)
│ ├── exercise/[id].tsx # exercise detail
│ ├── exercises-all.tsx # full exercise library
│ └── help.tsx # crisis / support resources (modal)
├── components/ # MoodTrend, ExerciseCard, OneStepBridge, ComingSoon
├── content/ # exercises.ts, crisis.ts, creators.ts, seedEvents.ts (German)
├── lib/ # supabase.ts, checkins.ts, events.ts, theme.ts
└── supabase/ # schema.sql, seed.sql
Works offline out of the box. Without a Supabase config, the app runs in
local-only mode: check-ins are stored on-device (AsyncStorage) and events fall
back to bundled seed data. Add a .env to enable cloud sync.
Prerequisites: Node 18+ and the Expo tooling (npx is enough — no global
install needed).
cd climatebuddy
npm install
npx expo startThen press w for web, i for iOS simulator, a for Android — or scan the QR
code with the Expo Go app on your phone.
Tip: after
npm install, runnpx expo install --checkonce to align native package versions with your installed Expo SDK.
-
In your Supabase project: SQL → New query, paste
supabase/schema.sql, run it. (Optionally runsupabase/seed.sqltoo.) -
Settings → API: copy the Project URL and the anon public key.
-
Copy
.env.exampleto.envand fill them in:EXPO_PUBLIC_SUPABASE_URL=https://YOUR-ref.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key -
Restart
npx expo start. Check-ins now sync for signed-in users and events load from youreventstable (approved + upcoming only).
Auth note: the scaffold stores check-ins locally and only syncs when a user
is signed in. For the simplest path, enable Anonymous sign-ins in Supabase
(Authentication → Providers) and call supabase.auth.signInAnonymously() on
first launch, or add a proper email/magic-link sign-in screen later.
cd climatebuddy
git init
git add .
git commit -m "ClimateBuddy scaffold: Wellbeing Space + Supabase"
git branch -M main
git remote add origin git@github.com:<your-username>/climatebuddy.git
git push -u origin main.env is gitignored — your keys stay local.
Expo can export a static web build that Vercel serves directly.
npx expo export --platform web # outputs to ./distIn Vercel: New Project → import your GitHub repo, then set:
- Build command:
npx expo export --platform web - Output directory:
dist - Environment variables: add
EXPO_PUBLIC_SUPABASE_URLandEXPO_PUBLIC_SUPABASE_ANON_KEY(same values as.env).
Every push to main then redeploys the website automatically. (Mobile apps ship
separately via eas build to TestFlight / Play — see Expo Application Services
when you're ready for the beta.)
- Wellbeing Space — ✅ scaffolded. Refine tone, expand exercises to 12–15, add anonymous auth + cloud sync.
- Creators — ✅ directory scaffolded. Replace placeholders with real, verified voices (incl. Swiss/DACH).
- Events — ✅ list + filter scaffolded. Seed all 5 cities richly; add a submission form and a map view; wire Fridays for Future ingest.
- News (thin) — placeholder. Add a capped, curated daily feed from one source; highlight constructive/solutions items.
- Community — deferred until the base is warm (moderation-first).
- Expand
content/exercises.tsto 12–15 items; have a climate-aware professional sanity-check the wellbeing copy. - Confirm all crisis numbers/links in
content/crisis.tsare current. - Replace
content/creators.ts+seed.sqlplaceholders with verified handles and links. - Add a privacy note / consent for storing mood data; keep it minimal.
- Verify licensing before ingesting any news feed or the FFF event map.