factcircuit
FactCircuit: an auditable claim-and-evidence verification loop with immutable provenance, staged checks, bounded retrieval, and reproducible evaluation.
Zobacz, skąd przychodzi sygnał radia, telewizji i sieci komórkowych.
Translation pending
DataHTML · PythonGitHub @maciejpoczek-labOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Radio, TV and 4G/5G coverage map of Poland computed in the browser on terrain, buildings and trees (AGPL-3.0)
Taken from the repository README
Loading the full README.
Read the full README ↗Live: https://radio-wid.pl · licence: AGPL-3.0 · code comments and UI in Polish
RadioWid is a map of radio coverage for all of Poland. It covers FM, DAB+, digital TV (DVB-T) and 4G/5G cell sites. The calculation runs live in the browser, on terrain plus the actual buildings and trees. Tap a spot and RadioWid shows which transmitters reach it, along which path, and where to point an antenna. Every result is a SIMULATION, not a measurement.
The page is static: no backend, no cookies, and the user's position never leaves the phone. All heavy lifting happens in two places:
| Part | What it does |
|---|---|
silnik/ | Propagation engine (plain ES modules, browser and Node). Knife-edge diffraction over a terrain + surface profile, foliage loss (ITU-R P.833 §2.1 with saturation; Weissberger kept for the Python reference checks), optional wall scattering (ITU-R P.1411 §4.2.1), broadcast field strength from ITU-R P.1546 curves. |
telefon/poziomy.html | The page served at radio-wid.pl. Zoom levels by grid size: 4 m (buildings and trees), 16 m, 100 m (terrain only), 1 km (country). |
przygotuj/ | Data pipeline (Python + numpy, no GDAL). Open data → 20 × 20 km packs on a national grid (EPSG:2180) → .pak files. |
przygotuj/kolejka_paczek.py | Night queue on a compute host: download sheets → buildings → pack → delete raw tiles. One pack takes about 18 min, mostly downloading. |
przygotuj/paczki-wyslij.sh | Runs on the compute host every 20 min: builds zoom levels and building outlines for new packs and uploads them straight to the web server. Its SSH key there is write-only and limited to the packs directory (rrsync -wo -no-del). |
przygotuj/paczki-na-strone.sh | Pulls finished packs to a local copy for testing the site locally. Hosts are set in przygotuj/ustawienia.sh. |
telefon/zloz.sh, telefon/wgraj.sh | Assemble the static site into _telefon/ and upload it. The upload never touches dane/paczki/, which the compute host owns. |
weryfikacja/ | Bit-exact checks of the JS engine against the Python reference models. Those models are not in this repo, so these checks only run on the author's machine. |
docs/ | Design notes (Polish): pack layout, sizes, zoom levels, privacy. |
przygotuj/)| Data | Source | Licence |
|---|---|---|
| Terrain (DTM) 1 m and 100 m, surface model (DSM) 1 m | GUGiK, opendata.geoportal.gov.pl | Polish open data, free reuse |
| Buildings LoD1 (3D models, 2024) | GUGiK | CC BY 4.0 — attribution required |
| Roads, rivers, places (BDOT10k), borders and addresses (PRG) | GUGiK | Polish open data |
| Terrain outside Poland | Copernicus DEM GLO-30 | Copernicus licence (attribution text shown on the page) |
| Transmitters (FM, DAB+, DVB-T) and cell sites | UKE (Polish telecom regulator) public registries | public registry |
| Broadcast curves | ITU-R P.1546-6, tables from the ITU-R SG3 reference implementation | see ITU terms |
The engine (silnik/) and the page do not depend on Poland. Only the inputs do. To port it you need:
przygotuj/puwg92.py, przygotuj/uklad.py). Pick your national metric CRS and pack size.arkusze.py, paczka.py). Without a surface model you can use LoD1 building heights alone. Trees are then missing.budynki_paczki.py reads CityGML LoD1).uke.py, rtv_kraj.py, stacje_kraj.py).mapa_kraj.py reads BDOT10k/PRG). Any vector source works. Note that OSM is ODbL.Scripts still contain the author's paths (~/dev/showreel-2/dane, environment variables in some of them). Treat them as a worked example, not a turnkey tool. Issues and pull requests that make the pipeline country-agnostic are welcome.
telefon/zloz.sh # needs the data in dane/ (see przygotuj/)
python3 -m http.server 8794 --directory _telefon
The site sets no cookies and the web server does not log map requests. A position from the GPS or the address search is used only inside the browser. Visits are counted with a self-hosted, cookieless Umami instance, configured to drop everything after # (the map position) and the query string.
Direction, design decisions and testing are the author's. Most of the code was written by Claude (Claude Code, Anthropic) under his direction. Results are checked against the author's own measurements, but calibration rests on a small number of readings, so treat the output as a simulation.
Copyright © 2026 Maciej Poczek. Licensed under the GNU Affero General Public License v3.0 — see LICENSE. If you run a modified version as a public service, you must publish your changes under the same licence. Data keep their own licences (table above).
PL: Mapa zasięgu radia, telewizji i sieci komórkowych dla całej Polski, liczona w przeglądarce na terenie, budynkach i drzewach. Większość kodu napisał Claude (Claude Code) pod kierunkiem autora. Kod na licencji AGPL-3.0. Dane (GUGiK, UKE, Copernicus) nie są w repozytorium. Skrypty z przygotuj/ pobierają je i przetwarzają.