Skip to content

root39293/dailypp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5230a10 Β· Dec 31, 2024

History

46 Commits
Dec 31, 2024
Nov 26, 2024
Nov 24, 2024
Nov 22, 2024
Nov 22, 2024
Nov 22, 2024
Nov 22, 2024
Nov 22, 2024
Nov 26, 2024
Nov 22, 2024
Dec 31, 2024
Dec 31, 2024
Nov 22, 2024
Nov 24, 2024
Nov 22, 2024
Nov 22, 2024
Nov 24, 2024
Nov 22, 2024

Repository files navigation

DailyPP

일일 osu! 맡 μΆ”μ²œ μ›Ή μ„œλΉ„μŠ€ (Work in Progress)

landing

μ£Όμš” κΈ°λŠ₯

1. λ§žμΆ€ν˜• λΉ„νŠΈλ§΅ μΆ”μ²œ

  • μ‚¬μš©μž PP 기반 λ‚œμ΄λ„ μ‘°μ •
  • λ‚œμ΄λ„λ³„ μ°¨λ“± μΆ”μ²œ (Easy, Normal, Hard)
  • λΉ„νŠΈλ§΅ 필터링 (μ°¨ν›„ κ΅¬ν˜„)

2. 일일 λ„μ „κ³Όμ œ

  • λ‚œμ΄λ„λ³„ 3개 λΉ„νŠΈλ§΅ 제곡
  • S 랭크 이상 달성 μ‹œ 클리어
  • 상세 정보 ν‘œμ‹œ (λ‚œμ΄λ„, BPM, 길이, μ˜ˆμƒ PP λ“±)

3. 톡계 및 μ§„ν–‰ν˜„ν™©

  • 일일/μ£Όκ°„ λ„μ „κ³Όμ œ 달성λ₯ 
  • 연속 달성 슀트릭
  • PP μ„±μž₯ κ·Έλž˜ν”„
  • λ‚œμ΄λ„λ³„ 클리어 ν˜„ν™©

4. 데λͺ¨ λͺ¨λ“œ (/demo)

둜그인 없이 μ„œλΉ„μŠ€μ˜ κΈ°λŠ₯을 미리볼 수 μžˆλŠ” 데λͺ¨ νŽ˜μ΄μ§€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€

  • λ„μ „κ³Όμ œ μ‹œμŠ€ν…œ 미리보기
  • λŒ€μ‹œλ³΄λ“œ 및 톡계 ν™”λ©΄ μ²΄ν—˜

λΉ„νŠΈλ§΅ μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜

λ‚œμ΄λ„ 계산 μˆ˜μ‹

λ‚œμ΄λ„ λ²”μœ„λŠ” λ‹€μŒ μ„ ν˜• 곡식을 μ‚¬μš©ν•˜μ—¬ κ³„μ‚°λ©λ‹ˆλ‹€

κΈ°λ³Έ 곡식

difficulty_range = stable_top_play_stars + offset Β± margin

μƒμˆ˜κ°’

λ‚œμ΄λ„λ³„ offset

  • 쉬움(EASY): -1.0
  • 보톡(NORMAL): -0.25
  • 어렀움(HARD): +0.45

margin

λͺ¨λ“  λ‚œμ΄λ„μ— λŒ€ν•΄ Β±0.25의 margin이 μ μš©λ©λ‹ˆλ‹€

λ‚œμ΄λ„λ³„ 상세 계산식

Easy

difficulty_range = stable_top_play_stars - 1.0 Β± 0.25

Normal

difficulty_range = stable_top_play_stars - 0.25 Β± 0.25

Hard

difficulty_range = stable_top_play_stars + 0.6 Β± 0.25

μ˜ˆμ‹œ

stable_top_play_starsκ°€ 4.0인 경우(즉 μ•ˆμ •μ μœΌλ‘œ ν΄λ¦¬μ–΄ν•œ μ΅œκ³ μ„±κ³Ό 기둝이 4.0β˜…μΈ 경우):

  • Easy: 2.75β˜…~3.25β˜…
  • Normal: 3.5β˜…~4.0β˜…
  • Hard: 4.05β˜…~4.55β˜…

ν˜„μž¬ κ΅¬ν˜„ (1000pp 이상)

  1. μœ μ €μ˜ μƒμœ„ 기둝 뢄석

    • μƒμœ„ 10개 기둝 쀑 정확도 95% 이상인 μƒμœ„ 3개 기둝 선별
    • 95% 이상 정확도 κΈ°μ€€: μ΄ˆμ€‘κΈ‰μžμ˜ μ•ˆμ •μ  μ‹€λ ₯ 츑정을 μœ„ν•œ μ΅œμ†Œ κΈ°μ€€
    • λͺ¨λ“œλ³„ λ‚œμ΄λ„ 보정 적용
      • DT/NC: μ›λž˜ λ‚œμ΄λ„ Γ— 1.4 (예: 4.5β˜… β†’ 6.3β˜…)
      • HR: μ›λž˜ λ‚œμ΄λ„ Γ— 1.05 (예: 4.5β˜… β†’ 4.7β˜…)
    • κ°€μž₯ 높은 λ‚œμ΄λ„λ₯Ό κΈ°μ€€κ°’μœΌλ‘œ μ‚¬μš©
  2. λ‚œμ΄λ„λ³„ 맡 μΆ”μ²œ λ²”μœ„ μ˜ˆμ‹œ) 기쀀값이 6β˜…μΈ 경우:

    • EASY: 5.0β˜… ~ 5.5β˜… (κΈ°μ€€κ°’ -1.0 Β±0.25)
    • NORMAL: 5.75β˜… ~ 6.25β˜… (κΈ°μ€€κ°’ -0.25 Β±0.25)
    • HARD: 6.2β˜… ~ 6.7β˜… (κΈ°μ€€κ°’ +0.45 Β±0.25)
  3. 맡 필터링

    • κ³„μ‚°λœ λ‚œμ΄λ„ λ²”μœ„ λ‚΄μ˜ ranked λΉ„νŠΈλ§΅ 검색
    • 길이 30초 ~ 5λΆ„ μ œν•œ
    • λ¬΄μž‘μœ„ μ„ νƒμœΌλ‘œ λ‹€μ–‘μ„± 확보

