A premium, responsive, and cross-platform React Native mobile application built with Expo SDK 54 and TypeScript to streamline field audits, asset tracking, and site inspections.
- 📊 Modern Dashboard: Get visual insights on active drafts, total saved audits, and live surveyor profile summaries.
- 🆔 Unique Survey ID Generator: Generates unique tracking IDs (e.g.,
SURVEY-2026-XXXX) automatically for every new draft, syncing it through the checklist preview and database history logs. - 📸 Site Asset Captures: Seamless image capture and gallery picker using
expo-cameraandexpo-image-pickerwith an auto-dismiss preview on completion. - 📍 GPS Geo-Location & Maps: Live coordinate fetching with spinners, accuracy metrics, and interactive maps using
expo-locationandreact-native-maps. Supports copying raw comma-separated coordinates (lat, lng) to the clipboard. - 👥 Site Contacts Linker: Reads native device contacts and binds supervisor phone numbers directly to survey reports using
expo-contacts. - 📋 Field Notes Clipboard: Easy clipboard imports and exports using
expo-clipboard. - 📅 Native Calendar Picker: Calendar interface using
@react-native-community/datetimepickerfor simple date selections without manual typing. - 👤 Surveyor Profiles: Customize name, profile image, role, and Employee ID. Integrates seamlessly with automatic profile data migrations.
- 🌗 Dark Mode & Premium Aesthetics: Beautiful glassmorphic themes, elevation shadows, and dynamic margins built natively for both light and dark systems.
- Framework: Expo SDK 54 (React Native 0.81)
- Navigation & Routing: File-based Expo Router (Drawer & Bottom Tabs layouts)
- Local Persistence: AsyncStorage for cached drafts and audit history.
- Styling: Dynamic stylesheet theme mapping using React Native
useColorScheme. - Sensors & APIs:
expo-camera(Photo captures)expo-image-picker(Avatar/Photos gallery)expo-location(GPS coordinates)react-native-maps(Interactive maps and markers)expo-contacts(Address book linker)expo-clipboard(Clipboard integrations)@react-native-community/datetimepicker(Native calendars)expo-navigation-bar(System navigation bar color controllers)
├── app/ # File-based routing navigation layout
│ ├── (drawer)/ # Main Drawer navigator
│ │ ├── (tabs)/ # Bottom Tab navigator (Dashboard, Create Survey, History, Profile)
│ │ ├── _layout.jsx # Custom drawer layout (Groups, Profile Header, Offline sync log simulation)
│ │ ├── camera.jsx # Custom camera viewport
│ │ ├── location.jsx # Interactive GPS mapping and copying screen
│ │ └── preview.jsx # Draft summary checklists
│ └── _layout.tsx # App root setup & Android system navigation coloring
├── components/ # Reusable UI component blocks
├── constants/ # Curated theme color palettes and system styles
├── contexts/ # Survey context (states, CRUD operations, history management)
├── package.json # System dependencies and build configurations
└── eas.json # EAS cloud build configuration profilesMake sure you have Node.js, Git, and Expo CLI installed.
-
Clone the repository:
git clone https://github.com/your-username/Smart-Field-Survey-App.git cd Smart-Field-Survey-App -
Install dependencies:
npm install
Start the local bundler:
npx expo startScan the QR code in the terminal using the Expo Go app (Android) or the Camera app (iOS) to open the app on your physical device, or run:
ato launch on an Android emulator.ito launch on an iOS simulator.
npm run android— start the app on Androidnpm run ios— start the app on iOSnpm run web— start the app in a web browsernpm run lint— run Expo lint rules
app.jsonincludes the app packagecom.jilan2410.SmartFieldSurveyAppand URI schemesmartfieldsurveyapp.- Android Google Maps is configured via
expo.android.config.googleMaps.apiKey. - If you use maps in Expo Go, set your own Google Maps API key before testing release builds.
This project is configured with EAS (Expo Application Services) build profiles inside eas.json.
To compile a standalone .apk bundle in the cloud that you can install directly onto devices:
eas build --platform android --profile previewTo build a production release ready for submission to the Google Play Store:
eas build --platform android --profile productionnpx expo run:android --variant releaseThis project is licensed under the MIT License. See the LICENSE file for details.