# Repository Guidelines ## Project Structure & Module Organization - `app/` holds Expo Router screens, layouts, and route groups. - `components/`, `hooks/`, `utils/`, and `constants/` contain shared UI, logic, helpers, and values. - `ble/` contains Bluetooth-related flows and device integration code. - `assets/` stores images and fonts; `global.css` covers web styling. - `@share/` hosts shared modules used across apps in the workspace. - `android/` is the generated native project after `expo prebuild`. - `scripts/` provides maintenance tools; `dist/` is build output. ## Build, Test, and Development Commands Use `bun` as the package manager (`package.json` `packageManager`). - `bun install` installs dependencies. - `bun run start` runs Expo dev server with `.env.development`. - `bun run start:test` or `bun run start:prod` switch env files. - `bun run android`, `bun run ios`, `bun run web` start platform builds. - `bun run prebuild:android` generates the Android native project. - `bun run lint` runs ESLint with Prettier rules. - `bun run build:development:android` or `bun run build:production:ios` triggers EAS builds. - `bun run update:production` publishes OTA updates. - `bun run export:icp:android` or `bun run export:icp:ios` generates ICP source bundles. ## Coding Style & Naming Conventions - TypeScript is strict; `@/` maps to repo root via `tsconfig.json`. - Prettier settings in `.prettierrc`: 2-space indent, single quotes, no semicolons. - ESLint enforces sorted imports and unused import cleanup; run `bun run lint`. - File names should be kebab-case; avoid `react-native` `Text` in favor of `@/components/ui`. ## Testing Guidelines - No automated test runner is configured. If adding tests, place them next to modules or in `__tests__/`, add scripts in `package.json`, and document how to run them. ## Commit & Pull Request Guidelines - Commits typically use a short type prefix (`feat:`, `fix:`, `refactor:`, `add:`, `update:`) and a concise summary. - PRs should include a description, testing notes (device/simulator and platform), and screenshots or recordings for UI changes. ## Configuration & Environment - Environment files live in `.env.*` and are loaded with `dotenv` in scripts. - Build profiles and OTA channels live in `eas.json`; do not commit secrets.