A modern React Native mobile application built with Expo, featuring Supabase authentication and NativeWind styling.
- β User Authentication (Sign In, Password Reset)
- β Responsive UI with NativeWind (Tailwind CSS for React Native)
- β Supabase Backend Integration
- β Expo Router for Navigation
- β TypeScript Support
- β Cross-platform (iOS, Android, Web)
Follow these steps to get the app running on your device:
- Node.js 18.0 or later
- npm or yarn
- A smartphone (iOS or Android) with internet connection
- Supabase account
Download the Expo Go app on your mobile device:
- iOS: Download from App Store
- Android: Download from Google Play Store
-
Fork the repository:
- Go to https://github.com/BuildersLeague/upro-mobile
- Click the "Fork" button in the top-right corner
- This creates a copy of the repository in your GitHub account
-
Clone your forked repository:
git clone https://github.com/YOUR-USERNAME/upro-mobile.git cd builders-native-uproNote: Replace
YOUR-USERNAMEwith your actual GitHub username -
Install dependencies:
npm install
π Quick Setup: Check out our detailed SUPABASE_SETUP.md guide (recommended if you want to use CLI, if not the setup below works fine)
- Go to supabase.com
- Click "Start your project" or "Sign Up"
- Sign up with your email or GitHub account
- After logging in, click "New Project"
- Choose your organization (or create one)
- Fill in project details:
- Name:
builders-native-upro(or any name you prefer) - Database Password: Create a strong password (save this!)
- Region: Choose the closest region to you
- Name:
- Click "Create new project"
- Wait for the project to be set up (takes 1-2 minutes)
- In your Supabase dashboard, go to Settings β API
- Copy the following values:
- Project URL (looks like:
https://your-project-id.supabase.co) - anon public key (the long string under "Project API keys")
- Project URL (looks like:
-
Setup schema
In your supabase project:
- On the left side bar open
SQL Editor - Click new SQL Snippet
- Paste the contents of the schema
- Click run at the bottom right
- On the left side bar open
-
Setup database sample data
In your supabase project:
- On the left side bar open
SQL Editor - Click new SQL Snippet (or click the new tab button near the
Tab Title) - Paste the contents of the seed file
- Click run at the bottom right
- On the left side bar open
-
Create environment file:
# In the project root directory touch .env.local -
Add your Supabase credentials to
.env.local:EXPO_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
Important: Replace the values with your actual Supabase URL and anon key from Step 3.3
-
Start the development server with tunnel:
npx expo start --tunnel
-
Connect your mobile device:
- A QR code will appear in your terminal
- Open the Expo Go app on your phone
- Scan the QR code with your phone's camera (iOS) or using the "Scan QR Code" option in Expo Go (Android)
-
Wait for the app to load:
- The app will download and install on your device
- This may take a few minutes on first run
-
Create an account:
- Open the app on your phone
- Tap "Don't have an account? Sign up"
- Enter your email and password
- Tap "Sign Up"
- Check your email for the confirmation link and click it
-
Sign in:
- Return to the app
- Enter your email and password
- Tap "Sign In"
# Start development server
npm start
# Start with tunnel (for testing on physical devices)
npx expo start --tunnel
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Run on web
npm run web
# Lint code
npm run lint
# Reset project (removes example code)
npm run reset-projectbuilders-native-upro/
βββ app/ # Expo Router pages
β βββ (tabs)/ # Tab-based navigation
β βββ _layout.tsx # Root layout
β βββ +not-found.tsx # 404 page
βββ components/ # Reusable React components
β βββ AuthScreen.tsx # Authentication screen
β βββ ui/ # UI components
βββ contexts/ # React Context providers
β βββ AuthContext.tsx # Authentication context
βββ lib/ # Utility libraries
β βββ supabase.ts # Supabase client setup
βββ constants/ # App constants
βββ hooks/ # Custom React hooks
βββ assets/ # Images, fonts, etc.
Required environment variables in .env.local:
| Variable | Description | Example |
|---|---|---|
EXPO_PUBLIC_SUPABASE_URL |
Your Supabase project URL | https://abcdefgh.supabase.co |
EXPO_PUBLIC_SUPABASE_ANON_KEY |
Your Supabase anon public key | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
-
"Unable to resolve module" errors:
# Clear cache and reinstall npx expo install --fix npm install -
Environment variables not working:
- Ensure
.env.localis in the project root - Restart the Expo development server after adding variables
- Make sure variables start with
EXPO_PUBLIC_
- Ensure
-
Supabase connection issues:
- Verify your URL and anon key are correct
- Check that your Supabase project is active
- Ensure you're using the anon key, not the service role key
-
QR code not working:
- Make sure your phone and computer are on the same network
- Try using the tunnel option:
npx expo start --tunnel - Check if your firewall is blocking the connection
-
App crashes on startup:
- Check the Expo Go app logs
- Ensure all dependencies are installed
- Try clearing the Expo cache:
npx expo start -c
- Check the Expo Documentation
- Visit Supabase Documentation
- Open an issue in this repository
- β iOS (iPhone/iPad)
- β Android
- β Web (PWA)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Expo for the amazing development platform
- Supabase for the backend infrastructure
- NativeWind for Tailwind CSS in React Native
- React Native for the cross-platform framework
Built with β€οΈ by the Builders League team