Skip to content

feat(airport-iq): add Airport IQ gallery template - #63

Open
KornAlexander wants to merge 2 commits into
microsoft:mainfrom
KornAlexander:feat/airport-iq
Open

KornAlexander wants to merge 2 commits into
microsoft:mainfrom
KornAlexander:feat/airport-iq

Conversation

@KornAlexander

Copy link
Copy Markdown
Contributor

Adds the Airport IQ gallery template. Proposal: #62

Description

A Fabric static-hosting Rayfin app with two interactive 3D airport views, told from the perspective of a single airport operator:

  • Live Approach (CesiumJS) — aircraft on a zoomable 3D globe: approach → land → taxi → park (FRA · MUC · BER · DUS · AMS).
  • Live-Ops (Three.js) — gate operations: a time-scrubber over gate occupancy, delays, and cascading gate conflicts (DUS · BER).

Both render over real OpenStreetMap geometry. The template ships fully synthetic, self-contained data; a single data-adapter.js seam lets you switch to opt-in live ADS-B (airplanes.live) or your own Fabric warehouse / lakehouse via ?data=.

Type of change

  • New template

Template checklist

  • package.json includes template.name, template.displayName, template.description
  • manifest.json has correct templateId and services flags (auth ✅, data —, staticHosting ✅)
  • rayfin/rayfin.yml id / name match the directory name
  • README.md includes Getting Started, Project Structure, and Scripts sections
  • Ran node scripts/generate-manifest.mjs (root + leaf manifests + README table updated)
  • Scaffold test passes: rayfin init -t . --template-name "Airport IQ"
  • npm run lint, npm run build, npm test pass

Gallery checklist

  • node scripts/generate-manifest.mjs --check passes
  • README templates table reflects the new template

Notes for reviewers — a deliberate design choice

This is a static-hosting template (vanilla JS + CesiumJS/Three.js from CDN), not the React/Vite/Tailwind baseline. The two views are self-contained 3D apps where a bundler/framework adds weight without benefit, so build just assembles fabric-dist/. Accordingly, lint is node --check (JavaScript syntax validation) and test is a smoke test rather than ESLint/Vitest. This is intentional and documented in the template's Design notes section — flagging it so it reads as a conscious decision, not an oversight.

Additional notes:

  • Live ADS-B is off by default. The app runs entirely on synthetic data; the airplanes.live feed is opt-in via ?data=live and documented as non-commercial / no-SLA / 1 req/s.
  • Geometry & basemap are © OpenStreetMap contributors (ODbL); attribution is in-app and in the README.
  • The template includes a ~9 MB voice-over walkthrough MP4 in media/ (linked from the README). Happy to move it to an external link if you'd prefer to keep binaries out of the repo.

AI disclosure

Authored with GitHub Copilot. Both 3D views were verified by rendering locally and on a live Microsoft Fabric deployment via Playwright (0 console errors); lint / build / test, generate-manifest --check, and the rayfin init scaffold all pass locally.

Closes #62

Two 3D airport views on a Fabric static-hosting Rayfin app: Live Approach (CesiumJS globe, aircraft on approach/taxi/park) and Live-Ops (Three.js gate operations with delays and cascading gate conflicts), over real OpenStreetMap geometry. Ships fully synthetic, self-contained baked data; a single data-adapter seam swaps in opt-in live ADS-B (airplanes.live, non-commercial/no-SLA, off by default) or your own Fabric warehouse/lakehouse via ?data=. Includes manifest.json, rayfin-template.yml, rayfin/rayfin.yml, rayfin/data/schema.ts (BYO-data contract), lint/build/test scripts + a smoke test, a README with an embedded walkthrough video, screenshots and licensing notes, and updates the gallery manifests + README table.

AI-assisted with GitHub Copilot; both views verified rendering locally and on a live Fabric deployment via Playwright (0 console errors); lint/build/test pass locally.
Preserve the existing template and all upstream gallery entries. No application source or dependency changes. Prepared with GitHub Copilot.

Verified clean LF gallery generation, template metadata, lint, build, tests, and template scaffolding.
@KornAlexander

Copy link
Copy Markdown
Contributor Author

Hi Christopher Anderson (@christopheranderson), feel free to decline or close this PR if the template isn't a good fit for the gallery. No worries either way. Happy to address specific feedback if useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New Template Proposal: Airport IQ

1 participant