MineRight Expo mobile app (frontend) - Ghana small-scale mining platform
# MineRight
A React Native (Expo, TypeScript) mobile platform for formalising Ghana's small-scale mining sector. Dark-mode by default with a deep forest green + metallic gold design language.
## Tech stack
- **Expo SDK 56** / React Native 0.85 / React 19
- **React Navigation** (bottom tabs + native stacks)
- **expo-location**, **expo-image-picker**, **expo-camera**, **expo-notifications**
- **react-native-maps** for GPS boundary capture & previews
- **react-native-chart-kit** + **react-native-svg** for the revenue pie chart
- **axios** with JWT auth + refresh-token interceptor
- **@react-native-async-storage/async-storage** for session persistence
## Getting started
```bash
npm install # if dependencies are not already installed
npm run android # or: npm run ios / npm run web
# or
npx expo start
```
The app expects a backend at `
10.0.2.2` (Android emulator) or
`
localhost` (iOS/web). Change the base URL in
`src/services/api.ts`.
## Project structure
```
src/
components/ui/ Reusable themed components (buttons, inputs, cards, badges, stepper, ...)
context/ AuthContext (login/register/logout, token bootstrap)
hooks/ useLocation, useNotifications
navigation/ AuthNavigator, LandOwnerTabs (5 tabs), AgencyStack, AppNavigator
screens/ auth, home, land, licenses, agency, messaging, revenue, disputes, profile
services/ api + auth/land/license/operations/revenue/dispute/messaging services
types/ Domain types + navigation param lists
utils/ theme (design system) + helpers (formatting, validation)
```
## Design system
Defined in `src/utils/theme.ts`. Dark mode is the default everywhere:
- Background `#101714`, cards `#18231D`, elevated `#223126`
- Gold `#C9A34A` is reserved for primary CTAs, active states, and key numbers (the "10%")
- Status colours: success `#2E7D32`, warning `#F9A825`, error `#D32F2F`, info `#1976D2`
All icons use **Ionicons** from `@expo/vec …