BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI-powered network monitoring and ping analytics platform built with Next.js for real-time connectivity insights and diagnostics.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Find the fastest server for your game, tested from your own connection.
PingPilot AI helps gamers choose the best server region. Pick a game, and the app tests every one of its server regions from the player's own internet connection. It then recommends the best region and explains why. Every test is saved, so players can see how their connection behaves over days and weeks, not just in one snapshot.
Supported games: Dota 2 · Mobile Legends: Bang Bang · Delta Force · Counter-Strike 2 · League of Legends · plus any custom server. Valorant is listed as coming soon (see Known limitations).README 전문 보기 ↗Find the fastest server for your game, tested from your own connection.
PingPilot AI helps gamers choose the best server region. Pick a game, and the app tests every one of its server regions from the player's own internet connection. It then recommends the best region and explains why. Every test is saved, so players can see how their connection behaves over days and weeks, not just in one snapshot.
Supported games: Dota 2 · Mobile Legends: Bang Bang · Delta Force · Counter-Strike 2 · League of Legends · plus any custom server. Valorant is listed as coming soon (see Known limitations).
Live test: every region is tested in turn. Each finished region appears as a dot on the radar (closer to the centre means lower ping), and pings are colour-coded by quality.
Dashboard: key numbers, the main route over time, recent tests and personal suggestions.
Plain-language advice based on the player's own history, for example:
Every suggestion shows the numbers behind it. Suggestions are generated instantly by a built-in rules engine, with no third-party AI service, API keys or running costs.
Sign up with email and password or Continue with Google. Includes email confirmation, password reset, and clear error messages (wrong password, unconfirmed email, too many attempts).
Aggregate usage stats: users, active users, tests per day, and most-tested games. Only anonymous totals are shown, never individual users' data.
It measures the player's real connection. Tests run in the player's own browser, not on our servers. The numbers reflect their own home network, ISP and route.
It says exactly what it measures. Browsers can't send traditional "ping" packets or connect to game servers directly. So PingPilot times secure web requests to a cloud endpoint in the same city as each game's servers. That tracks in-game ping closely, and the app says so on screen rather than implying otherwise.
No made-up numbers. If a region can't be reached, it shows as Unreachable. The app never fills gaps with estimated or simulated values.
It only advises. PingPilot never changes DNS, firewall, router or system settings.
| Area | Summary |
|---|---|
| Login reliability | Fixed the root cause of random logouts and "session not found" errors. The browser was signing in to an old database while the server checked a new one. Added Google sign-in and password reset. |
| Game Ping Optimizer | New screen built on real, in-browser measurements that replace the old simulated results. Covers 5 games and 55 server regions. |
| Suggestions | Rules-based advice from each player's history. No API keys or paid services required. |
| New screens | Dashboard, History, Settings and Admin, all on real data. The old demo-data pages were removed. |
| Data privacy | Each player can only ever see their own data, enforced by the database itself (Row Level Security on every table). Previously, all users shared one history table. |
| Security | Every page and API checks the login on the server. Every input is validated. Security headers (CSP, clickjacking protection, HSTS) are set, and APIs are rate limited. |
| Reliability | Automated checks (lint, type-check, 94 tests, production build) run on every change via GitHub Actions. Includes structured server logs and optional Sentry error monitoring. |
| Documentation | This README plus guides for auth, the optimizer, suggestions and security. |
lib/games/catalog.ts).Next.js 16 (App Router, proxy.ts) · React 19 · TypeScript · Tailwind CSS 4 · Supabase (Auth + Postgres with RLS) via @supabase/ssr · Recharts · zod · Sentry · Vitest · GitHub Actions · Vercel
Next.js 16 differs from older versions (e.g.
middleware.ts→proxy.ts). Readnode_modules/next/dist/docs/before changing framework-level code. SeeAGENTS.md.
Requirements: Node.js 22+ (see .nvmrc) and a Supabase project.
npm ci
cp .env.example .env.local # then fill in the values below
npm run dev # http://localhost:3000
One-time setup:
supabase/migrations/, in filename order. Either use the CLI (supabase link --project-ref <ref> then supabase db push), or paste each file into the Supabase SQL editor. They're safe to re-run.update auth.users set raw_app_meta_data = raw_app_meta_data || '{"role":"admin"}' where email = '[email protected]';
| Variable | Required | Visible to browser | Purpose |
|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | yes | yes | Supabase project URL |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | yes | yes | Supabase publishable (anon-level) key |
NEXT_PUBLIC_SENTRY_DSN | no | yes | Browser error reporting |
SENTRY_DSN | no | no | Server error reporting |
SENTRY_AUTH_TOKEN, SENTRY_ORG, SENTRY_PROJECT | no | no (build only) | Source-map upload during next build |
NEXT_PUBLIC_* values are baked in at build time, so redeploy after changing them. No service-role key is used anywhere. All database access runs as the signed-in user, under Row Level Security.
Design preview (development only): with npm run dev running, open /dev/preview/dashboard, dashboard-empty, optimizer, history, settings or admin to see the signed-in screens with sample data (lib/dev/fixtures.ts), without an account. These routes return 404 in production builds.
| Command | |
|---|---|
npm run dev | Dev server |
npm run build / npm start | Production build / serve |
npm run lint | ESLint |
npm run typecheck | tsc --noEmit |
npm test · npm run test:watch · npm run test:coverage | Vitest |
Browser Next.js on Vercel Supabase
─────── ───────────────── ────────
optimizer probe ──HTTPS──▶ AWS regional /ping endpoints (timing only)
│ raw samples
▼
POST /api/ping-runs ─────────────────▶ proxy.ts (session refresh, 401/redirect)
route: auth → rate limit → zod → recompute stats ──▶ ping_runs / ping_results (RLS)
GET /api/suggestions ────────────────▶ route: auth → features from history → rules ─────▶ ping_runs (RLS)
Server components (dashboard, history, settings, admin) ── user's session ─────────────▶ tables (RLS) / admin_usage_stats()
Errors ── /monitoring tunnel ──▶ Sentry
| Path | Contents |
|---|---|
proxy.ts | Session refresh and route protection (runs before every request) |
app/ | Pages and route handlers (app/api/*, app/auth/*) |
components/ | UI: optimizer/, charts/, suggestions/, history/, settings/, admin/, auth/, games/, shared/, ui/ |
lib/supabase/ | Browser, server and proxy Supabase clients |
lib/auth.ts | requirePageUser, authenticateRoute, isAdmin |
lib/games/catalog.ts | Games, regions and probe endpoints (data only; edit here to add a game) |
lib/latency/ | Browser probe, pure stats (shared client/server), zod schemas, run service |
lib/suggestions/ | Feature extraction from history + the rules engine |
lib/rate-limit.ts, lib/logger.ts | Postgres-backed rate limits, structured JSON logs (+ Sentry) |
supabase/migrations/ | Schema, RLS policies, SQL functions |
tests/ | Vitest unit and route-handler tests |
Guides: AUTH · OPTIMIZER · SUGGESTIONS · SECURITY
.github/workflows/ci.yml) runs on every pull request and every push to main: lint → type-check → tests with coverage → production build. It needs no secrets.main to production. Set the env vars above in Vercel for both Production and Preview.main in GitHub and require the CI check to pass before merging.