About Home On The Range

Pick a school level, see every Austin-metro attendance zone, and compare ratings, demographics, and home values zone by zone.

What This Is

When you shop for a house with kids, the school zone matters as much as the kitchen. Home On The Range puts every attendance zone in the Austin metro (29 districts; over 400 zones across the district, high, middle, and elementary levels) on one interactive map. Each zone gets a card with its TEA accountability rating, population and household income from the Census, a demographic breakdown, the median appraised value of homes that changed hands in the last year, and how often homes turn over. You can filter zones by any of those numbers, color the whole map by one metric, and drop a pin on an address to see exactly which schools serve it.

Every number on the map was compiled ahead of time and committed as static files. The viewer never calls a live API for data, so nothing you type or click is sent anywhere, and the page can't break because some district's server is down. The trade-off is honesty about freshness: every card shows when its data was fetched and which school year its boundary describes.

Architecture at a Glance

1. page, nav, footer 2. iframe loads /viewer/ 3. ~2,100 JSON files (24-fetch pool) 4. basemap tiles 2-3. origin, on cache miss 5b. aws s3 sync 5a. fetch Your Browser this page + Leaflet map in an iframe bigolbuffalo.com CloudFront + S3 (this site) CloudFront HTTPS + gzip for the map's files Basemap Tiles CARTO / OpenStreetMap S3 Bucket viewer + ~90 MB of committed JSON Python Pipeline fetch, join, audit (runs on a home PC) Data Sources district GIS, TEA, Census, county CADs
Client
Edge / routing
Compute
Storage
External

Single-headed arrows are one-way (upload); double-headed are request/response. Numbers match the steps below; 5a/5b happen offline, before you ever load the page.

What Happens When You Open the Map

  1. bigolbuffalo.com serves this site's wrapper page: the header, the footer, and an iframe where the map will live.
  2. The iframe loads the viewer (one HTML file with all of its JavaScript inline) from the map's own CloudFront distribution, backed by its own S3 bucket.
  3. The viewer pulls its data: a registry of all 400+ zones, then each zone's boundary polygon, demographics, school rating, and deed-transfer files. That is about 2,100 small JSON files, fetched through a bounded pool of 24 so the browser never chokes, all served gzipped from CloudFront's cache.
  4. Leaflet draws the basemap with tiles from CARTO / OpenStreetMap, the only external service on the page, and renders every zone, card, and pin from the committed data.
  5. None of that data was computed live. Weeks or months earlier, a Python pipeline on a home PC pulled zone polygons from each district's GIS (ArcGIS, MyPlanWare, Google My Maps KML, Transfinder), ratings from TEA, block-level population from the Census, and deed transfers from three county appraisal districts; joined them; ran an audit (no overlaps, full district coverage, every campus inside its own zone); and synced the result to S3.

Where the Data Comes From

DataSourceNotes
Zone boundariesEach district's own GISArcGIS services, MyPlanWare, Google My Maps KML, Transfinder InfoFinder; TIGER district polygons where one campus serves the whole district. A few districts publish only PDFs and are honestly left blank.
School ratingsTEA (txschools.gov)A-F accountability ratings, achievement/growth scores, CCMR, enrollment
DemographicsUS Census (ACS 5-year + PL 94-171)Block-level population apportioned into each zone, with margins of error carried through
Home values & turnoverTravis, Williamson & Hays CADsAppraised values of recently transferred homes. Texas is a non-disclosure state, so these are NOT sale prices, and the map says so.
County linesCensus TIGERwebReference overlay

Tech Stack

LayerTools
Data pipelinePython 3.13, shapely, pyproj (geodesic areas, boundary set-ops, point-in-zone audit)
ViewerOne static HTML page, vanilla JavaScript, Leaflet
HostingS3 static website + CloudFront (its own bucket and distribution, separate from this site's)
DeployNode script wrapping aws s3 sync + a CloudFront cache invalidation, same pattern as this site

Hosting & Cost

The whole thing is about 90 MB of static files. S3 storage for that is roughly a quarter-cent per month; CloudFront's free tier covers personal-scale traffic. Realistic total: well under $1/month, most months $0. There is no server to patch and nothing that can fall over at 2 AM.

Source Code

The whole project (pipeline, committed data, viewer, audit) has its own repo: github.com/JackVance/home-on-the-range. Start with zones.toml (every zone's source and provenance) and src/audit_zones.py (the checks behind the coverage claims). The only piece that lives in this site's repo is the wrapper page you're looking through.