A React Native (Expo) app with a lightweight Node/Express backend.
This README is Markdown. Conventionally name it README.md (uppercase is common).
- Node.js 18+ and npm or pnpm/yarn
- Expo CLI (installed automatically via
npx) - iOS: Xcode + CocoaPods (macOS)
- Android: Android Studio + SDK/emulator
- (Optional) Watchman on macOS for file watching
# from the project root (this folder contains package.json)
npm install
# or
yarn
# or
pnpm installUseful scripts from
package.json:
start→expo startandroid→expo start --androidios→expo start --iosweb→expo start --web
Create a .env (or app.config.js / auth/.env depending on your setup). Typical variables:
# Mobile app (example)
EXPO_PUBLIC_API_BASE_URL=http://localhost:4000
# Backend (example)
PORT=4000
NODE_ENV=developmentCheck
app.config.jsand anyauth/*.tsfiles for how env is read.
# Start the Expo dev server
npx expo startChoose one of:
- Press i to open iOS Simulator (macOS).
- Press a to open Android emulator.
- Scan the QR code with the Expo Go app on your phone (same Wi‑Fi).
cd server
npm install # if server has its own package.json; otherwise skip
node index.jsDefault URLs (example): http://localhost:4000
- GET
/api/users/:userId - POST
/api/users/add_user - PUT
/api/users/:userId/name - DELETE
/api/users/:userId
If you add a database, configure the connection string in
.envand the server.
If you need native iOS builds:
cd ios
pod install
# then open the Xcode workspace and buildFor pure Expo (managed) projects you usually don’t open Xcode. Use EAS to build:
npx expo install eas-cli
eas login
eas build -p iosFor native builds with EAS:
eas build -p androidOr open in Android Studio if using the bare workflow.
revel/
├── App.tsx # App entry
├── app/ # Screens & feature modules
│ ├── post/ # Post flow (image, caption, location)
│ ├── search_components/ # Search UI
│ └── new_user_components/# Onboarding / login
├── auth/ # Auth utilities / context
├── context/ # Global user context
├── navigators/ # React Navigation stacks & tabs
├── server/ # Node/Express backend
├── ios/ # iOS native project (Pods, Xcode)
├── package.json # Dependencies & scripts
└── tsconfig.json # TypeScript config
- Lint/Typecheck: set up ESLint/Prettier/TS; run
tsc --noEmit. - Add a screen: create a file in
app/and register it in a navigator. - API calls: use
EXPO_PUBLIC_API_BASE_URLto hit your backend. - Debug network: use
npx expo start --tunnelif your phone can’t reach localhost. - Reset Metro cache:
npx expo start -c.
- iOS Pods out of date →
cd ios && pod install && cd .. - “SDK mismatch” → update Expo packages to your SDK version.
- Device cannot connect → ensure phone & dev machine are on the same network; try tunnel.
- Android build tools missing → open Android Studio once to install SDKs.
MIT (or your choice).