Privacy What districtry stores, what leaves your browser, and what it never collects.

Last updated 24 August 2026 · Applies to districtry.com and every app under it.

The short version. There is no account to make, no server of ours to store anything in, and nothing here is sold or used for advertising.

  • Every app here is a static website — a set of files your browser downloads and then runs on its own. We operate no database and no back end.
  • The point you pick is not saved anywhere by us. It lives in your browser and in the address bar, so a refresh or a shared link can restore it.
  • Where a counter runs, the only location it ever receives is rounded to about a kilometre — deliberately too coarse to identify an address.
  • Looking things up means asking other people's servers — map tiles, address search, and the government GIS services each layer reads. Those servers see your IP address, as they would for any website.

Which app you are on

districtry is one project serving several apps from one address, and they do not all behave identically — one has a theme toggle, one runs Google Analytics and one runs no analytics at all. Rather than flatten that into a vague sentence, here is each app's own row. Every cell is read out of the page that app actually serves, by the script that builds this one.

App Google Analytics GoatCounter Stored in your browser Address search Sends your point to a server
The front door/ None. https://districtry.goatcounter.com/count Nothing. Photon / Komoot None.
Illinois/il/ Google Analytics G-YPJ570LWJBlive host only (districtry.com), never in an embed https://districtry.goatcounter.com/count chi-school-type-filtersession districtry-themekept Photon / Komoot, Nominatim / OpenStreetMap 10 layers
New York City/ny/ Google Analytics G-YPJ570LWJBlive host only (districtry.com), never in an embed https://districtry.goatcounter.com/count nyc-school-type-filtersession districtry-themekept Photon / Komoot, GeoSearch / NYC Planning None.
San Francisco/ca/ None. https://districtry.goatcounter.com/count sf-school-type-filtersession districtry-themekept Photon / Komoot, Nominatim / OpenStreetMap None.
Wisconsin/wi/ None. https://districtry.goatcounter.com/count districtry-themekept Photon / Komoot, Nominatim / OpenStreetMap 6 layers
Iowa/ia/ None. https://districtry.goatcounter.com/count districtry-themekept Photon / Komoot, Nominatim / OpenStreetMap 3 layers
Michigan/mi/ None. https://districtry.goatcounter.com/count districtry-themekept Photon / Komoot, Nominatim / OpenStreetMap 4 layers

What stays on your device

All of it is yours to clear at any time through your browser's "clear site data".

Light or dark. If you use the theme toggle, the choice is kept in localStorage under districtry-theme on Illinois, New York City, San Francisco, Wisconsin, Iowa and Michigan, so the site does not flash white on your next visit. It is one word, and it never leaves your browser.

One display preference, per app. The school layer's type filter is remembered in sessionStorage under chi-school-type-filter on Illinois. It is a handful of true/false switches, it is erased when you close the tab, and it never leaves your browser.

One display preference, per app. The school layer's type filter is remembered in sessionStorage under nyc-school-type-filter on New York City. It is a handful of true/false switches, it is erased when you close the tab, and it never leaves your browser.

One display preference, per app. The school layer's type filter is remembered in sessionStorage under sf-school-type-filter on San Francisco. It is a handful of true/false switches, it is erased when you close the tab, and it never leaves your browser.

A cache of each app's own files. A service worker stores the app shell, boundary files and officeholder rosters locally so the map loads fast and works offline. It holds published public data — district shapes and rosters — not anything about you.

No app here sets a cookie of its own. Google Analytics, where it runs, sets its own.

What leaves your browser, and who receives it

Every row here is something your browser requests directly. Each of those servers necessarily sees your IP address and the request itself; none of them receives a name, an email, or an account, because these apps have none to give.

