A cross-platform mobile application built with Expo (React Native) to help users track nutrition, scan food barcodes, discover recipes, and manage health and wellness goals.
| Tool | Version |
|---|---|
| Node.js | 18 LTS or later |
| Expo CLI | npm install -g expo-cli |
| EAS CLI | npm install -g eas-cli |
| Android Studio | Latest stable |
| Resource | URL |
|---|---|
| Base URL | https://nutrihelp-backend-deployment.onrender.com |
| Swagger Docs | https://nutrihelp-backend-deployment.onrender.com/api-docs |
The backend is hosted on Render. All API calls from the app go through EXPO_PUBLIC_API_BASE_URL. Check the Swagger docs for available endpoints, request/response schemas, and to test calls directly.
Note: Render free tier spins down after inactivity — the first request may take ~30 seconds to wake the server.
# 1. Clone the repo
git clone https://github.com/Gopher-Industries/NutriHelp-App-2026.git
cd NutriHelp-App-2026
# 2. Install dependencies
npm install
npx expo install
# 3. Copy environment variables
cp .env.example .env
# EXPO_PUBLIC_API_BASE_URL is already set in .env.example — no change needed
# 4. Start the dev server
npx expo start- Open Android Studio → Virtual Device Manager → create a Pixel 6 AVD (API 33).
- Start the AVD.
- With the Expo dev server running, press
ain the terminal.
Emulator setup steps: Open Android Studio → More Actions → Virtual Device Manager → Create Device → Phone → Pixel 6 → Next → API 33 (download if needed) → Finish.
Use the development build APK (see Build Development APK below). Install the APK on your device, then run:
npx expo start --dev-clientScan the QR code or connect via LAN — full hot-reload without Expo Go.
# Login to EAS
eas login
# Build locally (outputs an .apk)
eas build --platform android --profile development --localDistribute the generated .apk to team members for device testing.
Copy .env.example to .env and fill in the required values:
| Variable | Description | Pre-filled? |
|---|---|---|
EXPO_PUBLIC_API_BASE_URL |
Backend API base URL | Yes — Render deployment |
EXPO_PUBLIC_API_BARCODE_URL |
Barcode lookup API URL | No |
EXPO_PUBLIC_AI_MODEL_URL |
AI/ML model endpoint | No |
EXPO_PUBLIC_SUPABASE_URL |
Supabase project URL | No |
EXPO_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key | No |
EXPO_PUBLIC_FIREBASE_CONFIG |
Firebase config JSON string | No |
Never commit .env to git.
| Branch | Purpose |
|---|---|
main |
Production-ready, protected — PRs required, 1 approval minimum, no direct pushes |
feature/M-XX-description |
Individual feature work (e.g. feature/M-13-login-screen) |
Workflow: create a feature/ branch from main → open PR → get 1 approval → merge directly into main.
src/
├── api/ # API clients and fetch helpers
├── context/ # React context providers
├── hooks/ # Custom React hooks
├── utils/ # Utility/helper functions
├── navigation/ # React Navigation stacks, tabs, drawers
├── screens/ # Screen components grouped by domain
│ ├── auth/
│ ├── home/
│ ├── meal/
│ ├── recipes/
│ ├── scan/
│ ├── health/
│ ├── community/
│ ├── wellness/
│ └── account/
├── components/ # Shared UI components
└── styles/ # Global styles and Tailwind CSS
assets/ # Images, fonts, icons