BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Sports-style crypto league MVP built with Next.js 16, TypeScript, Tailwind, Supabase, and a Railway worker.
Without Supabase env vars, local development runs against seeded in-memory data. Production always requires Supabase and live market data; TEST_MODE=true cannot enable in-memory storage or generated market caps in production. The local admin key is dev-admin.
1. Run supabase/schema.sql in your Supabase project.
2. Set NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY.
3. Seed the season:
Set SEASON_START_ISO before seeding to lock the 82-race schedule to a production start time.README 전문 보기 ↗Sports-style crypto league MVP built with Next.js 16, TypeScript, Tailwind, Supabase, and a Railway worker.
npm install
npm run dev
Without Supabase env vars, local development runs against seeded in-memory data. Production always requires Supabase and live market data; TEST_MODE=true cannot enable in-memory storage or generated market caps in production. The local admin key is dev-admin.
supabase/schema.sql in your Supabase project.NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY.npm run seed -- --reset
Set SEASON_START_ISO before seeding to lock the 82-race schedule to a production start time.
If the database already exists, run supabase/payouts.sql once before enabling automated payouts.
Railway can run the worker as either a daemon or one-shot cron. In production,
this worker is the sole race scheduler; public website/API requests never advance
races or payouts. The local-only API_ENABLE_AUTO_TICK switch is ignored in
production so web scaling cannot create competing schedulers.
npm run worker
npm run worker:tick
Use WORKER_MODE=daemon for 30-second market-cap refreshes, or WORKER_MODE=cron for a single tick per Railway cron execution.
Copy .env.example to .env.local for the Vercel app and to Railway variables for the worker. The market-cap service uses deterministic mock caps unless Helius or MARKET_CAP_API_URL is configured.
For the fixed-supply BULLRUN setup, set TOKEN_FIXED_SUPPLY=1000000000. Displayed market cap is live price * 1B, and race winners are selected by the highest market cap among the 4 bulls at the race end snapshot. HELIUS_API_KEY enables CA-based price lookup through Helius getAsset when Helius returns token_info.price_info; MARKET_CAP_API_URL can still override this with direct market caps or prices.
Set NEXT_PUBLIC_BULLRUN_CA and NEXT_PUBLIC_BULLRUN_X_URL to show the header CA copy button and X link. Footer buttons appear when NEXT_PUBLIC_PUMP_FUN_URL, NEXT_PUBLIC_DEXSCREENER_URL, NEXT_PUBLIC_BUY_BULLRUN_URL, or NEXT_PUBLIC_COINGECKO_URL are set.
GET /api/health checks persistent storage reachability and reports the selected market-data mode. A 503 response means the site cannot serve a persistent league. The endpoint does not expose credentials or claim to verify market-provider reachability.
Before announcing the production site, verify that the canonical host is bound to this Next.js app and not an unrelated static deployment:
NEXT_PUBLIC_SITE_URL=https://your-production-host.example npm run preflight:production
The preflight requires /api/health, /api/current-race, and /api/standings to return their expected JSON shapes, and requires the persistent database health check to pass. It does not verify market-provider freshness, payout wallets, or race settlement; those need separate funded staging checks.
Automated payouts are Railway-only and are disabled unless PAYOUT_EXECUTION_ENABLED=true. The worker snapshots holders at race completion, requires winning-bull holders to also hold at least BULLRUN_MIN_HOLDING, weights both payout groups by token holdings, filters payouts below MIN_PAYOUT_SOL, and sends SOL from the configured reward vault private keys. Fund the reward wallets before enabling this, or set PAYOUT_SPLIT_FROM_CLAIM_WALLET=true to first split the race amount from CLAIM_WALLET_PRIVATE_KEY/PAYOUT_SIGNER_PRIVATE_KEY into the two reward wallets plus the Championship Vault.
After changing launch bulls or resetting production data, run:
npm run seed -- --reset
With Supabase env vars set, this clears prior season rows and seeds the 16 launch bulls, a clean 82-race schedule, zero standings, zero vault totals, and no previous winners.