148 lines
5.3 KiB
Markdown
148 lines
5.3 KiB
Markdown
# EventBuzz Checkins (mobile)
|
||
|
||
Bare React Native app for staff to check in event participants via search or badge QR scan. Uses the EventBuzz Dashboard API (`/api/auth/login`, `/api/checkins/events`, attendance endpoints).
|
||
|
||
## Important: Metro (port 8081) is not the app UI
|
||
|
||
Opening **http://localhost:8081** in a browser shows React Native’s default Metro landing page (“Welcome to React Native”). That is only the JavaScript bundler status page.
|
||
|
||
To use **EventBuzz Checkins**, run the app on a **simulator or physical device**:
|
||
|
||
```sh
|
||
source ~/.bashrc
|
||
cd eventbuzz-checkins
|
||
|
||
# Terminal 1 — keep running
|
||
npm start
|
||
|
||
# Terminal 2 — Android emulator or USB device
|
||
npm run android
|
||
|
||
# OR iOS Simulator (after pod install in ios/)
|
||
npm run ios
|
||
```
|
||
|
||
You should see the **email login** screen, not the Metro welcome page.
|
||
|
||
If the simulator still shows the old welcome screen, press **`r`** in the Metro terminal to reload, or run `npm run android` again from `eventbuzz-checkins`.
|
||
|
||
## Android build note (AsyncStorage 3.x)
|
||
|
||
If Gradle reports `Could not find org.asyncstorage.shared_storage:storage-android:1.0.0`, the project’s `android/build.gradle` already adds the package’s `local_repo` Maven path. After `npm install`, run `npm run android` again.
|
||
|
||
## Configuration
|
||
|
||
Copy `.env.example` to `.env` and set `API_BASE_URL`:
|
||
|
||
- **Android Emulator:** `http://10.0.2.2:3001/api` — `localhost` in `.env` causes **Network request failed**
|
||
- **iOS Simulator:** `http://localhost:3001/api`
|
||
- **Physical device:** your Mac’s LAN IP, e.g. `http://192.168.1.10:3001/api`, and set `HOST=0.0.0.0` in `backend/.env`
|
||
|
||
Start the API: `cd backend && npm run dev` (port **3001**).
|
||
|
||
After changing `.env`, rebuild the app: `npm run android` (react-native-config embeds `.env` at build time).
|
||
|
||
## QR format
|
||
|
||
Badge QRs encode `eventbuzz:participant:{participantId}` (same as dashboard badge PDFs).
|
||
|
||
---
|
||
|
||
This is a [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
|
||
|
||
# Getting Started
|
||
|
||
> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.
|
||
|
||
## Step 1: Start Metro
|
||
|
||
First, you will need to run **Metro**, the JavaScript build tool for React Native.
|
||
|
||
To start the Metro dev server, run the following command from the root of your React Native project:
|
||
|
||
```sh
|
||
# Using npm
|
||
npm start
|
||
|
||
# OR using Yarn
|
||
yarn start
|
||
```
|
||
|
||
## Step 2: Build and run your app
|
||
|
||
With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:
|
||
|
||
### Android
|
||
|
||
```sh
|
||
# Using npm
|
||
npm run android
|
||
|
||
# OR using Yarn
|
||
yarn android
|
||
```
|
||
|
||
### iOS
|
||
|
||
For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).
|
||
|
||
The first time you create a new project, run the Ruby bundler to install CocoaPods itself:
|
||
|
||
```sh
|
||
bundle install
|
||
```
|
||
|
||
Then, and every time you update your native dependencies, run:
|
||
|
||
```sh
|
||
bundle exec pod install
|
||
```
|
||
|
||
For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).
|
||
|
||
```sh
|
||
# Using npm
|
||
npm run ios
|
||
|
||
# OR using Yarn
|
||
yarn ios
|
||
```
|
||
|
||
If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.
|
||
|
||
This is one way to run your app — you can also build it directly from Android Studio or Xcode.
|
||
|
||
## Step 3: Modify your app
|
||
|
||
Now that you have successfully run the app, let's make changes!
|
||
|
||
Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).
|
||
|
||
When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:
|
||
|
||
- **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Dev Menu**, accessed via <kbd>Ctrl</kbd> + <kbd>M</kbd> (Windows/Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (macOS).
|
||
- **iOS**: Press <kbd>R</kbd> in iOS Simulator.
|
||
|
||
## Congratulations! :tada:
|
||
|
||
You've successfully run and modified your React Native App. :partying_face:
|
||
|
||
### Now what?
|
||
|
||
- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
|
||
- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).
|
||
|
||
# Troubleshooting
|
||
|
||
If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
|
||
|
||
# Learn More
|
||
|
||
To learn more about React Native, take a look at the following resources:
|
||
|
||
- [React Native Website](https://reactnative.dev) - learn more about React Native.
|
||
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
|
||
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
|
||
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
|
||
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
|