- React Native - Cross-platform app framework and tooling
- Expo - Managed React Native service for building and deploying cross-playform apps
- Expo Router v2 - Routing library
- Redux - State container
- redux-persist - Persistent store with migrations support
- redux-saga - Manage asynchronous workflows
- react-native-ble-manager - BLE interface
- react-native-paper - UI Component library
- TypeORM - Database models, migrations, and ORM
- jest - Testing
- Install prerequisites (ie: android sdk, nodejs, npm/npx, react-native, expo-cli)
- Install dependencies:
npm install
- Run on android emulator:
npm run android --clear
- Avoid the Expo-GO-related commands (for Android, at least)
- Expo GO builds cannot be used for development/deployment because custom native code must be included for BLE (and other) dependencies that are not included in the default build of Expo GO.
- The commands are included for conventience, and possible future use with web or ios
- Expo GO can be used if Bluetooth support is not needed and removed from the code
Related code:
Location | Description |
---|---|
./src/redux/store.ts |
Redux store configuration |
./src/redux/features/* |
Redux actions and reducers |
./src/redux/migrations.ts |
Redux-persist migrations |
./src/redux/sagas/* |
Redux-saga actions and sagas |
Related code:
Location | Description |
---|---|
./src/constants/BLE.ts |
BLE configuration |
./src/providers/BluetoothProvider/* |
Setup listeners for events from BleManager to dispatch redux actions |
./src/redux/features/bluetooth/* |
Bluetooth slice |
./src/redux/sagas/bluetooth/* |
Core BLE async code |
Related code:
Location | Description |
---|---|
./src/typeorm/entity/* |
Entity classes (models) |
./src/typeorm/migrations/* |
Database migrations |
./src/typeorm/transformer/* |
TypeORM column transformers |
./src/providers/TypeORM/* |
React context provider and utility hooks |