BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
한 대의 비행기에서 모두가 조종석을 잡고 엔진 고장, UFO 회피, 화성 고도 도전 등 생존 경쟁
One plane. Everyone's in it. Take the controls: survive the engine-out, dodge UFOs, push toward the Mars ceiling, and top the daily leaderboard.
게임TypeScript · JavaScriptGitHub @DOGECOIN87온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기✈️ One plane. Everyone's in it. Your bag is your seat. A browser flight simulator flown live by its token's market: market cap is altitude, the five-minute move is attitude, and the 178 seats go to the biggest holders, in order.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
One plane. Everyone's in it. Your bag is your seat. A flight simulator flown by one number: the aircraft's altitude and attitude are read live from its token's market, so the aeroplane on your screen is the chart — and its 178 seats go to the biggest holders, in order. Flight SA350 · Nonstop · rendered live in the browser — the same scene the cabin windows look out on Seat Airlines never asks your wallet to approve a transaction. Every signature it requests is a plain-text message, and Wallet safety prints each on [README 설치·사용 부분 발췌] Quick start Requires Node 22.README 전문 보기 ↗
Market cap is altitude. Your bag is your seat.
A flight simulator flown by one number: the aircraft's altitude and attitude are read live from its token's market, so the aeroplane on your screen is the chart — and its 178 seats go to the biggest holders, in order.
Flight SA350 · Nonstop · rendered live in the browser — the same scene the cabin windows look out on
| Market cap is altitude | $163K flies at 163,000 ft. $1M breaks out above the clouds, $10M is space, $50M is the moon, $100M is Mars. |
| The five-minute move is attitude | A rising market pitches the nose up; a falling one pitches it down. |
| Your bag is your seat | The 178 biggest holders are seated by rank, flight deck first. Everyone else rides in the cargo hold. |
| Seats are finite | Out-hold the holder in front of you and you take their seat — and the PA tells the whole cabin. |
| Every seat is a billboard | A seated holder can put a square image on their seat, and it moves with them. |
| Your seat is which room you are in | In the cabin directory you see and reach your own section, and nobody else's. |
[!IMPORTANT] Seat Airlines never asks your wallet to approve a transaction. Every signature it requests is a plain-text message, and Wallet safety prints each one word for word.
One input drives everything the aircraft does — its token's market data — and nothing else.
| The market's… | …becomes |
|---|---|
| Market cap | Altitude, read straight off the number |
| Five-minute change | Pitch; its rate of change becomes bank |
| Holder count | Souls on board |
| Attitude | The overhead annunciators, and the PA announcements they trigger |
Market cap is altitude, so the milestones are places — five of them so far, each a different world outside the windows. → The five levels
In the weather · under $1M Low over rolling farmland among the cumulus: woods that stand up in three dimensions, villages and farms whose windows light up after dark, rivers and lakes, and a coast and open sea every few minutes, with ships under way. Your own sky, from your clock and your local weather.
Above the clouds · $1M On top of the deck: a sea of billowing cumulus to the horizon, gaps down to the country that open and close with the real weather, and a deeper blue overhead.
Space · $10M The sky drains to black and the horizon bends into a planet — oceans, coastlines and weather under a thin glowing band of atmosphere, with the stars out.
The moon · $50M Craters in real relief under a low sun, rays across the maria, a knife-sharp airless horizon — and Earth hanging off the port side.
Mars · $100M — the furthest out, so far Layered mesas, sand-filled craters and dune fields fading into a dusty butterscotch sky, under a smaller sun, with Phobos and Deimos off the port side.
The sky is the visitor's own: the sun is placed from their clock and time zone, and the weather is live from Open-Meteo — no location prompt, ever. → The sky outside
The site opens on the aeroplane full screen: press See who’s on board to go in — a few seconds in, the whole cabin rises in beside the plane, every seat and its advert, over a Claim your Seat button — or connect a Solana wallet and Fly — arrow keys or a drag to climb, dive and turn, low over the hills, with a brief to reach 10,000 ft. At 10,000 ft an engine blows; the ground, when it comes, sends you in. Inside, the page opens outside, on the whole aeroplane, flying over ground that goes past for real: farmland with rolling hills, woods, villages and farms that stand up in three dimensions, rivers and lakes, a coast every few minutes and a stretch of open sea with ships under way. It banks into gentle turns, ailerons and rudder working, and every window lit from outside is a row somebody has genuinely booked.
Straight under the aeroplane is Who’s on board: every held seat and the advert on it, cabin by cabin, for anybody, with nothing to connect. Connect a wallet to step inside to a seat, turn your head, walk the aircraft, climb into the flight deck or drop into the cargo hold.
178 seats across five cabins — flight deck, first, business, exit row, economy — filled strictly by rank. Your seat is your placement on the wall, the size of your tile, and which cabin's directory and room you belong to.
Check in with Phantom, Solflare, Backpack or Nightly and your boarding pass is issued on the spot.
→ The seat ladder · Cabins and seats
Every seat is a square, so every held seat is a billboard. Holders put a 1:1 image on the seat they hold; the whole aircraft reads as a mosaic, best placements at the front. Adverts belong to the wallet, so they follow their holder up and down the cabin.
A holder directory with the cabin's own manners: publish a card, read your own section's cards, introduce yourself, talk in your cabin's room — and from the flight deck, one PA announcement a day that the whole aircraft hears.
→ Your seat is which room you are in
The full guide lives on GitBook, synced from the docs/ folder of this repository.
Getting started
How it flies
The cabin
The wall
Section network
Safety & help
For developers
The page is a static single-page app on GitHub Pages. Anything that has to be shared between visitors — adverts, the directory, the holder list — lives in one Cloudflare Worker, which holds the RPC key so no browser ever has to.
flowchart LR
subgraph Browser["seat-airlines.space · GitHub Pages"]
UI["React 19 + Tailwind 4<br/>the page, the seat map, the directory"]
GL["three.js<br/>the aircraft, the cabin, the world"]
UI --- GL
end
JUP[("Jupiter<br/>market data")] -->|"market cap · 5m move · holders"| UI
OM[("Open-Meteo<br/>weather")] -->|"live sky"| UI
UI <-->|"adverts · directory · holder list"| W["Cloudflare Worker"]
W --- KV[("KV<br/>records")]
W --- R2[("R2<br/>artwork")]
W --- D1[("D1<br/>cards · messages")]
W -->|"holder scan, cached a minute"| RPC[("Solana RPC")]
The seat ladder itself lives in src/lib/seating.ts — no browser and no Cloudflare in it — and the page and the Worker import the same file, so they cannot disagree about who sits where. → How it is built · Engineering notes
Requires Node 22.
npm install
npm run dev # http://localhost:3000
npm test # the page's unit suites
npm run build # typecheck, then bundle to dist/
With no configuration at all, a build flies the committed token against the production Worker. To run the Worker locally too — Miniflare, with simulated KV, R2 and D1 — see Run it locally and the Worker's README.
├── src/
│ ├── App.tsx the landing, then the page: the view, its section panels
│ ├── components/ views, the seat map, the directory, the departure board
│ ├── three/ the 3D world: sky, terrain, the aeroplane, the cabin
│ ├── lib/ flight model, market feed, seating, wallet, directory client
│ └── content/cabin.ts the cabin's layout and copy
├── worker/ the Cloudflare Worker: adverts, directory, holders
├── docs/ the GitBook documentation (synced both ways)
├── test/ unit suites for the page
├── public/ icons, logo, audio, CNAME, the wallet-free mini-game
└── gitbook-docs.yaml the GitBook site contract
The wallet-free, standalone flight game is available at seat-airlines.space/minigame/. It is also safe to embed as a Radbro playable build: it uses relative assets, has no wallet or network dependencies, and answers Radbro's ready/result messages without pinning the parent origin. The same build therefore works under both radbro.fun and radbro.gg.
Every setting is optional, and every VITE_ value is public — Vite writes it into the bundle — so they are repository variables, never secrets.
| Variable | What it does |
|---|---|
VITE_TOKEN_MINT | The token the aircraft flies; overrides the committed address |
VITE_BANNERS_API | The Worker: the advert wall, and by default everything else |
VITE_HOLDERS_URL | An indexer for the holder list, if you have one |
VITE_DOCS_URL | Where the footer's Docs on GitBook link goes |
[!WARNING] Leave browser RPC configuration unset in production when a Worker is available. If a fallback is needed, use only an unkeyed
VITE_RPC_URL_PUBLIC; keyed RPC endpoints belong in the Worker secret.
The full list, and the Worker's bindings and secrets: Configuration.
| What | How |
|---|---|
| The page | Every push to main runs the tests, builds and publishes to GitHub Pages at seat-airlines.space. |
| The Worker | Pushes that touch worker/ type-check, test and deploy it — when the repository has a CLOUDFLARE_API_TOKEN secret. |
| The docs | GitBook Git Sync publishes docs/; a push that changes only the docs does not redeploy the site. |
| A new token | npm run token:update -- <new CA>: checks on-chain that it is a token mint and shows its name, asks you to type yes, writes it everywhere it is printed (page, Worker, index.html, docs), runs the tests and a build, pushes to main, and waits for both deploys to go live. --no-push stops before committing. |
Step by step, including DNS for the custom domain: Deploying.
MIT © 2026 Matt Mobley