Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Star Citizen companion website — auth, Verse News, P4K upload analyzer. Angular 21 + Supabase + Vercel.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Star Citizen companion — Verse News, P4K analyzer, and more.
Built with Angular 22 PWA · Supabase (Auth + Postgres + Storage + Edge Functions) · Vercel.
A fan-made Star Citizen companion: log in, follow the Verse News (Comm-Link + Spectrum + RSI status) 1:1, drop a Data.p4k to extract metadata automatically (with channel detection: live / ptu / eptu / tech-preview). Long-term goal: do everything erkul.games does, plus more.
Not affiliated with Cloud Imperium Games or Roberts Space Industries. See LICENSE.README 전문 보기 ↗Version: 0.179.1
Star Citizen companion — Verse News, P4K analyzer, and more. Built with Angular 22 PWA · Supabase (Auth + Postgres + Storage + Edge Functions) · Vercel.
Production: https://sc-companion.vercel.app
A fan-made Star Citizen companion: log in, follow the Verse News (Comm-Link + Spectrum + RSI status) 1:1, drop a Data.p4k to extract metadata automatically (with channel detection: live / ptu / eptu / tech-preview). Long-term goal: do everything erkul.games does, plus more.
Not affiliated with Cloud Imperium Games or Roberts Space Industries. See LICENSE.
Requires Node 24 (see .nvmrc, nvm use). Node 22 works from 22.22.3 on; older patches are refused by the Angular CLI.
npm install
npm start # http://127.0.0.1:4200 — talks to the cloud Supabase project
npm run build # production build into dist/sc-companion/browser
npm run typecheck # tsc --noEmit
npm test # Karma + Jasmine (ChromeHeadless)
npm run lint # ESLint via angular-eslint (ng lint)
hcnqhvzlavdycidqyaai.supabase.co (region eu-central-1, free tier).supabase/migrations/ — applied via the Supabase MCP / npm run db:push.supabase/functions/ — fetch-verse-news (RSI news proxy), process-p4k (upload analyzer).p4k-uploads — per-user folder layout, RLS scoped to auth.uid().Local stack (optional, Docker required):
npx supabase start # bring up Postgres + Auth + Storage + Functions locally
npx supabase db reset
npx supabase functions serve fetch-verse-news --no-verify-jwt
main. Vercel's project default star-citizen-companion-website.vercel.app redirects here.vercel.json configures SPA rewrites, security headers, and a CSP that allows Supabase + Google OAuth.dist/sc-companion/browser.StarOrga/Star-Citizen-Companion-Web, accept the defaults. Subsequent pushes to main deploy automatically.src/app/
core/ Supabase client provider
auth/ Sign-in, OAuth, route guards, HTTP interceptor (adds bearer to edge-function calls)
shell/ Authenticated top-bar layout
news/ Verse News feature (proxy via fetch-verse-news)
p4k/ P4K upload + history (proxy via process-p4k)
profile/ Account metadata
public/i18n/ en.json, de.json — ngx-translate
supabase/
migrations/ 00001_init_schema.sql, 00002_storage_bucket_p4k.sql
functions/ fetch-verse-news/, process-p4k/
browser-extension/ Chrome MV3 hangar import (no bundler, no npm deps)
The web app cannot read robertsspaceindustries.com — the same-origin policy
forbids it and RSI publishes no hangar API. browser-extension/
closes that gap: it reads the ship list on the user's own hangar page, offers
the import only when the fleet's fingerprint changed (no daily nagging), and
hands the list to /hangar/import through chrome.storage.local +
postMessage. No new endpoint, no token, no RLS change — the confirmed ships
are written by the user's own Supabase session. Install and privacy details
live in-app at /tools/extension.
OnPush change detection, providedIn: 'root' services.public/i18n/{de,en}.json. Never hardcode UI text.fetch-verse-news proxies api.star-citizen.wiki). Keys never enter the client bundle.authGuard waits for auth.ready() before deciding, to avoid a flash-of-login on hard refresh.fetch-verse-news.docs/readme-io/pages/ and published by ReadMe's Git
Sync via a mirror repository. Never edit it in ReadMe's web editor; see
docs/readme-io/README.md and
GIT-SYNC-SETUP.md.GET /openapi.json on the public API, rendered at /docs.PRs welcome. Convention: branch off main (feat/..., fix/...), Conventional Commit-style messages.
This repo is Claude-Code-fit — see .claude/CLAUDE.md.