GoodMaps

“A location-based onchain review system using zero‐knowledge proofs and geofence verification.”

GoodMaps

Created At

ETHGlobal New Delhi

Project Description

This project enables users to prove their physical presence at a location and submit reviews tied to that geolocation, in a privacy-preserving, trust-minimized manner. Users can also switch to an “Explore” mode to see aggregated labels (residential, office, university, etc.) around them from crowdsourced data. The backend verifies proofs, stores review metadata and hashed proofs, and serves region summaries and label data for display.

How it's Made

We built this using:

Frontend / Mobile (iOS, SwiftUI)

Uses MapKit / Map SwiftUI APIs for map display and annotations.

A bottom action bar UI to trigger proof & submit reviews.

A second “Explore” tab that reads a JSON geographic dataset (e.g. delhi_labels.json), decodes into models, and displays map pins / polygons / overlays.

We compute a proof hash (e.g. using Keccak-256 on the proof bytes) and send that with reviews — not the full proof — to save bandwidth and protect privacy.

Backend / Server

Validates the proof hash + proof when needed, stores review records (place, rating, comment, proof hash), and stores or indexes the geo-labels.

Exposes APIs such as /postReview, /getRegionSummary, /getLabels etc.

Database / Storage / Walrus

We use Walrus (a programmable storage / decentralized blob store) to host geospatial label data, version it, and allow transparent, verifiable reads.

Onchain references (e.g. storing the final hashes, indices, or proof anchors) can be used to tie data immutably.

Crypto / ZK Proofs

You already have the proof generation pipeline (in your geofence prover) — the UI interacts with that, hashes the result, and we only send the hash.

This ensures that data integrity and location proof validity are maintained, without leaking underlying proof details.

Data pipeline

The delhi_labels.json (or future city label sets) is versioned in Walrus.

Backend reads label files, preprocesses into region cells / polygon overlays and stores them.

The Explore UI fetches relevant label slices as needed (e.g. bounding box around user) to reduce payload.

UI & UX decisions

Single “Prove & Submit” button in the bottom bar for simplicity.

Tabbed navigation: one tab for proof + review, another for exploring region data.

Safe area insets to prevent overlap with the tab bar.

Filter chips to toggle label categories (residential, office, university, others).

background image mobile

Join the mailing list

Get the latest news and updates