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
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證MMRTR 조회 서비스
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗리그 오브 레전드 전적 검색 서비스의 회원·커뮤니티·듀오 백엔드. OAuth/RSO 로그인, 커뮤니티, 듀오 찾기와 (이전 전까지) 챔피언 통계를 제공합니다.
Riot 데이터(소환사·전적·리그/랭킹·게임 데이터)는 lol-repository 가 소유하고 서빙하며, lol-server 는 DB 가 아니라 그 API 로만 받습니다 (app 스키마만 소유 — docs/db-split/README.md).
STATS_DATASOURCE=bigquery)local 프로파일은 다음 외부 서비스가 필요합니다.
localhost:5432 (DB postgres, user postgres, password 1234 기본)localhost:6379http://localhost:8112 — 듀오 글·신청에 붙일 Riot 계정 통계 조회. 없으면 통계 없이 만들어진다stats.datasource=bigquery 사용 시)로컬 인프라는 docker/docker-compose-local.yml 로 한 번에 기동할 수 있습니다.
# postgres / redis
docker compose -f docker/docker-compose-local.yml up -d
모니터링 스택 (Prometheus / Grafana / Loki / Promtail + 앱 컨테이너 통합) 은 별도 compose 로 분리되어 있습니다.
docker compose -f docker/docker-compose.monitoring.yml up -d
# Grafana http://localhost:3010 (admin/admin), Prometheus :9090, Loki :3100
운영 이미지는
docker/Dockerfile(JDK 21 멀티스테이지 빌드).
# 로컬 실행 (Docker 인프라 기동 후)
./gradlew bootRun -Dspring.profiles.active=local
# 단일 모듈 실행 가능 jar (bootJar 산출은 app:application 모듈에만 활성)
./gradlew :module:app:application:bootJar
# 전체 테스트
./gradlew test
# 단일 클래스만 실행
./gradlew :module:<모듈경로>:test --tests <클래스명>
# RestDocs HTML 재생성 (RestDocs 테스트 변경 시 필수)
./gradlew :module:infra:api:asciidoctor
# 클린 빌드
./gradlew clean build
run-local.sh 는 build → JAR 실행을 한 번에 수행하며, .env 의 DB_HOST/DB_PORT/DB_NAME/DB_USERNAME/DB_PASSWORD 를 system property 로 주입합니다.
local, prod, test<module>-<profile>.yml) 을 module/app/application/src/main/resources/application-<profile>.yml 에서 importSTATS_DATASOURCE=bigquery, DB_*, LOL_REPOSITORY_INTERNAL_URL(prod, lol-repository 내부 포트 8081), RSO 클라이언트 자격증명, BigQuery 서비스 계정 경로헥사고날 (Ports & Adapters) 기반의 Gradle 멀티 모듈 구조. 컨텍스트마다 domain + application(port.in·port.out) + adapter(in/web · out) 를 갖고, 의존은 adapter → application → domain 단방향입니다. app:application 만 bootJar 를 산출하며 모든 모듈을 implementation 으로 묶어 컴포지션 루트 역할을 합니다.
module/
├── app/application/ # Spring Boot 진입점, 컴포지션 루트, bootJar, app 스키마 Flyway 체인
├── common/ # 공유 커널 (web·error·security + JPA·Redis·S3 config, testFixtures)
├── shared/ # Tier, Platform, TierFilter (championstats 용)
├── support/logging/ # @LogExecutionTime AOP 등 횡단 유틸
└── domain/
├── member/ # 회원 + RSO/OAuth2 로그인 (RefreshToken / JWT)
├── community/ # 게시글 / 댓글 / 투표 / 이미지
├── duo/ # 듀오 모집글 / 신청 (Riot 계정 통계는 lol-repository 내부 API)
└── championstats/ # 챔피언 통계 OLAP (BigQuery) — lol-repository 로 이전 예정
자세한 모듈 가이드는 CLAUDE.md 와 각 모듈의 CLAUDE.md 참조.
GET /internal/v1/summoners/{puuid}/duo-profile(lol-repository 내부 포트)로 받아 글·신청 생성 시점에 스냅샷으로 저장하되, 받지 못하면(무응답·장애·색인 없음) 통계 없이 만든다(티어 UNRANKED 표식, 언랭 검증 생략). 듀오는 RSO 연동 회원만 쓰므로 매칭 상대에게 보여 줄 Riot ID 는 lol-repository 에 묻지 않고 연동 때 저장한 값을 쓴다. 그 값이 없는 예전 연동이면 다시 연동하라고 막는다(RIOT_ACCOUNT_RELINK_REQUIRED).STATS_DATASOURCE=bigquery). lol-repository 로 이전 예정.상세 규칙은 각 모듈 CLAUDE.md. 공통 베이스라인:
@RequiredArgsConstructor + private final (생성자 주입)@Transactional(readOnly = true), 변경 @TransactionalResponseEntity<ApiResponse<T>>, RESTful 상태 코드 (POST 201 / GET·PUT 200 / DELETE 204)validate* guard 가 직접 던진다 (서비스에서 boolean+throw 금지)*ReadModel.of(domain) 정적 팩토리에서만OAuthProvider.RIOT.name(), DuoPostStatus.ACTIVE.name() 등 enum 사용<type>: <한글 설명> (타입 feat, fix, refactor, docs, chore)feature/*, fix/*, refactor/* (<type>/<kebab 설명>) → develop → main; hotfix 는 hotfix/* → main → developCloses MP-<번호> (일부만 다루면 Part of MP-<번호>)CLAUDE.md — 모듈 라우팅 / 작업 별 진입점docs/ARCHITECTURE.md — 모듈 의존 그래프 + 데이터 흐름 (mermaid) + 변경 영향 표docs/workflow.md — 브랜치 / 커밋 규칙, PR 본문 기반 Linear (MP-*) 이슈 연결 · 생명주기docs/docs-maintenance.md — CLAUDE.md / 문서 동기화 절차 (PR 시점 / 분기 리뷰 / CI 게이트)docs/oauth2-login.md, docs/rso-oauth2-troubleshooting.md — OAuth/RSO 흐름 디테일module/infra/api/src/docs/asciidoc/index.adoc — 생성된 API 문서 entry이 프로젝트는 비공개 저장소입니다.