geovault

GeoVault

A privacy-first personal location notebook for Android and iOS. Save places, restaurants, viewpoints, and hidden gems — all stored locally on your device.

Why GeoVault?

Google Maps “Saved Places” is cluttered, hard to search, and forces you into their ecosystem. GeoVault lets you save the context around a place — what to order, what to avoid, the best time to visit — and find it again years later with full-text search.

Features

Tech Stack

Layer Technology
Framework React Native (Expo SDK 54, development builds)
Database expo-sqlite + FTS5
Routing expo-router
Styling NativeWind v4 (Tailwind CSS)
State Zustand
Auth @react-native-google-signin/google-signin
Background expo-background-fetch + expo-task-manager
Language TypeScript (strict, no any types)

Getting Started

Prerequisites

Install

git clone <repo-url>
cd GeoVault
npm install

Run

# Generate native projects
npx expo prebuild

# Android (requires Android Studio)
npx expo run:android

# iOS (requires Xcode)
npx expo run:ios

Note: This app uses native modules (Google Sign-In, Background Fetch) and requires development builds. It does not work with Expo Go.

Type Check

node node_modules/typescript/bin/tsc --noEmit

Project Structure

app/                    # Screens (file-based routing)
  (tabs)/               # Tab navigator — Places, Search, Settings
  place/                # Place CRUD — detail, new, edit
src/
  db/                   # SQLite layer — database, migrations, repositories, seed
  services/             # URL parser, export, Google Drive, backup, auto-backup
  stores/               # Zustand state (places, search, settings, backup)
  components/           # Reusable UI components
  constants/            # Categories, tags, theme
  types/                # TypeScript interfaces
  utils/                # UUID, date helpers

Data Model

Each saved place contains:

Field Description
name Place name
location Location string (city, area, etc.)
coordinates Latitude/longitude
category One of 9 categories
tags Status tags + custom tags
notes Must Order, Avoid, General — three separate fields
extraFields Category-specific fields (entry fee, trek time, etc.)
sourceUrl Original maps link
timestamps Created, updated, last visited

Data is stored locally in SQLite with a FTS5 virtual table for instant full-text search. Queries are paginated (30 per page) with infinite scroll.

Google Drive Backup

Backup uses Google Drive’s appDataFolder — a hidden, app-specific storage area. The user’s regular Drive files are never accessed.

Setup

Requires a Google Cloud project with OAuth credentials. See CLAUDE.md for detailed setup instructions.

Roadmap

Privacy

GeoVault has no backend server. Zero data leaves your device unless you explicitly export or back up to your own Google Drive. No analytics, no tracking.

License

All rights reserved.