Back to Portfolio
Case Study

Lunan

An Android travel diary with on-device notes and photos, interactive maps, and JSON backups.

Solo Developer  ·  React Native / Expo  ·  Android

React Native Expo SDK 56 React Navigation Leaflet / OpenStreetMap AsyncStorage expo-location expo-image-picker
Offline dataSaved diary entries on-device
AndroidReact Native / Expo app
On-deviceLocal storage, no account
Map-basedInteractive OpenStreetMap

1. Project Overview

Lunan is a self-directed Android app for keeping a private travel diary. You drop pins on an interactive map, attach photos, notes, categories, and ratings, and revisit saved entries — all stored on your device, with no account required.

2. Problem and Objectives

I wanted a travel journal that retained personal memories on the device without requiring an account. Saved diary entries, notes, and attached photos remain available offline. Loading map tiles and resolving coordinates to place names require an internet connection.

3. My Role and Contributions

I designed and built Lunan solo, from the map and data model to the UI, theming, and the backup and restore flow.

4. Technology Stack

React Native and Expo provide the cross-platform app foundation. React Navigation manages screen flow, Leaflet and OpenStreetMap provide the map, AsyncStorage persists diary data, and Expo location and image-picker APIs support native device features.

5. Key Features

6. Technical Implementation

7. Challenges and Solutions

The core constraint was keeping a map-based travel diary useful without an account or dependable connection. I used an offline-first data model with AsyncStorage, retained user-created content on the device, and added JSON export and import so data could be backed up or moved.

8. Testing and Results

The source repository and application screenshots are available for review. The current project material does not include a formal usability score or performance benchmark, so no unsupported metric is claimed.

9. What I Learned

Lunan strengthened my experience with offline mobile state, location and media permissions, map-based interaction, and designing import and export flows around user-owned data.