This project showcases a food-ordering experience built with Expo SDK 54, React Native, and Appwrite. It includes authentication flows, browsing/filtering of menu items, and a cart powered by Zustand state management.
- Node.js ≥ 18
- npm ≥ 9
- Expo CLI (
npm install -g expo-cli) ornpxusage - Expo Go SDK 54 on your device/emulator (or run a custom dev client)
- Appwrite project configured with the IDs stored in
.env.local
npm install
npx expo start --clearWhen the Metro bundler starts you can press:
ato launch Android (emulator or device)ito launch iOS simulator (macOS only)wto open the web build- Scan the QR code with Expo Go (SDK 54) to run on a device
Tip: run
npx expo-doctorif you change dependencies to keep the native module graph healthy.
The Search tab contains a Seed button that triggers lib/seed.ts:
- Idempotently upserts categories, customizations, and menu entries
- Connects menu items to category documents so filters stay accurate
Ensure the following environment variables are set before seeding:
EXPO_PUBLIC_APPWRITE_PROJECT_IDEXPO_PUBLIC_APPWRITE_ENDPOINTEXPO_PUBLIC_APPWRITE_PROJECT_NAME
app/– Expo Router pages ((auth)stack, tab navigator, and feature screens)Components/– Reusable UI pieces (buttons, inputs, cards, etc.)lib/– Appwrite client, seed helpers, and shared datastore/– Zustand stores for auth and cart stateconstants/– Static assets and mock content
| Script | Description |
|---|---|
npm start |
Alias for expo start |
npm run android |
Launch the Android build |
npm run ios |
Launch the iOS build |
npm run web |
Launch the web preview |
npm run lint |
Execute Expo's ESLint config |
- Expo Go complains about SDK 53/54 mismatch – This project targets SDK 54. Update Expo Go or build a development client.
- SafeAreaView warning – Only use
SafeAreaViewfromreact-native-safe-area-context; legacy imports will trigger warnings in RN 0.81. - Seeding fails – Double-check Appwrite credentials and network access. Errors are logged to the console for quick diagnosis.
Feel free to open issues or PRs that improve the UI, add tests, or expand the data set. Each helper and component now includes inline documentation to make onboarding easier.