Live Web app · 3D 2026

paurk

Quiet-spot discovery for right now

A fully client-side web app that ranks 604 public spots across 44 cities for the current moment — sun, weather, chosen vibe and walking distance — on a custom three.js globe. No backend, no map tiles, no API keys.

paurk — product screenshot
Status
Live
Year
2026
Category
Web app · 3D
Stack
6 tools
  • 604 spots ranked
  • 44 cities
  • 170 KB first load, gzipped

01

Problem

Most "things to do" apps rank a place the same way at 7am on a Tuesday as at sunset on a Saturday. I wanted a tool that answers a simpler question: where is a good, quiet public spot to be *right now* — given the light, the weather and how far I feel like walking.

02

What I built

  • A static React + TypeScript app that scores 604 curated public spots across 44 cities by period of day, live weather, a chosen vibe and walking distance, and explains every top pick in one line.
  • A custom three.js globe with dot-matrix land sampled from world-atlas at build time and a real day/night terminator refreshed every minute.
  • A d3-geo 2D fallback for devices without WebGL, so the app never shows a blank hero.
  • On-device sunrise, sunset and golden-hour math with SunCalc, and keyless forecasts from Open-Meteo.

03

Technical decisions

  • Fully client-side by design: no backend, map tiles or API keys means nothing to run, nothing to leak and nothing to pay for.
  • The globe engine and per-city content are deferred until needed, holding the first load to 170 KB gzipped.
  • Ranking, geo and sun-time logic are pure functions covered by Vitest; a headless-Chromium check enforces 44 px tap targets on mobile.

04

Results

  • Live at paurk.com, deployed on Cloudflare Pages with builds on every push.
  • 170 KB gzipped first load with a WebGL globe on the page.
  • Every ranking decision is explainable in a single sentence in the UI.

05

What I'd do next

  • Let people submit spots with a lightweight review queue.
  • Cache the last forecast so the app still ranks sensibly offline.
  • Add a "walk there" route preview using on-device routing data.

Built with

  • React
  • TypeScript
  • three.js
  • Vite
  • Vitest
  • Cloudflare Pages

Contact

Let's build something.

Internships, collaborations, or a question about one of the projects — my inbox is open.