git clone https://github.com/BidScents/mobile.git
cd bidscents-mobile
bun install iOS: Download and install from here: https://expo.dev/accounts/bidscents/projects/bidscents/builds
Android: Build yourself:
bun add -g eas-cli && eas login
eas build --platform android --profile development# macOS/Linux
ifconfig | grep "inet " | grep -v 127.0.0.1
# Windows
ipconfigCreate .env file with your IP:
EXPO_PUBLIC_API_BASE_URL=http://192.168.1.XXX:8000 # Your IP here
EXPO_PUBLIC_SUPABASE_URL=your-supabase-url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
EXPO_PUBLIC_IMAGE_BASE_URL= base url for supabase storage imgs
EXPO_PUBLIC_PROJECT_ID = get form expo project dashboard# In backend directory - MUST use --host 0.0.0.0
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadbun expo start --dev-client --clearScan QR code with your phone's camera → Opens in development build
Open Safari on your phone: http://YOUR_IP:8000/docs
If you see FastAPI docs, you're connected! ✅
| Method | Features | Setup Time |
|---|---|---|
| Development Build | ✅ Push notifications, ✅ All features | 5 min (download) |
| Simulator/Local | ❌ Limited features | 30 sec |
Use development builds for testing notifications and real app features.
git pull && bun install- Update
.envwith your IP if changed - Start backend:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload - Start mobile:
bun expo start --dev-client --clear - Scan QR code with development build
- Code with hot reload 🔥
| Problem | Solution |
|---|---|
Red boxes after bun install |
bun expo start --clear |
| "Network request failed" | Check IP in .env matches your computer |
| Can't reach backend from phone | Backend must use --host 0.0.0.0 |
| Need to change IP | Update .env and restart: bun expo start --dev-client --clear |
💡 Environment changes (.env) don't require rebuilding - just restart the dev server!
| Area | Stack |
|---|---|
| UI Kit | tamagui (native + web) |
| Fonts | Roboto (Expo Font Loader) |
| Navigation | expo-router |
| Theme | Custom light/dark themes via Theme + tokens |
| State | Zustand from shared sdk |
Tamagui is configured with:
- Custom Roboto font via
expo-font - Light & dark theme tokens (
tamagui.config.ts) - Global font defaults + scalable sizes
Use $color, $background, or semantic color tokens in components:
<Button backgroundColor="$color">Place Bid</Button>- Use
useColorScheme()to adapt themes - Use
useTheme()to dynamically access theme values in components - tbc...
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"lint": "eslint . --ext .ts,.tsx",
"format": "prettier --write ."
}Try these in order when you get red boxes or build errors:
bun expo start --clearUse for: Red boxes, module errors, after installing dependencies
pkill -f "expo\|metro"
bun expo start --clear --reset-cacheUse if: Step 1 failed, after RN/Expo updates
rm -rf node_modules && bun install
bun expo start --clearUse for: Package conflicts, major dependency changes
bun expo prebuild --clean
bun expo run:iosUse for: Native dependencies, config changes, iOS/Android errors
| Issue | Solution | Time |
|---|---|---|
| Added JS dependencies | Step 1 | 30s |
| Added native dependencies | Step 4 | 5-10min |
| Random red box | Step 1 | 30s |
| Changed expo config | Step 4 | 5-10min |
| Package conflicts | Step 3 | 2-3min |
rm -rf node_modules ios android .expo
bun install && bun expo prebuild --clean && bun expo run:ios💡 Rule: Always try Step 1 first after adding dependencies!