https://github.com/code-yeongyu/byeongithon-opus-stats
π½ λ³κΈ°ν€ μ€νΈμ€ ν΅κ³ Β· λ
Έλ§λ€λ§μ€ ν΄μ»€νμ°μ€ λμ μ¬μ©λ Claude Opus 4.7 ν ν° 14.06μ΅ μ¬μ©λ λμ보λ Β· Oh My OpenAgentλ‘ λ¨ νλμ ν둬ννΈλ‘ λ§λ€μ΄μ§
https://github.com/code-yeongyu/byeongithon-opus-stats
analytics byeongithon claude cloudflare-workers dashboard nomadamas oh-my-openagent opus r2 sisyphus-labs typescript
Last synced: about 1 month ago
JSON representation
π½ λ³κΈ°ν€ μ€νΈμ€ ν΅κ³ Β· λ Έλ§λ€λ§μ€ ν΄μ»€νμ°μ€ λμ μ¬μ©λ Claude Opus 4.7 ν ν° 14.06μ΅ μ¬μ©λ λμ보λ Β· Oh My OpenAgentλ‘ λ¨ νλμ ν둬ννΈλ‘ λ§λ€μ΄μ§
- Host: GitHub
- URL: https://github.com/code-yeongyu/byeongithon-opus-stats
- Owner: code-yeongyu
- License: mit
- Created: 2026-05-19T08:17:19.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-19T09:23:04.000Z (about 1 month ago)
- Last Synced: 2026-05-19T11:03:17.169Z (about 1 month ago)
- Topics: analytics, byeongithon, claude, cloudflare-workers, dashboard, nomadamas, oh-my-openagent, opus, r2, sisyphus-labs, typescript
- Language: TypeScript
- Homepage: https://toilet-nomad.mengmota.com
- Size: 8.34 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Notice: NOTICE
Awesome Lists containing this project
README
# π½ λ³κΈ°ν€ μ€νΈμ€ ν΅κ³
[](https://github.com/code-yeongyu/byeongithon-opus-stats/actions/workflows/ci.yml)
[](LICENSE)
> λ
Έλ§λ€λ§μ€ ν΄μ»€νμ°μ€ **γλ³κΈ°ν€γ** κΈ°κ° λμ μ¬μ©λ Claude Opus 4.7 ν ν° μ¬μ©λμ μκ°νν μ μ λμ보λ.
>
> π **λΌμ΄λΈ μ¬μ΄νΈ** Β·
---
## π νλμ 보기
κΈ°μ€ μκ° **2026-05-19 16:00 KST** κΉμ§μ `sk-markers-*` ν€ ν΅κ³:
| μ§ν | κ° |
|---|---|
| μ΄ μμ² | **14,067** (μ±κ³΅ 14,042 Β· μ€ν¨ 25 Β· μ±κ³΅λ₯ 99.82%) |
| μ΄ ν ν° | **4,385,134,301** (β 4.39B) |
| λΉμ© | **$4,176.45 USD** |
| μΆμ λ ν€ | 6κ° (`sk-markers-{nebula, nova, aurora, vertex, zenith, apex}-key`) |
| μ£Όλ ₯ λͺ¨λΈ | `claude-opus-4-7` (99.23%μ λΉμ© μ°¨μ§) |
μμΈν λΆμμ [λΌμ΄λΈ μ¬μ΄νΈ](https://toilet-nomad.mengmota.com)μμ νμΈνμΈμ.
---
## ποΈ μν€ν
μ²
```
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Cloudflare Worker (toilet-nomad.mengmota.com)β
β β’ μ μ μμ° (HTML / CSS / JS) β
β β’ Cache-Control: 1λ
, immutable β
β β’ API: /api/healthz β
ββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββ
β R2 Bucket (byeongithon-opus-stats) β
β β’ total.csv Β· key_breakdown.csv β
β β’ model_breakdown.csv Β· hourly.csv β
ββββββββββββββββββββββββββββββββββββββββββββββββ
```
- **νλ‘ νΈμλ**: Vanilla TypeScript + μ§μ λ§λ SVG μ°¨νΈ (λΌμ΄λΈλ¬λ¦¬ 0)
- **λ°±μλ**: Cloudflare Worker (Hono μμ, 50 LOC λ―Έλ§)
- **λ°μ΄ν°**: μ μ CSV 4μ’
(μ΄ν© / ν€λ³ / λͺ¨λΈλ³ / μκ°λ³)
- **λ²λ€ ν¬κΈ°**: 73 KB (Zod ν¬ν¨)
- **μ 체 ν¬κΈ°**: ~700 KB (λλΆλΆ νμ΄λ‘ μ΄λ―Έμ§)
---
## π λΉλ & μ€ν
```bash
# μμ‘΄μ± μ€μΉ
pnpm install
# κ²μ¦
pnpm typecheck # tsc --noEmit
pnpm lint # biome check
pnpm lint:loc # 250 LOC λ£° κ°μ
pnpm test # 36 λ¨μ ν
μ€νΈ
pnpm check # μ λͺ¨λ
# λΉλ
pnpm build # dist/
# λ‘컬 κ°λ° (Wrangler)
pnpm dev # http://localhost:8787
# R2 μ
λ‘λ
pnpm upload:r2
# λ°°ν¬
pnpm deploy
```
---
## π λλ ν°λ¦¬ ꡬ쑰
```
.
βββ .github/ # CI Β· λΈλμΉ λ£°μ
Β· μ΄μ ν
νλ¦Ώ
βββ .omo/
β βββ plans/ # μμ
κ³νμ + 체ν¬λ°μ€
β βββ rules/ # TypeScript 250 LOC λ£°
βββ data/ # μλ³Έ CSV (R2 λ―Έλ¬)
βββ public/ # μ μ HTML/CSS/μ΄λ―Έμ§
βββ scripts/ # λΉλ + R2 μ
λ‘λ
βββ src/
β βββ lib/ # λ°μ΄ν° λ μ΄μ΄ (Zod κ²μ¦, CSV νμ, μ§κ³, ν¬λ§·)
β βββ ui/ # νλ‘ νΈμλ μ»΄ν¬λνΈ (κ° 250 LOC λ―Έλ§)
β β βββ dom.ts # μμ hyperscript ν¬νΌ
β β βββ main.ts # μνΈλ¦¬
β β βββ render/ # 5κ° μΉμ
λ λλ¬
β βββ worker/ # Cloudflare Worker
βββ test/ # vitest λ¨μ ν
μ€νΈ
βββ biome.json
βββ tsconfig.json
βββ wrangler.toml
βββ package.json
```
---
## π§ͺ νμ§ λ³΄μ¦
- **TypeScript μ΄μ격 λͺ¨λ**: `strict` + `noUncheckedIndexedAccess` + `exactOptionalPropertyTypes` + `verbatimModuleSyntax`
- **Biome 1.9.4**: `noExplicitAny`, `noNonNullAssertion`, `useImportType` λͺ¨λ error
- **250 LOC λ£°**: λͺ¨λ `.ts` νμΌμ μμ LOC 250μ€ λ―Έλ§ (`.omo/rules/typescript.md` μ°Έμ‘°)
- **TDD**: 36κ° λ¨μ ν
μ€νΈ, μ€μ CSV fixture κΈ°λ°
- **Lighthouse 100/100/100/100**: μ±λ₯ Β· μ κ·Όμ± Β· λ² μ€νΈ νλν°μ€ Β· SEO λͺ¨λ λ§μ
- **λ°μν**: λͺ¨λ°μΌ (390px) Β· νλΈλ¦Ώ (768px) Β· λ°μ€ν¬ν (1440px) κ²μ¦
---
## π€ μ΄νΈλ¦¬λ·°μ
μ΄ μ¬μ΄νΈλ **λ¨ νλμ ν둬ννΈ**λ‘ λ§λ€μ΄μ‘μ΅λλ€.
- π€ **[Oh My OpenAgent](https://github.com/code-yeongyu/oh-my-openagent)** Β· λΉλ + λ°°ν¬ + QA μ κ³Όμ μλν
- π§ **μΉμ¬μ΄νΈ μ μ + ν ν° νμ**: [@code-yeongyu](https://github.com/code-yeongyu)
- πΈ **API ν ν° νμ**: **[μμ§νΈμ€λ©μ€ (Sisyphus Labs)](https://sisyphuslabs.ai)** Β· λκΈ° λͺ
λ¨ λͺ¨μ§ μ€!
- π **λ°μ΄ν° μΆμ²**: λ
Έλ§λ€λ§μ€ ν΄μ»€νμ°μ€ γλ³κΈ°ν€γ Β· μ£Όμ΅ [@vkehfdl1 (Jeffrey Kim)](https://github.com/vkehfdl1), λ°ν [@bunniesossdev](https://www.threads.com/@bunniesossdev)
- π¨ **νμ΄λ‘ μ΄λ―Έμ§**: GPT Image 2 (OpenAI, Quotio κ²½μ )
---
## π λΌμ΄μ μ€
[MIT](LICENSE) Β© 2026 [Yeongyu Kim](https://github.com/code-yeongyu)
λ°μ΄ν°λ λ
Έλ§λ€λ§μ€ ν΄μ»€νμ°μ€ γλ³κΈ°ν€γ μ°Έκ°μλ€μ νλ κ²°κ³Όμ
λλ€.