factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Samoloty wojskowe, śmigłowce służbowe i duże transportowce nad Polską na żywo — PWA z mapą i powiadomieniami push (ADS-B)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Live military aircraft, emergency-service helicopters and the largest transports over Poland — with a push alert when one comes close to you.
The app itself is in Polish.
Each category can be switched off — it then disappears from the map and stops sending alerts.README 전문 보기 ↗Live military aircraft, emergency-service helicopters and the largest transports over Poland — with a push alert when one comes close to you.
The app itself is in Polish.
| Military | aircraft tagged as military by adsb.fi, plus ones the app identifies itself — by ICAO address blocks, callsigns (RCH, SAVER, DUKE…) and squawks 7777 / 7400 |
| Service helicopters | air ambulance (LPR), police, border guard and foreign rescue services — confirmed rotorcraft only |
| Heavy aircraft | Boeing 747, An-124, An-225 |
Each category can be switched off — it then disappears from the map and stops sending alerts.
| Source | Used for |
|---|---|
adsb.fi /v2/mil | global list of military aircraft |
adsb.fi /v2/lat/…/lon/…/dist/250 | all traffic over Poland — catches military aircraft that /mil does not tag |
| OpenSky Network | fallback when adsb.fi is down (no type or registration) |
| Planespotters.net | aircraft photos |
| Wikimedia Commons | freely licensed type photos shown when no photo of the individual airframe exists (credited on the card) |
| OpenStreetMap | airfield and training-area outlines |
| PANSA AUP/UUP | daily airspace use plan — which military zones are reserved, when and by whom (informative only) |
| adsb.lol | second global military list (different receiver network — each source has its own gaps) and lookup by aircraft type |
| adsbdb | flight routes by callsign — ADS-B itself carries no destination |
ADS-B does not carry a take-off time, so flight time counts from the earliest trail point the server knows — a lower bound, not an exact value.
flowchart LR
A[adsb.fi / OpenSky] --> F[aircraft<br/>on request, every 5 s]
A --> C[collect<br/>cron every 2 min]
F --> B[(Netlify Blobs<br/>4 h trails)]
C --> B
F --> P[PWA<br/>React + Leaflet]
B --> P
A --> N[notify<br/>cron every 1 min]
N -->|Web Push| P
| Function | Role |
|---|---|
aircraft | fetches and classifies traffic, returns the trail of a selected aircraft |
collect | records trails in the background every 2 minutes |
notify | checks every subscriber's radius each minute and sends push alerts |
airspace | proxies and trims the PANSA airspace use plan (no CORS upstream), cached 10 min |
inbound | serves 747s and An-124s bound for Rzeszów or Kraków |
inbound-collect | refreshes that list every 10 minutes (adsb.lol + adsbdb) so page traffic never reaches those services |
subscribe / status / test-push | subscription storage, diagnostics, test push |
npm install
npx netlify dev # Vite + Netlify Functions
Plain npm run dev starts only the UI — the map stays empty and the status mark in the corner turns red.
Push notifications need VAPID keys (npx web-push generate-vapid-keys) — see .env.example.
npm test # vitest
npm run lint # eslint
npm run build # production build to dist/
Deployment: every push to main is built automatically on Netlify.
netlify/functions/ aircraft, airspace, collect, notify, subscribe, status, test-push
lib/ military classification, Poland boundary, security
src/
components/ map, aircraft card, panels, SVG silhouettes
data/ airfield and training-area outlines
lib/ palette, geometry, type names, photo matching
airfields.js airfields: Polish military, civil, NATO bases
test/ vitest tests
Code: MIT © 2026 Maciej Poręba.
Map data and the airfield and training-area outlines in src/data/ come from © OpenStreetMap contributors and are available under the ODbL. Aircraft data belongs to adsb.fi and OpenSky Network, the airspace use plan to PANSA (Polska Agencja Żeglugi Powietrznej), photos to their authors on Planespotters.net — each under its own terms.