| Path |
What it holds |
App.tsx, index.js |
The entry point and the navigator, with every screen registered on one native stack. |
src/ |
The app itself. See below. |
__tests__/ |
The Jest tests. Several of them pin wire formats shared with the boards. |
android/, ios/ |
The native projects. The Android debug manifest that development builds need is local-only and described in the build chapter. |
patches/ |
Patches that npm ci applies with patch-package: one to react-native-ble-plx for an Android crash on a rejected promise, and one to react-native-screens. |
scripts/ |
build-standalone-debug-apk.sh, clean_generated_files.sh, the renderer that turns the in-app legal text into this site’s Privacy Policy page, and the release helpers. |
fastlane/ |
The Google Play listing text and images, in fastlane’s standard layout, and the release lanes. |
docs/ |
The release procedure and the store listing pack. Not published. |
site/ |
This documentation site, a Starlight project of its own. |
AGENTS.md |
Project notes that travel with the code: setting up, the checks, how the app talks to a board, and what adding a demo involves. |
CONTRIBUTING.md |
The commit convention and the pull request checks. |
VERSION |
The app’s version, the only place it is written. |
CHANGELOG.md |
Generated by the release pipeline. Never edited by hand. |
| Path |
What it holds |
app/screens/ |
One file per screen. Start/ is the first-run flow and Device/ is discovery, preview, connecting and the application list. |
app/store/ |
The Zustand stores. useBleStore holds the discovered and connected devices, useBleCommandStore the device session, the command channel, the application list and the latest detection, useEventStore the detection history file, useLiveSensorStore the streaming flag, useFirmwareStore and useAboutStore small screen state. |
app/hooks/ |
useFirmwareUpdate and useModelUpdate, the two update flows as the Settings sheets drive them. |
app/utils/ |
BleConnectionHelper, which owns the disconnect alert and the one way back to the device list. |
app/content/ |
The Privacy Policy and the Terms and Conditions, bundled at build time and typed by types/legalContent.ts. Legal text under separate review. |
app/theme/ |
Colours, typography and the react-native-paper theme. |
components/common/ |
Modals, sheets, banners and cards shared by screens. |
components/custom/ |
The header, the tab bar and the keyword spotting App Controls. |
services/ble/ |
Everything on the wire: bleManager for scanning, connecting, the command channel, the firmware upload and the model transfer; bleParser and bleCommands for the command frames; akidaAcceleratorAdvertisement for how a board is recognised; modelTransferProtocol and cameraPreview for two formats the boards own; and the two *Announcement files that put outcomes into words. |
services/firmware/ |
Reading an MCUboot image, remembering which signing key a board took, and the wording of firmware update outcomes. |
services/image/ |
Turning a grayscale camera frame into a PNG the app can draw. |
types/ |
Shared types, including the edge learning command codes and the model update outcomes. |
Five routes registered in App.tsx are not reachable from any screen:
Home, DeviceDetails, Eventhistory, FirmwareUpdate and
AIModelUpdate. The firmware and model updates run from sheets on the
Settings screen instead of the last two.
| Library |
What it does here |
react-native 0.83 with react 19 |
The framework. |
react-native-ble-plx |
Bluetooth Low Energy: scanning, connecting, characteristics and notifications. Pinned to 3.5.0 by the lockfile because the patch in patches/ targets that version. |
react-native-paper |
The UI components and the theme. |
@react-navigation/native, @react-navigation/native-stack |
The one native stack navigator. |
zustand |
State. |
react-native-fs |
Files: the detection history and the picked update packages. |
@react-native-documents/picker |
The system file picker for firmware and model packages. |
react-native-zip-archive |
Unpacking firmware and model packages. |
js-yaml |
Reading a model package’s info.yaml. |
crc-32 |
The checksums the model transfer and the PNG encoder need. |
cbor-x |
The MCUmgr messages of the firmware update. |
buffer, react-native-base64 |
Byte handling for Bluetooth payloads. |
lucide-react-native, react-native-svg |
Icons and the bundled SVG images. |
@react-native-async-storage/async-storage |
The accepted-terms flags and the trusted signing keys. |
react-native-safe-area-context, react-native-screens |
Screen plumbing for React Navigation. |
lottie-react-native |
Pinned to 7.3.x: a newer version needs a newer React Native than this project uses. Nothing in src/ imports it yet. |