Working Prototype · FastAPI + WeChat MP

"Scan it.
Earn it."

A WeChat mini-program that turns Shanghai into a treasure hunt for inbound travelers.

QR check-ins · Real camera · Live leaderboard · 4 languages · 20 hand-picked POIs.

你好,上海
Tap anything.
It's all real.
9:41
5G

Wander. Shanghai.

One code unlocks the city. Scan, capture, climb the leaderboard.

Pick a language
English
EN · Global
中文
ZH · 简体
日本語
JA · 日本
한국어
KO · 韓國

Today's Shanghai.

0
Today
Rank
0/20
Visited
Scan a spot
Find a QR plaque at any landmark
Featured Today
All 20 →
VISITED 0 / 20 · 0 PTS
All 20 spots
Tap to expand
Line up the QR plaque inside the frame
Demo · pick any spot to simulate scan
31.2397°N
121.4998°E
SH-0001 · LANDMARK

Oriental Pearl Tower

31.2397, 121.4998
You're at the spot Distance 18m · radius 80m
The Task
TaskPhoto of the Sphere
Required📷 Photo
Attempts left3
AI threshold0.75
If you pass Daily + 10% to season
100
SESSION OPEN

Capture the moment

Frame the landmark clearly. AI verifies the photo.

Session IDa3f7b2e1-…
Attempt1 / 3
CostFREE
Take a photo
JPG / PNG · up to 8MB
Camera
Upload
WHO'S WINNING

The Leaderboard

Today
Season

Inbox

Updates on your score, prizes, and reviews.

FOR PRIZE SHIPPING

Your Address

Used only if you win and decide to claim. Snapshot at claim time.

Sent over HTTPS · Stored only for shipping

YOUR PASSPORT

Stamps earned

0 / 4
Rank #5 · Bucket 4
450
Prize points
Award details
Date2026-05-11
Your score300 pts
Pool total15,000
Bucket share15% · 4 winners
Address needed Fill in shipping to convert points to a real prize.
What's actually built

Not a slideshow.
A working product.

26
API endpoints
Auth, scan, session, submission, leaderboard, awards — all live on FastAPI.
25
Database tables
Postgres schema covers POIs, tasks, users, attempts, score events, daily settlement.
9
App pages
Gate, home, map, scan, task, submit, rankings, inbox, profile, prizes.
4
Languages
中文 · English · 日本語 · 한국어 — switch on the fly, every label localized.
20
Real POIs
From Oriental Pearl to Disney — real coordinates, plotted live on the map.
6-tier
Prize buckets
Percentile-based pool distribution with tie handling and idempotent settlement.
T+1
Daily settlement
Auto-rank and notify each day at midnight. Address snapshot on claim.
Future cities
Architecture is city-agnostic. Shanghai today. Anywhere tomorrow.
01 — Camera

Real photo.
Not a placeholder.

Tap the demo. Allow camera. See your actual webcam stream — capture it, watch fake "AI detection" boxes draw on top. Same flow runs on the real backend.

SHANGHAI · LIVE PHOTO
Shanghai skyline
LANDMARK · 0.92
STRUCTURE · 0.81
getUserMedia · canvas capture
02 — Map

Twenty pins.
Real coordinates.

Open the map. Live OpenStreetMap tiles. Twenty Shanghai POIs at their actual lat/lng. Search and filter. Click a pin to jump straight to its task.

20 POI · LIVE OSM
31.2304°N · 121.4737°E
03 — Memory

Close the tab.
Come back later.

Score, visited spots, language, address — all persisted in your browser. Reload and pick up where you left. The skip-Gate-if-returning behavior is exactly how the real app works.

DEVICE-BOUND · NO CLOUD
localStorage://shanghai_explorer_v4
{
  "v": 4, "score": 320,
  "completed": ["SH-0001", "SH-0008", "SH-0009"],
  "session": {
    "id": "a3f7b2e1-9c34-4f8e",
    "started_at": "2026-05-11T08:42Z",
    "lang": "en"
  },
  "profile": {
    "name": "Sarah Chen", "country": "SG",
    "addr1": "Hyatt on the Bund"
  },
  "stamps": { "first": true // 1/4 },
  "claim": { "ready": false }
}
Reload · pick up where you left
04 — Passport

A traveler's
memento.

Not a Discord badge. A real passport-stamp metaphor — every milestone is a brush-inked Chinese character. The same instinct that makes someone keep a paper guide.

STAMPS · 03 / 04
SHANGHAI 01 VISITED
SHANGHAI 05 VISITED
SHANGHAI 10 VISITED
初 · 五 · 半 · 全 · brush-inked milestones