WhoWhat they receive WhenWhich apps
GitHub Pageshosting The ordinary web-server request for each file — your IP address, browser, and the page you asked for. GitHub, not this project, keeps those logs. Every visit. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa, Michigan.
CARTObasemap tiles The map tiles you request — which, taken together, describe the area you are looking at and how far you zoomed in. Whenever the map draws or moves. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa, Michigan.
Cloudflare (cdnjs)mapping library A request for one JavaScript file, Leaflet 1.9.4, pinned by hash. Every visit to a map. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa, Michigan.
GeoSearch / NYC Planningaddress search The text you type into the search box, sent as you type so suggestions can appear. Only while you are searching for an address, or when a card places an office pin. New York City.
Nominatim / OpenStreetMapaddress search, office pins The address you searched, when the bounded fallback runs. It also receives public office addresses from the datasets — a clerk's office, a school — to place their map pins; that is data about buildings, not about you. Only while you are searching for an address, or when a card places an office pin. Illinois, San Francisco, Wisconsin, Iowa, Michigan.
Photon / Komootaddress search The text you type into the search box — sent as you type on the apps' type-ahead boxes, and only when you press the button on the front door. Only while you are searching for an address, or when a card places an office pin. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa, Michigan.
Public GIS servicesthe district data itself Requests for boundary and roster data from government servers — the U.S. Census TIGERweb, ArcGIS services run by cities, counties and states, municipal open-data portals, and the USGS. Mostly these download a whole layer and the "which district contains this point" test then runs inside your browser. Where an app is marked in the table above as sending a point, that layer instead asks the server about your exact selected point so one district can answer immediately while the full layer downloads. Layers whose data ships with the app contact nobody at all. When you turn a layer on and select a point. Every app with a map.
GoatCounteranalytics A page count and a few named events. See Analytics, precisely. Every visit; events as you use the map. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa, Michigan.
Google Analyticsanalytics A standard GA4 page view, including the page URL. Loaded only on the live site and never inside an embed. Every visit to the live site. Illinois, New York City.

Each linked policy is that company's own; this page cannot speak for them. The full, machine-checked list of every dataset an app reads is on that app's sources page.

Your location

No app here asks for your location on its own. It is offered once, behind the "Use my current location" button, and your browser asks your permission before anything happens. Declining costs you nothing else on the page.

If you allow it, the coordinates your browser reports are used in the page to drop a point and answer the layer cards. The one thing that goes anywhere is a rounded pair sent to that app's GoatCounter — 2 decimal places, roughly a kilometre — which is coarse enough that it cannot pin an address and fine enough to show which part of a region the feature gets used from.

Clicking the map is the same story with no permission needed: the point is yours, and only the rounded version is counted.

Analytics, precisely

Counters run for one reason: to know whether anyone is using this and which parts.

GoatCounter

GoatCounter is cookieless and does not build a profile across sites. The front door, Illinois, New York City, San Francisco, Wisconsin, Iowa and Michigan all report to a single GoatCounter site (districtry); the page path is what distinguishes them. Besides the page view, each app sends named events for: address-search, geolocate, geolocate-success, layer/, metro-portal-go/, select, share-native, share-open. Exactly two of those — geolocate-success and select — carry coordinates, rounded to 2 decimal places. Nothing you type is ever sent to it.

Google Analytics

GA4 (G-YPJ570LWJB) runs on Illinois and New York City — and only there: never on a local copy, never inside an iframe embed, and not at all on The front door, San Francisco, Wisconsin, Iowa and Michigan. It sets its own cookies and records the standard GA4 page view, which includes the page URL — so if you arrived on a shared permalink, the point encoded in that link is part of what Google sees. Google's handling is governed by its own privacy policy.

Blocking either one is fine. The analytics calls are written so that a blocked or failed counter is a no-op — nothing about the map changes.

Links you share, and reports you send

Permalinks carry your point. Selecting a place writes it into the address bar as #point=41.88250,-87.62850, at full precision, along with the layers you have on. That is what makes a link shareable — and it means anyone you send the link to, and anything that logs it, gets that location. Delete the part of the URL after # to share the map without it.

Bug reports are yours to send. "Report a bug or leave a comment" prepares a draft containing what you wrote, the current page URL — which may include your point — and your browser's user-agent string. It is only ever a draft: nothing is transmitted until you submit the GitHub issue or send the email yourself, and you can edit it first.

What there isn't

Every app here is a single open-source page. If a claim on this page and the code ever disagree, the code is the truth and this page is the bug: read it, or file the discrepancy.

Children

districtry is a general-audience civic reference. It has no sign-up, collects no personal details from anyone, and is not directed at children.

Changes, and how to ask

This page is versioned with the apps it describes, and it is generated from them — the build reads each app's own shipped page for the facts in the tables above, and refuses to publish a claim that has stopped being true. When the data flows change, this page changes in the same commit: the file's history is the changelog.

Questions, corrections, or a request about your data: adam@overberg.co. Because the project stores nothing about you, there is generally nothing to look up, correct, or delete on our side — but if you think that is wrong in your case, say so and it will be checked properly rather than waved away.

Not legal advice, and not a contract. This page describes how the software behaves, verified against the source. It is a plain-language description, not a warranty, and it does not change the disclaimers on the maps themselves.