ν˜„μž¬ κ΅¬ν˜„ (1000pp 미만)

단계별 κ³ μ • λ‚œμ΄λ„ λ²”μœ„ 적용:

  1. μž…λ¬Έ (0-300pp)

    • EASY: 2.0β˜… ~ 2.3β˜…
    • NORMAL: 2.3β˜… ~ 2.6β˜…
    • HARD: 2.6β˜… ~ 2.9β˜…
  2. μ΄ˆκΈ‰ (301-600pp)

    • EASY: 2.5β˜… ~ 2.8β˜…
    • NORMAL: 2.8β˜… ~ 3.1β˜…
    • HARD: 3.1β˜… ~ 3.4β˜…
  3. 쀑급 μ§„μž… (601-1000pp)

    • EASY: 3.0β˜… ~ 3.3β˜…
    • NORMAL: 3.3β˜… ~ 3.6β˜…
    • HARD: 3.6β˜… ~ 4.0β˜…

TODO

API ν…ŒμŠ€νŠΈκΈ°λŠ₯ 개발

  1. ν…ŒμŠ€νŠΈμš© JWT 토큰 생성 μ½”λ“œ μΆ”κ°€
  2. ν…ŒμŠ€νŠΈμš© 맡 μΆ”μ²œ μ—”λ“œν¬μΈνŠΈ μΆ”κ°€

1000pp 미만 μ•Œκ³ λ¦¬μ¦˜ κ°œμ„  κ³„νš

  1. S랭크 기반 μ‹€λ ₯ νŒλ‹¨
    • S랭크 보유 μ—¬λΆ€λ‘œ 초보자 νŒλ‹¨
    • ν˜„μž¬ 도전 쀑인 λ‚œμ΄λ„ κΈ°μ€€μœΌλ‘œ μΆ”μ²œ
    • 예) Sλž­ν¬κ°€ μ—†λŠ” μœ μ €μ˜ 졜근 A랭크 기둝이 2.5β˜…λΌλ©΄:
      • EASY: 2.3β˜… ~ 2.5β˜… (ν˜„μž¬ λ‚œμ΄λ„λ³΄λ‹€ μ•½κ°„ μ‰½κ²Œ)
      • NORMAL: 2.5β˜… ~ 2.7β˜… (ν˜„μž¬ 도전 쀑인 λ‚œμ΄λ„)
      • HARD: 2.7β˜… ~ 2.9β˜… (μ•½κ°„ 더 μ–΄λ €μš΄ λ„μ „μš©)

기술 μŠ€νƒ

Frontend

  • SvelteKit
  • TailwindCSS
  • TypeScript
  • Chart.js

Backend

  • MongoDB
  • mongoose
  • osu! OAuth
  • JWT 인증

API μ—”λ“œν¬μΈνŠΈ

인증

POST /auth/signin: osu! OAuth 둜그인
POST /auth/signout: λ‘œκ·Έμ•„μ›ƒ
GET /auth/callback: OAuth 콜백 처리

μ‚¬μš©μž

GET /api/user: μ‚¬μš©μž 정보 및 톡계 쑰회
PUT /api/user: μ‚¬μš©μž μ„€μ • μ—…λ°μ΄νŠΈ
GET /api/user/stats: λ„μ „κ³Όμ œ 톡계 쑰회 (λ‚œμ΄λ„λ³„ μ™„λ£Œμœ¨)
GET /api/user/history: λ„μ „κ³Όμ œ 상세 이λ ₯ 쑰회
GET /api/user/pp-history: PP λ³€ν™” 이λ ₯ 쑰회
GET /api/user/dashboard: λŒ€μ‹œλ³΄λ“œ μš”μ•½ 톡계 쑰회 (μ£Όκ°„/일간 μ™„λ£Œ, PP μ„±μž₯)

λ„μ „κ³Όμ œ

GET /api/challenges: 였늘의 λ„μ „κ³Όμ œ 쑰회/생성
POST /api/challenges: λ„μ „κ³Όμ œ μƒνƒœ μ—…λ°μ΄νŠΈ
POST /api/challenges/complete: λ„μ „κ³Όμ œ μ™„λ£Œ 처리 (μŠ€μ½”μ–΄ 검증)
POST /api/challenges/feedback: λΉ„νŠΈλ§΅ ν”Όλ“œλ°± 제좜
POST /api/challenges/setting-goal: λͺ©ν‘œ μ„€μ • (개발 쀑)

개발 ν™˜κ²½ μ„€μ •

  1. μ €μž₯μ†Œ 클둠 및 μ˜μ‘΄μ„± μ„€μΉ˜
git clone https://github.com/root39293/dailypp.git
cd dailypp
npm install
  1. ν™˜κ²½λ³€μˆ˜ μ„€μ • (.env)
VITE_MONGODB_URI="mongodb_uri"
OSU_CLIENT_ID="your_osu_client_id"
OSU_CLIENT_SECRET="your_osu_client_secret"
PUBLIC_BASE_URL="your_vercel_url"
  1. 개발 μ„œλ²„ μ‹€ν–‰
npm run dev

λΌμ΄μ„ μŠ€

MIT License

About

Daily osu! beatmap recommendations based on your PP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published