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
질문을 적고 고리를 당겨 보세요. 우리 학교만의 마법의 소라고동.
Translation pending
GamesTypeScript · JavaScriptGitHub @junjuny0227OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
우리 학교 재학생과 승인 완료 선생님이 DataGSM으로 로그인하고, 질문을 적은 뒤 직접 제작한 Three.js 소라고동의 고리를 당기는 웹 앱입니다. Jeb의 choice 응답을 검증해 고정 단답 대사로 표시합니다. 답변은 오락용이며 중요한 의사결정에 사용하지 않습니다. Next.js App Router · React · TypeScript · Tailwind CSS · TanStack Query · Three.js · Upstash Redis 기반 단일 앱입니다. 로컬 화면은 http://localhost:3100에서 확인합니다. 실제 인증·질문에는 다음 설정이 모두 필요합니다. 설정이 없거나 Redis 연결이 실패하면 서비스 오류를 반환하며 가짜 로그인·무작위 답변으로 대체하지 않습니다. DataGSM client에는 datagsm:self_read 권한이 필요합니다. 운영·preview는 각각 callback과 Redis namespace를 분리합니다. 비밀값에 NEXT_PUBLIC_을 붙이지 않으며 실제 환경 파일은 커밋하지 않습니다. 외부 서비스 생성·비용 발생·배포는 별도 승인 사항입니다.Read the full README ↗
우리 학교 재학생과 승인 완료 선생님이 DataGSM으로 로그인하고, 질문을 적은 뒤 직접 제작한 Three.js 소라고동의 고리를 당기는 웹 앱입니다. Jeb의 choice 응답을 검증해 고정 단답 대사로 표시합니다. 답변은 오락용이며 중요한 의사결정에 사용하지 않습니다.
Next.js App Router · React · TypeScript · Tailwind CSS · TanStack Query · Three.js · Upstash Redis 기반 단일 앱입니다.
pnpm install
cp .env.example .env.local
# .env.local의 placeholder를 실제 등록·연결 값으로 교체
NODE_ENV=development pnpm dev --port 3100
로컬 화면은 http://localhost:3100에서 확인합니다. 실제 인증·질문에는 다음 설정이 모두 필요합니다. 설정이 없거나 Redis 연결이 실패하면 서비스 오류를 반환하며 가짜 로그인·무작위 답변으로 대체하지 않습니다.
| 환경 변수 | 용도 |
|---|---|
API_BASE_URL | 기존 /backend rewrite 설정에 필수. 소라고동 API는 자체 /api를 사용 |
APP_ORIGIN | 고정 앱 출처. 로컬 예시 http://localhost:3100, 배포는 HTTPS |
DATAGSM_CLIENT_ID | 등록된 DataGSM OAuth client ID |
DATAGSM_REDIRECT_URI | 등록한 ${APP_ORIGIN}/api/auth/callback, 앱과 정확히 같은 출처 |
UPSTASH_REDIS_REST_URL | 관리형 Redis REST endpoint |
UPSTASH_REDIS_REST_TOKEN | 서버 전용 Redis 토큰 |
REDIS_NAMESPACE | 환경별 별도 키 공간. 운영은 명시 필수이며 conch:v1:development 사용 금지 |
JEB_API_KEY | 서버 전용 Jeb 키 |
DataGSM client에는 datagsm:self_read 권한이 필요합니다. 운영·preview는 각각 callback과 Redis namespace를 분리합니다. 비밀값에 NEXT_PUBLIC_을 붙이지 않으며 실제 환경 파일은 커밋하지 않습니다. 외부 서비스 생성·비용 발생·배포는 별도 승인 사항입니다.
/api/conch/usage가 Redis 기록을 조회하며, 요청 후·화면 복귀·한국 시간 자정에 갱신합니다. 제한 안내에는 남은 초를 표시하고 대기 중 재제출을 막습니다. 기존 정책대로 예약된 요청은 외부 답변 서비스가 실패해도 횟수를 소모할 수 있습니다. 조회 실패 시 임의의 횟수로 대체하지 않습니다.src/app/icon.svg입니다. 수정 후 pnpm exec playwright install chromium과 node scripts/generate-pwa-icons.mjs로 PNG를 다시 생성합니다. 배포 빌드에서는 브라우저나 추가 패키지 없이 생성된 정적 파일을 사용합니다.@vercel/analytics/next를 연결합니다. 화면 조회는 /와 /login만 허용하며 query·hash는 전송 전에 제거합니다.src/
├── app/ 얇은 라우트·Route Handler, 전역 스타일·Provider
├── views/ home·login 페이지 구성
├── widgets/ conch-playground 화면 조합
├── features/ auth·ask-conch 사용자 액션과 서버 처리
├── entities/ account 자격·세션, conch 모델·대사·장면
└── shared/ API client·서버 설정·Redis·오류·공통 유틸
의존성은 app → views → widgets → features → entities → shared 방향으로만 흐릅니다. 클라이언트 공개 API와 index.server.ts를 분리합니다. 기존 브라우저 /backend·서버 API_BASE_URL 래퍼는 보존하며 앱 동일 출처 API에는 requestApp을 사용합니다. 이 함수는 응답의 data를 이미 꺼내 반환합니다.
pnpm peers check
pnpm lint
pnpm lint:fsd
pnpm format:check
API_BASE_URL=http://localhost:8080 pnpm check-types
API_BASE_URL=http://localhost:8080 pnpm build
NODE_ENV=test pnpm test
pnpm exec playwright install chromium
NODE_ENV=test pnpm test:e2e
브라우저 테스트의 OAuth·Jeb 응답은 명시적 fixture입니다. 실제 3D 렌더·포인터와 화면 상태를 검증하지만 외부 서비스 실연동 증거는 아닙니다. localhost Redis와 redis-cli가 없으면 실제 Lua 경쟁 조건 테스트 4개는 건너뜁니다. 전용 테스트 Redis가 있다면 CONCH_TEST_REDIS_PORT를 지정해 pnpm test src/features/ask-conch/api/reservationRedis.test.ts로 실행할 수 있습니다. 이 검사는 무작위 테스트 prefix만 사용하고 생성한 키를 삭제합니다.
PR CI에는 peer·lint·FSD·포맷·타입·단위 테스트·빌드·Chromium 브라우저 검사를 연결했습니다. 원격 CI 통과 여부는 별도 확인 대상입니다. 구현 계획은 docs/implementation-plan.md, 로컬 실행 결과와 남은 출시 조건은 docs/implementation-status.md, 3D 단독 재현 절차와 캡처는 src/entities/conch/qa/README.md에 있습니다.
프로젝트 규칙은 AGENTS.md, 저장소 전용 절차는 .hermes/skills/에 있습니다. 기존 .claude 설정을 유지합니다. 커밋·푸시·PR·배포는 각각 사용자 요청 범위에서만 수행합니다.
hermes skills trust "$(git rev-parse --show-toplevel)"
hermes