Skip to content

Simple Android application for taking notes with a photo, location, and timestamp.

Notifications You must be signed in to change notification settings

begiedz/GeoNotes

Repository files navigation

GeoNotes

A lightweight, offline-first Android notes application built with React Native, Expo Router, and SQLite. Create, edit, and manage notes enriched with photos and geolocation (GPS coordinates resolved to a human-readable address).

Table of Contents

Features

  • Create notes with title, plain body text, and an optional photo.
  • Automatic geotagging (latitude/longitude) with reverse-geocoded address.
  • List, view, edit, and delete notes.
  • Local persistence via SQLite; works offline.
  • Minimal, clean UI styled with Tailwind-like utilities (NativeWind).

Demo

Add new note

New Note Demo

Edit & pin note

Edit Note Demo

Releases & Downloads

Prebuilt artifacts are published on the GitHub Releases page. For convenience, a signed APK is attached to each tagged release so you can install the app on Android without the Play Store.

Requirements

  • Node.js ≥ 20
  • npm
  • Android device with Expo Go or an Android emulator.

Tech Stack

Project Structure

app/
  +not-found.tsx
  index.tsx            # Notes list (home)
  create.tsx           # Create note
  note/
    [id].tsx           # Note details
    [id]/
      edit.tsx         # Edit note
components/
  ...                  # Reusable UI (e.g., Note card, buttons)
lib/
  utils/               # Shared helpers (image, location, formatting)
  db.ts                # SQLite persistence & queries
  mappers.ts           # DB mappers
  pins.ts              # Pinned notes Async Storage

Architecture Overview

  • App shell & navigation: Expo Router (file‑system based routing)
  • Data layer: SQLite (Expo SDK) with a thin repository in lib/db.ts
  • Device capabilities: Camera (image capture) & Media Library (image pick), Location (GPS + reverse geocoding)
  • Presentation: Functional RN components, NativeWind utility classes
  • Testing: Unit tests with Vitest

Quick Start

  1. Clone
git clone https://github.com/begiedz/geo-notes.git
cd geo-notes
  1. Install deps
npm install
  1. Start the dev server (Metro)
npm run start

Scan the QR code with Expo Go (Android) or press "a" to launch an Android emulator.

Development

Common commands:

Start dev server:

npm run start

Launch directly to Android emulator:

npx expo start --android

Testing

Run unit tests:

npm run test

Building (APK)

This project uses EAS Build to produce an installable APK for quick testing and releases.

Produces an APK suitable for direct install on devices:

npx eas build -p android --profile preview

The resulting APK is ideal for testers and will be attached to GitHub Releases for convenience.

Runtime Permissions

The app requests the following at runtime:

  • Camera / Media Library – to capture or pick a photo for a note.
  • Location – to attach GPS coordinates and resolve an address.

If a permission is denied, the corresponding feature will be degraded (e.g., notes without photos or location).

About

Simple Android application for taking notes with a photo, location, and timestamp.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published