A crowd-sourced busyness tracker for Kingston University's Penryn Road campus. Students search for places nearby and report live crowd levels — Empty, Quiet, Busy, or Chaos.
Built with Expo (React Native), Expo Router, Convex, and Better Auth.
- Node.js 18+
- A Convex account and project (for the backend)
- For iOS simulator: Xcode installed
- For Android emulator: Android Studio installed
- For physical device: the Expo Go app (iOS / Android)
Version note: The project is pinned to
react-native@0.83.1to match the Expo Go SDK 55 native runtime. Do not upgrade React Native without also updating the Expo Go app.
npm installCreate a .env.local file in the project root:
CONVEX_DEPLOYMENT=<your-convex-deployment-slug>
EXPO_PUBLIC_CONVEX_URL=<your-convex-deployment-url>
EXPO_PUBLIC_CONVEX_SITE_URL=<your-convex-site-url>
note that you can skip this by just running npx convex dev in the next step, which will automatically create a .env.local file with the correct values.you need a convex account to do this.
You can find these values in the Convex dashboard after creating a project.
In a separate terminal, run:
npx convex devKeep this running while developing — it syncs your backend functions and regenerates types.
Start the Expo dev server:
npx expo start --clearThen choose how to open it:
Press i in the terminal after the server starts, or run:
npx expo start --iosRequires Xcode and the iOS Simulator app installed.
Press a in the terminal, or run:
npx expo start --androidRequires Android Studio with a virtual device configured.
- Install Expo Go on your phone:
- Make sure your phone and computer are on the same Wi-Fi network
- Run
npx expo start --clear - Scan the QR code shown in the terminal with:
- iOS: the built-in Camera app
- Android: the Expo Go app directly
The app is pinned to Expo SDK 55 / React Native 0.83.1. Make sure your Expo Go app is SDK 55 — check the version in the app's settings screen. Mismatched versions will show a "React Native version mismatch" error.
convex/ # Backend — Convex functions, schema, auth config
src/
app/
_layout.tsx # Root layout: auth guard, theme, fonts
(auth)/ # Onboarding, login, signup screens
(app)/ # Main tab screens (home, map, profile)
place/
add.tsx # Add a new place
[id]/index.tsx # Place detail: vibe reports, ratings, photos
[id]/edit.tsx # Edit a place (owner only)
constants/theme.ts # Design tokens: colors, spacing, typography
contexts/ # Theme context (dark/light/system toggle)
hooks/ # useTheme, useColorScheme
lib/auth-client.ts # Better Auth client setup
"React Native version mismatch" Your Expo Go app's native runtime doesn't match the JS bundle. Make sure your Expo Go app is SDK 55. Alternatively, clear caches:
watchman watch-del-all && npx expo start --clearConvex LSP errors in convex/*.ts
These are stale generated types and resolve automatically when npx convex dev is running. Ignore them in the editor.
Metro bundler issues
npx expo start --clear