A mobile application for disc golf players to track rounds, courses, and player performance.
Before you begin, ensure you have the following installed on your machine:
- Node.js (LTS version recommended)
- npm or yarn
- Supabase CLI (
npm install -g supabase) - Android Studio (with an Android Emulator configured)
This project uses Supabase for the backend. We use the local Supabase CLI for development.
- Start the local Supabase instance:
supabase start
- The local API URL and anon key will be printed in your terminal. You will need these for the
.envfile. - The database schema and initial data (including mock courses and layouts) are automatically applied from the
supabase/migrationsandsupabase/seed.sqlfiles during startup.
- Copy the example environment file:
cp .env.example .env
- Open
.envand fill in the values provided by thesupabase startcommand:EXPO_PUBLIC_SUPABASE_URL="http://127.0.0.1:54321" EXPO_PUBLIC_SUPABASE_ANON_KEY="your-anon-key-here"
- Install the dependencies:
npm install
- Open your Android Emulator.
- Run:
npx expo run:android
If you are using WSL for development and your Android Emulator is running on Windows, you cannot use expo run:android directly because WSL doesn't have the Android SDK/ADB connected to the host by default.
Follow these steps:
- Get WSL IP: In your WSL terminal, run
hostname -Iand copy the first IP address (e.g.,172.21.183.255). - Update .env: Ensure
EXPO_PUBLIC_SUPABASE_URLuses this IP instead of127.0.0.1. - Start Expo: Run the packager by explicitly providing your WSL IP:
REACT_NATIVE_PACKAGER_HOSTNAME=<YOUR_WSL_IP> npm start
- Open App: Launch the "Expo Go" or your "Development Build" app manually on the Pixel emulator. It will connect to the Metro server running on your WSL IP.
Why this way?
npm startonly runs the JavaScript bundler (Metro), which the emulator can reach via IP.npx expo run:androidtries to compile native code and use ADB, which fails in WSL unless you have a complex bridge setup.
To log in to the application, you need to create a test user in your local Supabase instance.
- Open the local Supabase Studio dashboard in your browser (usually
http://127.0.0.1:54323). - Navigate to the Authentication section -> Users.
- Click Add User -> Create New User.
- Enter an email address and a password (e.g.,
test@example.com/password123). - Ensure "Auto Confirm User?" is checked.
- Click Create User.
- You can now use these credentials to log in on the app's Login screen.
src/- Main application source codecomponents/- Reusable UI componentsscreens/- Main application screensstore/- Zustand global state managementlib/- Integrations and utilities (e.g., Supabase client)theme/- Global styling constants (colors, typography)
supabase/- Local backend configuration, migrations, and seed data.stitch_course_selection_overlay/- Reference UI designs and mockups.