React Native (Expo) app with Firebase Auth/Firestore/Storage, plus a Vite web client in apps/web.
npm install
npm --prefix apps/web install --legacy-peer-deps- Copy root env template:
cp .env.example .env
- Fill required Firebase/OAuth values in
.env. - For admin scripts, copy:
cp scripts/.env.example scripts/.env
- Set
TEXTBOOK_UIDandFIREBASE_SERVICE_ACCOUNT_KEY_PATHinscripts/.env.
Mobile (Expo):
npm run startWeb (Vite):
npm --prefix apps/web run devnpm run lint
npm run typecheck
npm test
npm run test:smoke
npm run build- Firebase Auth powers email/password and Google sign-in.
- Session persistence uses
getReactNativePersistence(AsyncStorage)on native. - Navigation is gated by auth state in
App.js.
If a service-account key was ever committed, rotate/revoke it in Firebase IAM immediately and replace local keys with a new one referenced only via scripts/.env.