码桶
发现社区成员的开源项目
版本历史
6 次提交提交详情
2f7f96d提交编号
2f7f96da78c7adb8972c9cf387adec402c580de4提交作者人皇<codebucket@localhost>
提交时间2026-07-28 00:31:33 +0800
更新说明更新 README.md
文件变更 1 个文件
文件新增删除
README.md+518-3文件差异 逐行查看本次提交的修改
README.md+518-3
@@ -1,3 +1,518 @@1
-# To-Reach-All-Easily2
-3
-trae.ren1
+# To-Reach-All-Easily2
+3
+<p align="center">4
+ <img src="assets/readme-hero.svg" alt="TRAE - To Reach All Easily" width="100%" />5
+</p>6
+7
+<p align="center">8
+ <a href="#简体中文"><img alt="Lang Chinese" src="https://img.shields.io/badge/lang-中文-006EFF?style=flat-square" /></a>9
+ <a href="#english"><img alt="Lang English" src="https://img.shields.io/badge/lang-English-006EFF?style=flat-square" /></a>10
+ <a href="#한국어"><img alt="Lang Korean" src="https://img.shields.io/badge/lang-한국어-006EFF?style=flat-square" /></a>11
+ <a href="#日本語"><img alt="Lang Japanese" src="https://img.shields.io/badge/lang-日本語-006EFF?style=flat-square" /></a>12
+</p>13
+14
+<p align="center">15
+ <img alt="WHOIS Ready" src="https://img.shields.io/badge/WHOIS-ready-0FDC78?style=flat-square" />16
+ <img alt="Bulk TLD" src="https://img.shields.io/badge/Bulk_TLD-checks-006EFF?style=flat-square" />17
+ <img alt="API yisi.yun" src="https://img.shields.io/badge/API-yisi.yun-5B6066?style=flat-square" />18
+ <img alt="React" src="https://img.shields.io/badge/React-18-006EFF?style=flat-square&logo=react&logoColor=white" />19
+ <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-5.8-006EFF?style=flat-square&logo=typescript&logoColor=white" />20
+ <img alt="Vite" src="https://img.shields.io/badge/Vite-6-006EFF?style=flat-square&logo=vite&logoColor=white" />21
+ <img alt="License" src="https://img.shields.io/badge/license-source_available-5B6066?style=flat-square" />22
+</p>23
+24
+<p align="center">25
+ <strong>友情链接:</strong>26
+ <a href="https://linux.do/">27
+ <img src="https://raw.githubusercontent.com/homarr-labs/dashboard-icons/main/svg/linuxdo.svg" alt="linux.do" width="18" height="18" />28
+ linux.do29
+ </a>30
+</p>31
+32
+# To Reach All Easily33
+34
+[简体中文](#简体中文) | [English](#english) | [한국어](#한국어) | [日本語](#日本語)35
+36
+## 简体中文37
+38
+To Reach All Easily 是一个源码公开的域名信息查询界面,支持 WHOIS 查询、批量后缀检测、查询会话、本地历史记录和查询结果分享。39
+40
+项目使用 React、TypeScript、Vite、Tailwind CSS、Zustand 构建,并提供一个轻量 Node 静态服务,用于托管 `dist/`、处理 SPA fallback,并将同源 `/api/*` 请求代理到默认上游 `https://yisi.yun` 或你自定义的上游服务。41
+42
+### 功能特性43
+44
+- 单域名 WHOIS 查询与结构化结果展示。45
+- 批量 TLD 检测,按通用后缀、国家地区后缀、新后缀和 IDN 后缀分组。46
+- 本地查询历史和会话式查询导航。47
+- 内置 API 文档页和可运行请求示例。48
+- 基于本地 JSON 文件存储的查询结果分享链接。49
+- PWA 注册与桌面/移动端响应式布局。50
+51
+### 当前业务能力52
+53
+当前版本面向域名信息查询和开放 API 接入场景,重点提供:54
+55
+- 域名 WHOIS 查询结果的结构化展示。56
+- 批量后缀可用性检测和分组汇总。57
+- 查询过程进度提示、结果分享和本地历史记录。58
+- 面向开发者的 API 文档、在线测试和 API Key 申请入口。59
+60
+### 环境要求61
+62
+- Node.js 20 或更新版本。63
+- pnpm 9 或更新版本。64
+- 如需真实查询结果,需要可用的 WHOIS/API 上游服务。65
+66
+### 快速开始67
+68
+```bash69
+pnpm install70
+cp .env.example .env.local71
+pnpm dev72
+```73
+74
+打开终端输出的本地 Vite 地址即可访问。75
+76
+界面可以在没有真实凭据的情况下启动,但实时查询需要配置你自己的上游访问参数。77
+78
+### API Key 申请79
+80
+如需使用默认上游 `https://yisi.yun`,请前往 `https://yisi.yun/api-docs` 申请 API Key。获取后将 Key 写入 `.env.local` 的 `UPSTREAM_API_KEY`。81
+82
+### 环境变量83
+84
+本地开发时复制 `.env.example` 为 `.env.local`。85
+86
+| 变量 | 是否必需 | 说明 |87
+| --- | --- | --- |88
+| `UPSTREAM_API_ORIGIN` | 可选 | Vite 代理和 `server.mjs` 使用的服务端上游 API 地址,默认 `https://yisi.yun`。 |89
+| `UPSTREAM_API_KEY` | 取决于上游 | 如果上游需要认证,会作为 `x-api-key` 请求头转发。 |90
+| `VITE_PUBLIC_API_BASE` | 可选 | API 文档页展示的公开 Base URL,默认 `https://yisi.yun`。 |91
+| `VITE_API_BASE` | 可选 | 浏览器侧 API Base 覆盖项。留空时使用同源 `/api/*`。 |92
+| `HOST` | 可选 | `server.mjs` 监听 Host,默认 `127.0.0.1`。 |93
+| `PORT` | 可选 | `server.mjs` 监听端口,默认 `3002`。 |94
+| `ONEFOUR_SHARE_TTL_SECONDS` | 可选 | 分享结果有效期,单位秒,默认 7200。 |95
+| `ONEFOUR_SHARE_STORAGE_DIR` | 可选 | 分享 JSON 文件存储目录,默认 `.onefour-share-data`。 |96
+97
+不要提交 `.env`、`.env.local`、生产凭据或复制来的服务商密钥。98
+99
+### 常用命令100
+101
+```bash102
+pnpm dev # 启动 Vite 开发服务器103
+pnpm check # TypeScript 类型检查104
+pnpm lint # ESLint 检查105
+pnpm build # 构建生产资源106
+pnpm preview # 预览 Vite 构建产物107
+pnpm start:prod # 使用 server.mjs 托管 dist108
+```109
+110
+### 生产构建111
+112
+```bash113
+pnpm install --frozen-lockfile114
+pnpm build115
+HOST=127.0.0.1 PORT=3002 node server.mjs116
+```117
+118
+`server.mjs` 会托管 `dist/`、处理 SPA fallback 路由,并把同源 `/api/*` 请求代理到 `UPSTREAM_API_ORIGIN`。119
+120
+### 上游 API 契约121
+122
+当前界面默认期望上游提供以下路由:123
+124
+- `GET /api/lookup?query=example.com`125
+- `GET /api/lookup/stream?query=example.com`126
+- `GET /api/supported-tlds?status=enabled&limit=10000`127
+- `POST /api/bulk-dns-check`128
+- `GET /api/bulk-dns-check/stream?query=example`129
+130
+如果你的上游响应结构不同,请调整 `src/utils/api.ts`、`serverGateway.js` 和 `src/utils/` 下的展示映射逻辑。131
+132
+### 项目结构133
+134
+```text135
+src/136
+├── components/ # 布局、查询结果、会话和通用 UI 组件137
+├── hooks/ # PWA、主题、历史记录和 WHOIS hooks138
+├── lib/ # 通用工具139
+├── pages/ # 路由页面140
+├── store/ # Zustand 状态141
+├── types/ # TypeScript 类型142
+└── utils/ # API、存储、格式化和查询辅助逻辑143
+```144
+145
+### 安全与贡献146
+147
+请不要通过公开 GitHub Issues 报告安全问题,详见 `SECURITY.md`。贡献流程见 `CONTRIBUTING.md`。148
+149
+### 许可证150
+151
+本项目使用自定义 Source-Available License,详见 `LICENSE`。152
+153
+- 允许个人、学习、研究、评估和其他非商业用途。154
+- 商业使用必须事先获得作者书面批准。155
+- 禁止出售包含本代码、修改版代码或本代码实质部分的软件。156
+157
+## English158
+159
+To Reach All Easily is a source-available domain intelligence interface for WHOIS lookup, bulk TLD checks, query sessions, local history, and shareable lookup results.160
+161
+The app is built with React, TypeScript, Vite, Tailwind CSS, Zustand, and a small Node static server that serves `dist/`, handles SPA fallback, and proxies same-origin `/api/*` requests to the default upstream `https://yisi.yun` or another configurable upstream service.162
+163
+### Features164
+165
+- Single-domain WHOIS lookup with structured result cards.166
+- Bulk TLD availability checks grouped by generic, country-code, new, and IDN suffixes.167
+- Local query history and session-style query navigation.168
+- API documentation page with runnable request examples.169
+- Share links backed by a local JSON file store.170
+- PWA registration and responsive desktop/mobile layout.171
+172
+### Current Capabilities173
+174
+This version focuses on domain intelligence lookup and API access workflows:175
+176
+- Structured display for domain WHOIS results.177
+- Bulk suffix availability checks with grouped summaries.178
+- Query progress feedback, result sharing, and local history.179
+- Developer-facing API documentation, online testing, and an API Key application entry.180
+181
+### Requirements182
+183
+- Node.js 20 or newer.184
+- pnpm 9 or newer.185
+- A compatible WHOIS/API upstream if you want live lookup results.186
+187
+### Quick Start188
+189
+```bash190
+pnpm install191
+cp .env.example .env.local192
+pnpm dev193
+```194
+195
+Open the local Vite URL printed in the terminal.196
+197
+The UI can start without real credentials, but live lookup requests require your own upstream configuration.198
+199
+### API Key Application200
+201
+To use the default upstream `https://yisi.yun`, apply for an API Key at `https://yisi.yun/api-docs`. After receiving the key, set it as `UPSTREAM_API_KEY` in `.env.local`.202
+203
+### Environment Variables204
+205
+Copy `.env.example` to `.env.local` for local development.206
+207
+| Variable | Required | Description |208
+| --- | --- | --- |209
+| `UPSTREAM_API_ORIGIN` | Optional | Server-side upstream API origin used by Vite proxy and `server.mjs`; defaults to `https://yisi.yun`. |210
+| `UPSTREAM_API_KEY` | Depends on upstream | Server-side API key forwarded as `x-api-key` when configured. |211
+| `VITE_PUBLIC_API_BASE` | Optional | Public base URL displayed in the API docs page; defaults to `https://yisi.yun`. |212
+| `VITE_API_BASE` | Optional | Browser-side API base override. Leave empty to use same-origin `/api/*`. |213
+| `HOST` | Optional | Host for `server.mjs`; defaults to `127.0.0.1`. |214
+| `PORT` | Optional | Port for `server.mjs`; defaults to `3002`. |215
+| `ONEFOUR_SHARE_TTL_SECONDS` | Optional | Share result lifetime in seconds; defaults to 7200. |216
+| `ONEFOUR_SHARE_STORAGE_DIR` | Optional | Directory for share JSON files; defaults to `.onefour-share-data`. |217
+218
+Do not commit `.env`, `.env.local`, production credentials, or copied provider secrets.219
+220
+### Scripts221
+222
+```bash223
+pnpm dev # Start the Vite development server224
+pnpm check # Run TypeScript type checking225
+pnpm lint # Run ESLint226
+pnpm build # Build production assets227
+pnpm preview # Preview the Vite production build228
+pnpm start:prod # Serve dist with server.mjs229
+```230
+231
+### Production Build232
+233
+```bash234
+pnpm install --frozen-lockfile235
+pnpm build236
+HOST=127.0.0.1 PORT=3002 node server.mjs237
+```238
+239
+`server.mjs` serves `dist/`, handles SPA fallback routes, and proxies same-origin `/api/*` requests to `UPSTREAM_API_ORIGIN`.240
+241
+### Upstream API Contract242
+243
+The current UI expects these upstream routes:244
+245
+- `GET /api/lookup?query=example.com`246
+- `GET /api/lookup/stream?query=example.com`247
+- `GET /api/supported-tlds?status=enabled&limit=10000`248
+- `POST /api/bulk-dns-check`249
+- `GET /api/bulk-dns-check/stream?query=example`250
+251
+If your upstream uses a different response shape, adapt `src/utils/api.ts`, `serverGateway.js`, and the display mappers under `src/utils/`.252
+253
+### Project Structure254
+255
+```text256
+src/257
+├── components/ # Layout, query result, session, and common UI components258
+├── hooks/ # PWA, theme, history, and WHOIS hooks259
+├── lib/ # Shared utilities260
+├── pages/ # Route pages261
+├── store/ # Zustand stores262
+├── types/ # TypeScript models263
+└── utils/ # API, storage, formatting, and query helpers264
+```265
+266
+### Security And Contributing267
+268
+Please do not report security issues through public GitHub Issues. See `SECURITY.md`. See `CONTRIBUTING.md` for the contribution workflow.269
+270
+### License271
+272
+This project uses a custom Source-Available License. See `LICENSE`.273
+274
+- Personal, educational, research, evaluation, and other non-commercial use is allowed.275
+- Commercial use requires prior written approval from the author.276
+- Selling software that contains this code, modified code, or a substantial portion of this code is prohibited.277
+278
+## 한국어279
+280
+To Reach All Easily는 WHOIS 조회, 대량 TLD 확인, 조회 세션, 로컬 기록, 공유 가능한 조회 결과를 제공하는 소스 공개형 도메인 정보 조회 인터페이스입니다.281
+282
+이 앱은 React, TypeScript, Vite, Tailwind CSS, Zustand로 만들어졌으며, `dist/`를 제공하고 SPA fallback을 처리하며 동일 출처 `/api/*` 요청을 기본 업스트림 `https://yisi.yun` 또는 사용자가 설정한 업스트림 서비스로 프록시하는 가벼운 Node 정적 서버를 포함합니다.283
+284
+### 주요 기능285
+286
+- 단일 도메인 WHOIS 조회와 구조화된 결과 카드.287
+- 일반, 국가 코드, 신규, IDN 접미사 그룹별 대량 TLD 가용성 확인.288
+- 로컬 조회 기록과 세션형 조회 탐색.289
+- 실행 가능한 요청 예제가 포함된 API 문서 페이지.290
+- 로컬 JSON 파일 저장소를 사용하는 조회 결과 공유 링크.291
+- PWA 등록과 데스크톱/모바일 반응형 레이아웃.292
+293
+### 현재 비즈니스 기능294
+295
+현재 버전은 도메인 정보 조회와 API 연동 흐름에 초점을 맞춥니다.296
+297
+- 도메인 WHOIS 결과의 구조화된 표시.298
+- 그룹별 요약을 포함한 대량 접미사 가용성 확인.299
+- 조회 진행 상태, 결과 공유, 로컬 기록.300
+- 개발자를 위한 API 문서, 온라인 테스트, API Key 신청 경로.301
+302
+### 요구 사항303
+304
+- Node.js 20 이상.305
+- pnpm 9 이상.306
+- 실제 조회 결과가 필요하다면 호환되는 WHOIS/API 업스트림 서비스.307
+308
+### 빠른 시작309
+310
+```bash311
+pnpm install312
+cp .env.example .env.local313
+pnpm dev314
+```315
+316
+터미널에 출력되는 로컬 Vite URL을 열면 됩니다.317
+318
+UI는 실제 자격 증명 없이도 시작할 수 있지만, 실시간 조회에는 사용자 본인의 업스트림 설정이 필요합니다.319
+320
+### API Key 신청321
+322
+기본 업스트림 `https://yisi.yun`을 사용하려면 `https://yisi.yun/api-docs`에서 API Key를 신청하세요. 발급받은 Key는 `.env.local`의 `UPSTREAM_API_KEY`에 설정하세요.323
+324
+### 환경 변수325
+326
+로컬 개발에서는 `.env.example`을 `.env.local`로 복사하세요.327
+328
+| 변수 | 필수 여부 | 설명 |329
+| --- | --- | --- |330
+| `UPSTREAM_API_ORIGIN` | 선택 | Vite 프록시와 `server.mjs`가 사용하는 서버 측 업스트림 API 주소입니다. 기본값은 `https://yisi.yun`입니다. |331
+| `UPSTREAM_API_KEY` | 업스트림에 따라 다름 | 설정된 경우 `x-api-key` 요청 헤더로 업스트림에 전달됩니다. |332
+| `VITE_PUBLIC_API_BASE` | 선택 | API 문서 페이지에 표시되는 공개 Base URL입니다. 기본값은 `https://yisi.yun`입니다. |333
+| `VITE_API_BASE` | 선택 | 브라우저 측 API Base 재정의 값입니다. 비워 두면 동일 출처 `/api/*`를 사용합니다. |334
+| `HOST` | 선택 | `server.mjs`가 바인딩할 Host입니다. 기본값은 `127.0.0.1`입니다. |335
+| `PORT` | 선택 | `server.mjs` 포트입니다. 기본값은 `3002`입니다. |336
+| `ONEFOUR_SHARE_TTL_SECONDS` | 선택 | 공유 결과 유지 시간(초)입니다. 기본값은 7200입니다. |337
+| `ONEFOUR_SHARE_STORAGE_DIR` | 선택 | 공유 JSON 파일 저장 디렉터리입니다. 기본값은 `.onefour-share-data`입니다. |338
+339
+`.env`, `.env.local`, 운영 자격 증명 또는 복사한 제공업체 비밀값을 커밋하지 마세요.340
+341
+### 스크립트342
+343
+```bash344
+pnpm dev # Vite 개발 서버 시작345
+pnpm check # TypeScript 타입 검사346
+pnpm lint # ESLint 실행347
+pnpm build # 운영 빌드 생성348
+pnpm preview # Vite 빌드 결과 미리보기349
+pnpm start:prod # server.mjs로 dist 제공350
+```351
+352
+### 운영 빌드353
+354
+```bash355
+pnpm install --frozen-lockfile356
+pnpm build357
+HOST=127.0.0.1 PORT=3002 node server.mjs358
+```359
+360
+`server.mjs`는 `dist/`를 제공하고, SPA fallback 라우트를 처리하며, 동일 출처 `/api/*` 요청을 `UPSTREAM_API_ORIGIN`으로 프록시합니다.361
+362
+### 업스트림 API 계약363
+364
+현재 UI는 업스트림에 다음 라우트가 있다고 가정합니다.365
+366
+- `GET /api/lookup?query=example.com`367
+- `GET /api/lookup/stream?query=example.com`368
+- `GET /api/supported-tlds?status=enabled&limit=10000`369
+- `POST /api/bulk-dns-check`370
+- `GET /api/bulk-dns-check/stream?query=example`371
+372
+업스트림 응답 구조가 다르다면 `src/utils/api.ts`, `serverGateway.js`, `src/utils/` 아래의 표시 매핑 로직을 조정하세요.373
+374
+### 프로젝트 구조375
+376
+```text377
+src/378
+├── components/ # 레이아웃, 조회 결과, 세션, 공통 UI 컴포넌트379
+├── hooks/ # PWA, 테마, 기록, WHOIS hooks380
+├── lib/ # 공통 유틸리티381
+├── pages/ # 라우트 페이지382
+├── store/ # Zustand 스토어383
+├── types/ # TypeScript 모델384
+└── utils/ # API, 저장소, 포맷팅, 조회 도우미385
+```386
+387
+### 보안 및 기여388
+389
+보안 문제는 공개 GitHub Issues로 보고하지 마세요. `SECURITY.md`를 참고하세요. 기여 절차는 `CONTRIBUTING.md`를 참고하세요.390
+391
+### 라이선스392
+393
+이 프로젝트는 사용자 지정 Source-Available License를 사용합니다. `LICENSE`를 참고하세요.394
+395
+- 개인, 교육, 연구, 평가 및 기타 비상업적 사용은 허용됩니다.396
+- 상업적 사용은 저자의 사전 서면 승인이 필요합니다.397
+- 이 코드, 수정된 코드 또는 이 코드의 실질적인 부분을 포함하는 소프트웨어를 판매하는 것은 금지됩니다.398
+399
+## 日本語400
+401
+To Reach All Easily は、WHOIS 検索、一括 TLD チェック、検索セッション、ローカル履歴、共有可能な検索結果を提供するソース公開型のドメイン情報検索インターフェースです。402
+403
+このアプリは React、TypeScript、Vite、Tailwind CSS、Zustand で構築されています。また、`dist/` の配信、SPA fallback の処理、同一オリジンの `/api/*` リクエストを既定の上流 `https://yisi.yun` または任意の上流サービスへプロキシする軽量な Node 静的サーバーを含みます。404
+405
+### 主な機能406
+407
+- 単一ドメインの WHOIS 検索と構造化された結果カード。408
+- 汎用、国コード、新 gTLD、IDN サフィックスごとの一括 TLD 可用性チェック。409
+- ローカル検索履歴とセッション型の検索ナビゲーション。410
+- 実行可能なリクエスト例を含む API ドキュメントページ。411
+- ローカル JSON ファイルストアによる検索結果共有リンク。412
+- PWA 登録とデスクトップ/モバイル対応のレスポンシブレイアウト。413
+414
+### 現在の事業機能415
+416
+現在のバージョンは、ドメイン情報検索と API 連携ワークフローに重点を置いています。417
+418
+- ドメイン WHOIS 結果の構造化表示。419
+- グループ別サマリー付きの一括サフィックス可用性チェック。420
+- 検索進行状況、結果共有、ローカル履歴。421
+- 開発者向け API ドキュメント、オンラインテスト、API Key 申請導線。422
+423
+### 要件424
+425
+- Node.js 20 以上。426
+- pnpm 9 以上。427
+- 実際の検索結果が必要な場合は、互換性のある WHOIS/API 上流サービス。428
+429
+### クイックスタート430
+431
+```bash432
+pnpm install433
+cp .env.example .env.local434
+pnpm dev435
+```436
+437
+ターミナルに表示されるローカル Vite URL を開いてください。438
+439
+UI は実際の認証情報がなくても起動できますが、ライブ検索には独自の上流設定が必要です。440
+441
+### API Key 申請442
+443
+既定の上流 `https://yisi.yun` を使用する場合は、`https://yisi.yun/api-docs` で API Key を申請してください。取得した Key は `.env.local` の `UPSTREAM_API_KEY` に設定してください。444
+445
+### 環境変数446
+447
+ローカル開発では `.env.example` を `.env.local` にコピーしてください。448
+449
+| 変数 | 必須 | 説明 |450
+| --- | --- | --- |451
+| `UPSTREAM_API_ORIGIN` | 任意 | Vite proxy と `server.mjs` が使用するサーバー側の上流 API オリジンです。既定値は `https://yisi.yun` です。 |452
+| `UPSTREAM_API_KEY` | 上流次第 | 設定されている場合、`x-api-key` リクエストヘッダーとして上流へ転送されます。 |453
+| `VITE_PUBLIC_API_BASE` | 任意 | API ドキュメントページに表示される公開 Base URL です。既定値は `https://yisi.yun` です。 |454
+| `VITE_API_BASE` | 任意 | ブラウザー側 API Base の上書き値です。空の場合は同一オリジンの `/api/*` を使用します。 |455
+| `HOST` | 任意 | `server.mjs` の Host です。既定値は `127.0.0.1` です。 |456
+| `PORT` | 任意 | `server.mjs` のポートです。既定値は `3002` です。 |457
+| `ONEFOUR_SHARE_TTL_SECONDS` | 任意 | 共有結果の有効期限(秒)です。既定値は 7200 です。 |458
+| `ONEFOUR_SHARE_STORAGE_DIR` | 任意 | 共有 JSON ファイルの保存ディレクトリです。既定値は `.onefour-share-data` です。 |459
+460
+`.env`、`.env.local`、本番認証情報、コピーしたプロバイダーのシークレットはコミットしないでください。461
+462
+### スクリプト463
+464
+```bash465
+pnpm dev # Vite 開発サーバーを起動466
+pnpm check # TypeScript 型チェックを実行467
+pnpm lint # ESLint を実行468
+pnpm build # 本番ビルドを作成469
+pnpm preview # Vite ビルド結果をプレビュー470
+pnpm start:prod # server.mjs で dist を配信471
+```472
+473
+### 本番ビルド474
+475
+```bash476
+pnpm install --frozen-lockfile477
+pnpm build478
+HOST=127.0.0.1 PORT=3002 node server.mjs479
+```480
+481
+`server.mjs` は `dist/` を配信し、SPA fallback ルートを処理し、同一オリジンの `/api/*` リクエストを `UPSTREAM_API_ORIGIN` へプロキシします。482
+483
+### 上流 API 契約484
+485
+現在の UI は、上流に次のルートがあることを想定しています。486
+487
+- `GET /api/lookup?query=example.com`488
+- `GET /api/lookup/stream?query=example.com`489
+- `GET /api/supported-tlds?status=enabled&limit=10000`490
+- `POST /api/bulk-dns-check`491
+- `GET /api/bulk-dns-check/stream?query=example`492
+493
+上流のレスポンス形式が異なる場合は、`src/utils/api.ts`、`serverGateway.js`、`src/utils/` 配下の表示マッピングを調整してください。494
+495
+### プロジェクト構成496
+497
+```text498
+src/499
+├── components/ # レイアウト、検索結果、セッション、共通 UI コンポーネント500
+├── hooks/ # PWA、テーマ、履歴、WHOIS hooks501
+├── lib/ # 共通ユーティリティ502
+├── pages/ # ルートページ503
+├── store/ # Zustand ストア504
+├── types/ # TypeScript モデル505
+└── utils/ # API、ストレージ、整形、検索補助ロジック506
+```507
+508
+### セキュリティとコントリビューション509
+510
+セキュリティ問題を公開 GitHub Issues で報告しないでください。`SECURITY.md` を参照してください。貢献手順は `CONTRIBUTING.md` を参照してください。511
+512
+### ライセンス513
+514
+このプロジェクトはカスタム Source-Available License を使用しています。`LICENSE` を参照してください。515
+516
+- 個人、教育、研究、評価、その他の非商用利用は許可されます。517
+- 商用利用には作者の事前の書面による承認が必要です。518
+- このコード、変更版コード、またはこのコードの実質的な部分を含むソフトウェアを販売することは禁止されています。