mirror of
https://github.com/tiennm99/vngeoguessr.git
synced 2026-10-18 10:15:08 +00:00
ab2c271c87b08551b40d8f6c3190a04091fbe875
Rounds took a measured 4.9s at the median and failed most of the time. A 40-window sample returned 6 hits, 1 empty window and 33 errors. The cause was not our retry tuning. /images?bbox= counts the images inside the box before applying the limit, so it returns HTTP 500 in exactly the places worth playing: District 1 and central Ha Noi failed on every attempt, and limit=1 on a 0.0004 degree window failed the same as limit=50. Backing off does not clear it, and neither does shrinking the window, so the whole dart-throw goes: the racing, the empty and error budgets, the widening backoff, and the per-city delta they needed. Coverage now comes from the vector tile API, which answers everywhere the Graph API refuses, and is walked once offline into a per-city list of panorama ids. A round is a single lookup by id, measured at 482ms median across all five cities with no failures. Locations are deduplicated to one per 33m so the file holds distinct places rather than repeat passes down the same street. Cities gain real outlines in place of rectangles. Vietnam merged its provinces in mid-2025, so today's Ho Chi Minh City covers 36,566 km2 and reaches Vung Tau; these are the pre-merger extents, rebuilt by unioning the district-level units OpenStreetMap still serves as historic boundaries. Da Nang is enabled now that every location is known to have imagery. Cu Chi is absent from Ho Chi Minh: its old relation is gone from OSM and only sub-communes remain, so the file records the gap. The build script refuses to write when a tile is missing after retries. tiles.mapillary.com allows 50,000 requests a day and a full rebuild costs about 2,800, so a quota failure is plausible, and a partial index would be indistinguishable from genuinely absent coverage.
VNGeoGuessr
A GeoGuessr clone focused on Vietnamese locations with accurate boundary detection and anti-cheat security. Play geolocation guessing games across 5 Vietnamese locations using real street-level imagery.
🎮 Features
- 5 Vietnamese Locations: Ha Noi, Da Nang, Ho Chi Minh, Da Lat, Duc Hoa (Long An)
- 360° Street View: Mapillary panoramic images with PhotoSphere viewer
- Anti-Cheat Security: Server-side session management prevents cheating
- Distance-Based Scoring: 0-5 point system based on accuracy
- Persistent Leaderboards: Redis-powered top 200 player rankings
- Accurate Boundaries: Nominatim API + Turf.js for precise city detection
📚 Documentation
For detailed information about this project, see the documentation in /docs/:
- Project Overview - Project summary and key characteristics
- Features - Complete feature list and game mechanics
- Tech Stack - Technology stack and dependencies
- Development Guidelines - Development setup and coding standards
- Game Flow - Complete gameplay flow documentation
- Project Structure - Codebase organization and architecture
🚀 Getting Started
Prerequisites
- Node.js 18+
- npm 11+
- Redis server (for leaderboards)
Development
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Run linting
npm run lint
Open http://localhost:3000 to play the game.
🏗️ Built With
- Frontend: Next.js 15 + React 19 + Tailwind CSS 4
- Street View: Mapillary API + PhotoSphere Viewer
- Maps: Leaflet + OpenStreetMap
- Geographic Data: Nominatim API + Turf.js
- Storage: Redis (leaderboards) + In-memory sessions
- UI Components: shadcn/ui
🎯 How to Play
- Enter your username
- Select a Vietnamese location
- View the 360° street panorama
- Place your guess on the map
- Earn points based on accuracy (closer = more points)
- Compete for the top 200 leaderboard spots!
📋 Development Notes
- JavaScript Only: No TypeScript files
- Individual Parameters: Functions use separate parameters, not object destructuring
- Server-Side Security: Game coordinates never sent to client
- Session Management: Automatic cleanup after 30 minutes
🤝 Contributing
This project follows specific development guidelines. Please read the Development Guidelines before contributing.
Description
GeoGuessr clone for Vietnamese locations — Mapillary panoramas, Turf.js boundaries, Upstash REST leaderboards
Readme
Apache-2.0
14 MiB
0 Stars
1 Watchers
0 Forks
Languages
JavaScript
98.2%
CSS
1.8%