← back to all projects
Field Logger (React Native)
Part 10 — React Native
Why This Project
A field logger is an app that makes sense on mobile in a way that a web app doesn't.
You're logging things while you're out in the world — sightings, inspections, field
notes — and you need GPS, camera, offline storage. It exercises mobile-specific APIs
that don't exist on the web and gives you a reason to actually use the app on
your phone instead of just viewing it in a simulator.
What to Build
A mobile app for logging observations in the field. Think of it as a tool for
a birdwatcher, a building inspector, or a forager. Users create log entries with
a title, description, category, GPS coordinates (auto-captured), optional photo,
and timestamp. Entries are stored locally and can be browsed on a list or map view.
Users can export their logs as JSON.
Requirements
- Expo managed workflow
- Screens: Log list (FlatList), New entry form, Entry detail, Map view, Settings/Export
- React Navigation for tab-based + stack navigation
- Auto-capture GPS location when creating an entry (expo-location)
- Optional photo attachment (expo-image-picker from camera or gallery)
- Persist all entries with AsyncStorage
- Map view: show all entries as pins on a map (react-native-maps)
- Tap a pin to see entry details
- Filter entries by category or date range
- Export logs as JSON (expo-sharing + expo-file-system)
- StyleSheet.create for all styling
- Handle permission requests gracefully (location, camera)
Skills Practiced
React Native
Expo
React Navigation
FlatList
AsyncStorage
expo-location
expo-image-picker
react-native-maps
device APIs
permissions
Pain Point to Notice
Permissions are the biggest friction point. On web, you never ask for camera or
GPS access in this way. On mobile, you request permission, handle denial gracefully,
and design your UI to work even when permissions are denied. The location API is
also async in a way that affects your form UX — do you block submission until GPS
is ready? Show a loading indicator? Let the user submit without coordinates? These
are mobile-specific design decisions with no web equivalent.