CityScope
← Back to CityScope

Privacy Policy

Last updated: 11 October 2026

What CityScope is

CityScope is an individual student portfolio project built and operated by Stephan Wasalathanthrige. It is not a registered company. This policy explains, in plain terms, what happens to information when you use CityScope.

What information is collected

CityScope does not have user accounts, does not use cookies, and does not run analytics or advertising tracking.

The information involved when you use the service is:

  • City search terms. When you search for a city, the search information is sent from your browser to the CityScope backend. The backend uses it to look up weather, air quality, and currency data. If the backend can't get that data (for example because a provider is limiting its requests), your browser sends the same request directly to the provider instead — see "Direct requests from your browser" below.
  • Location coordinates, only if you choose "Use my location". See the "Location access" section below for exactly what is sent and what isn't.
  • Platform request logs. The frontend and backend are hosted on Vercel. Vercel records request logs for the deployments it serves, which include information such as the requesting IP address and the request path. The request path can contain the city name searched for. These logs are kept according to Vercel's own retention policy for the hosting plan in use. CityScope's application code does not read, export, or analyze these logs, and they are not sent to an analytics or advertising service.

What is stored only on your device

Your recent searches, saved cities, theme choice, and temperature unit preference are saved using your browser's local storage.

This data:

  • Never leaves your device or gets sent to CityScope's backend
  • Is not accessible to Stephan Wasalathanthrige through CityScope
  • Can be cleared at any time using the "Clear recent" button, the remove buttons next to saved cities, or by clearing your browser's site data for the page

Shareable links

Each city snapshot and comparison has its own web address, which contains the city name, region, country, time zone, and the city's published coordinates (for example ?city=6.93548,79.84868,Colombo,...). Nothing is stored on a server when you create or copy a link — the address itself carries the information. The "Share link" button copies the address to your clipboard or opens your device's share sheet; CityScope does not send it anywhere. Your device location ("Use my location") is never put into a link.

Location access

CityScope can request your device's location, but only when you explicitly choose "Use my location" in the app. It is never requested automatically on page load, and the feature is entirely optional — you can search for a city by name instead.

When you click "Use my location":

  • CityScope first shows its own explanation, before your browser's native location permission prompt appears.
  • If you allow it, your browser reports your device's location (latitude and longitude — depending on your device and browser, this can be precise, not just approximate).
  • Those coordinates, together with your browser's timezone, are sent to the CityScope backend for that one request — the same backend, and the same kind of request, used for an ordinary city search — and are used only to fetch weather and air quality data for that location. If the backend can't get that data, your browser sends the coordinates directly to Open-Meteo's weather and air-quality services for that one request instead (see "Direct requests from your browser").

What CityScope does not do with your location:

  • It is not reverse geocoded into a city or country name. CityScope has no reverse-geocoding capability; the dashboard shows "My Location" rather than a guessed city or country.
  • It is not sent to any third-party geocoding or mapping provider. The location map shown for a searched city is not shown for your device location, so no map tiles are requested around it.
  • It is not written to your browser's local storage.
  • It is not added to Recent searches or Saved cities, and it is never included in a shareable link.
  • It is not retained by CityScope's backend beyond handling that one request, other than the same short-lived cache and platform request log described elsewhere in this policy, on the same terms as any other search.

You can deny or revoke location access at any time through your browser's site settings for CityScope. If access is already blocked, CityScope shows a message explaining how to re-enable it rather than prompting you again.

Direct requests from your browser

Normally your browser only talks to the CityScope backend, which contacts the data providers on your behalf. The providers' free tiers limit how many requests each network address can make, and the backend shares its address with other services on its cloud host, so it is sometimes refused. When that happens — or when the CityScope backend itself is unavailable or busy — CityScope asks the same providers directly from your browser, so the page still works. A request for a city that doesn’t exist is not retried this way.

In that case your browser contacts Open-Meteo (weather, air quality and city search) and open.er-api.com (exchange rates) itself. Those providers then receive your IP address and the city coordinates or search term for that request, under their own policies. No API keys or personal details are involved. When a snapshot was fetched this way, the page says so in a notice and in its "Sources & freshness" panel.

Third-party services used

CityScope uses the following third-party services to provide its features. These services operate independently and are subject to their own policies and practices:

  • Open-Meteo — geocoding, weather, and air quality data. Normally contacted by the CityScope backend; contacted by your browser directly only in the fallback case described above.
  • exchangerate-api.com / open.er-api.com — currency exchange rates. Normally contacted by the CityScope backend; contacted by your browser directly only in the fallback case described above.
  • Esri (ArcGIS Online) map tiles — when a city snapshot shows its location map, or when the Map view needs its flat-map fallback, your browser requests map tiles directly from Esri's infrastructure. These requests reveal the area being viewed and may include your IP address, and are subject to Esri's own policies. Required Esri attribution is displayed on the map.
  • unpkg.com — your browser loads the Leaflet mapping library directly from this CDN. The CDN may receive standard technical request information associated with serving that file.
  • Vercel — hosts both the frontend and the backend, and keeps the request logs described above. No analytics or tracking service is enabled.

The Inter typeface and the GSAP animation library are served from CityScope's own site, not from a third-party font or script service.

CityScope does not collect your name, email address, account information, or payment information.

Cookies

CityScope does not set or use cookies — including after adding the "Use my location" feature described above. Location access is a browser permission, not a cookie, and CityScope does not store a separate "location consent" preference of any kind. There is no cookie-consent banner because there are no cookies to consent to.

The site uses browser local storage for the preferences and locally stored information described above (recent searches, favorites, theme, and unit preference). Location coordinates are never written to local storage. None of this local storage is sent to the CityScope backend.

Data retention

CityScope's backend does not maintain a permanent database of your searches.

The backend uses a short-lived in-memory cache to avoid unnecessary repeat requests to upstream weather, air-quality, geocoding, and currency providers. This cache clears automatically when the service restarts and is subject to the cache periods described in the Terms of Use.

Separately, Vercel's request logs are retained according to Vercel's retention policy for the hosting plan in use.

Recent searches, favorites, theme settings, and temperature-unit preferences stored in your browser remain on your device until you clear them.

Your choices

You can use CityScope without creating an account.

You can clear locally stored data at any time from within the app or through your browser settings. You can also stop using the service at any time.

Because hosting logs are generated by the hosting platform, stopping use of CityScope does not immediately remove a request that has already been recorded in those logs.

Changes to this policy

If this policy changes, the "Last updated" date above will be updated accordingly.

Contact

Questions about this policy or the project can be sent to stephanwasalathanthrige@gmail.com.

CityScope: weather, air quality & geocoding by Open-Meteo.com (CC BY 4.0), Rates By Exchange Rate API.

Source on GitHub | Privacy | Terms