From c173c4d53bcadcd243f32e3ff57c58effdedc50c Mon Sep 17 00:00:00 2001 From: hyoseok Date: Sun, 8 Mar 2026 18:56:38 +0900 Subject: [PATCH 1/2] chore: ignore JetBrains project metadata --- .gitignore | 1 + .idea/.gitignore | 8 -------- .idea/discord.xml | 14 -------------- .idea/git-ranker-client.iml | 12 ------------ .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 6 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/discord.xml delete mode 100644 .idea/git-ranker-client.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 7b8da95..e601a6b 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ # misc .DS_Store *.pem +.idea/ # debug npm-debug.log* diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/discord.xml b/.idea/discord.xml deleted file mode 100644 index 104c42f..0000000 --- a/.idea/discord.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/git-ranker-client.iml b/.idea/git-ranker-client.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/git-ranker-client.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 32d45d2..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 378ace0283755649a92a8a0fb7e7f9d3b54afdb8 Mon Sep 17 00:00:00 2001 From: hyoseok Date: Sun, 8 Mar 2026 19:17:07 +0900 Subject: [PATCH 2/2] chore: add GitHub issue and PR templates --- .github/ISSUE_TEMPLATE/bug_report.yml | 98 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 6 ++ .github/ISSUE_TEMPLATE/engineering_task.yml | 71 +++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.yml | 88 ++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 48 ++++++++++ 5 files changed, 311 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/engineering_task.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..47fc431 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,98 @@ +name: "🐞 Frontend Bug Report" +description: ν™”λ©΄, μ‚¬μš©μž ν”Œλ‘œμš°, λΈŒλΌμš°μ € λ™μž‘, API 연동 문제λ₯Ό μ œλ³΄ν•©λ‹ˆλ‹€. +title: "[Bug] " +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: | + ν”„λ‘ νŠΈμ—”λ“œ λ²„κ·ΈλŠ” "μ–΄λŠ ν™”λ©΄μ—μ„œ μ–΄λ–€ 행동을 ν–ˆμ„ λ•Œ 무엇이 λ³΄μ˜€λŠ”μ§€"κ°€ ν•΅μ‹¬μž…λ‹ˆλ‹€. + κ°€λŠ₯ν•˜λ©΄ μŠ€ν¬λ¦°μƒ·, μ˜μƒ, μ½˜μ†” μ—λŸ¬, μ‹€νŒ¨ν•œ λ„€νŠΈμ›Œν¬ μš”μ²­μ„ ν•¨κ»˜ 남겨 μ£Όμ„Έμš”. + + - type: textarea + id: problem + attributes: + label: 문제 μš”μ•½ + placeholder: μ‚¬μš©μž ν”„λ‘œν•„ νŽ˜μ΄μ§€μ—μ„œ λ°°μ§€ μΉ΄λ“œκ°€ κ°„ν—μ μœΌλ‘œ λΉ„μ–΄ λ³΄μž…λ‹ˆλ‹€. + validations: + required: true + + - type: input + id: route + attributes: + label: λ°œμƒ μœ„μΉ˜ + description: 라우트, ν™”λ©΄, μ»΄ν¬λ„ŒνŠΈ 이름을 적어 μ£Όμ„Έμš”. + placeholder: "/users/[username], UserBadgeSection" + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: μž¬ν˜„ 절차 + placeholder: | + 1. `/users/alexization` λ°©λ¬Έ + 2. μƒˆλ‘œκ³ μΉ¨ + 3. λ°°μ§€ μ˜μ—­μ΄ skeleton 이후 λΉ„μ–΄ 있음 + validations: + required: true + + - type: textarea + id: expected_behavior + attributes: + label: κΈ°λŒ€ λ™μž‘ + placeholder: λ°°μ§€ μΉ΄λ“œκ°€ μ‚¬μš©μž 데이터와 ν•¨κ»˜ ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. + validations: + required: true + + - type: textarea + id: actual_behavior + attributes: + label: μ‹€μ œ λ™μž‘ + placeholder: μΉ΄λ“œ μ»¨ν…Œμ΄λ„ˆλŠ” λ Œλ”λ§λ˜μ§€λ§Œ λ‚΄λΆ€ 데이터가 λΉ„μ–΄ μžˆμŠ΅λ‹ˆλ‹€. + validations: + required: true + + - type: textarea + id: evidence + attributes: + label: μŠ€ν¬λ¦°μƒ· / μ˜μƒ / μ½˜μ†” / λ„€νŠΈμ›Œν¬ 증거 + placeholder: | + - screenshot: + - console error: + - failed request: + - response payload: + validations: + required: false + + - type: textarea + id: environment + attributes: + label: λΈŒλΌμš°μ € 및 ν™˜κ²½ + placeholder: | + - Browser: + - Device/Viewport: + - Environment: + - Branch or commit: + validations: + required: false + + - type: textarea + id: acceptance + attributes: + label: μˆ˜μ • ν›„ 확인해야 ν•  쑰건 + placeholder: | + - [ ] 동일 κ²½λ‘œμ—μ„œ 정상 λ Œλ”λ§λœλ‹€. + - [ ] μ½˜μ†” μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. + - [ ] μ‹€νŒ¨ν•œ λ„€νŠΈμ›Œν¬ μš”μ²­μ΄ μ—†λ‹€. + validations: + required: true + + - type: input + id: related_backend_issue + attributes: + label: μ—°κ΄€λœ λ°±μ—”λ“œ 이슈 λ˜λŠ” PR (선택) + placeholder: "alexization/git-ranker#123" + validations: + required: false + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..8398027 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,6 @@ +blank_issues_enabled: false +contact_links: + - name: πŸ”’ λ³΄μ•ˆ 취약점 제보 + url: mailto:alexizationy@gmail.com + about: 인증, 토큰, μΏ ν‚€, ν”„λ‘ νŠΈμ—”λ“œ λ³΄μ•ˆ μ΄μŠˆλŠ” 곡개 이슈 λŒ€μ‹  μ΄λ©”μΌλ‘œ μ œλ³΄ν•΄ μ£Όμ„Έμš”. + diff --git a/.github/ISSUE_TEMPLATE/engineering_task.yml b/.github/ISSUE_TEMPLATE/engineering_task.yml new file mode 100644 index 0000000..b30db0c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/engineering_task.yml @@ -0,0 +1,71 @@ +name: "πŸ› οΈ Frontend Engineering Task" +description: λ¦¬νŒ©ν„°λ§, μ„±λŠ₯, μ ‘κ·Όμ„±, ν…ŒμŠ€νŠΈ ν•˜λ‹ˆμŠ€, DX κ°œμ„  μž‘μ—…μ„ κΈ°λ‘ν•©λ‹ˆλ‹€. +title: "[Task] " +labels: ["task", "triage"] +body: + - type: dropdown + id: task_type + attributes: + label: μž‘μ—… μœ ν˜• + options: + - ui-refactor + - performance + - accessibility + - testing + - developer-experience + - dependency-upgrade + - documentation + validations: + required: true + + - type: textarea + id: reason + attributes: + label: μ™œ ν•„μš”ν•œκ°€μš”? + validations: + required: true + + - type: textarea + id: scope + attributes: + label: μž‘μ—… λ²”μœ„ + placeholder: | + - route: + - component: + - hook/store: + - test/harness: + validations: + required: true + + - type: textarea + id: done + attributes: + label: μ™„λ£Œ 쑰건 + placeholder: | + - [ ] ... + - [ ] ... + validations: + required: true + + - type: textarea + id: validation + attributes: + label: 검증 방법 + placeholder: | + - `npm run lint` + - `npm run build` + - μŠ€ν¬λ¦°μƒ· / λΈŒλΌμš°μ € QA / Playwright + validations: + required: true + + - type: textarea + id: risks + attributes: + label: 리슀크 및 μ˜μ‘΄μ„± + placeholder: | + - 리슀크: + - λ°±μ—”λ“œ μ˜μ‘΄μ„±: + - 후속 μž‘μ—…: + validations: + required: false + diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..f51bb61 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,88 @@ +name: "✨ Frontend Feature Request" +description: μƒˆ UI, μ‚¬μš©μž ν”Œλ‘œμš°, μΈν„°λž™μ…˜, ν”„λ‘ νŠΈμ—”λ“œ QA κ°œμ„ μ„ μ œμ•ˆν•©λ‹ˆλ‹€. +title: "[Feature] " +labels: ["enhancement", "feature"] +body: + - type: markdown + attributes: + value: | + ν”„λ‘ νŠΈμ—”λ“œ κΈ°λŠ₯ μš”μ²­μ€ "μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€"보닀 "μ‚¬μš©μž κ²½ν—˜μ΄ μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”μ§€"κ°€ λ¨Όμ €μž…λ‹ˆλ‹€. + + - type: textarea + id: problem + attributes: + label: ν•΄κ²°ν•˜λ €λŠ” 문제 + placeholder: μ‚¬μš©μžκ°€ ν˜„μž¬ λž­ν‚Ή λ³€ν™” 이유λ₯Ό μ΄ν•΄ν•˜κΈ° μ–΄λ €μ›Œ μ΄νƒˆμ΄ λ°œμƒν•©λ‹ˆλ‹€. + validations: + required: true + + - type: textarea + id: outcome + attributes: + label: μ›ν•˜λŠ” μ‚¬μš©μž κ²°κ³Ό + placeholder: μ‚¬μš©μžκ°€ λž­ν‚Ή 상세 ν™”λ©΄μ—μ„œ 점수 증감 원인을 λ°”λ‘œ 이해할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. + validations: + required: true + + - type: input + id: route + attributes: + label: λŒ€μƒ ν™”λ©΄ λ˜λŠ” 라우트 + placeholder: "/ranking, /users/[username]" + validations: + required: true + + - type: textarea + id: desired_behavior + attributes: + label: μ›ν•˜λŠ” UI / μΈν„°λž™μ…˜ + placeholder: | + - μ‚¬μš©μžκ°€ μ–΄λ–€ 행동을 ν•˜λŠ”μ§€ + - μ–΄λ–€ μƒνƒœκ°€ 보여야 ν•˜λŠ”μ§€ + - μ‹€νŒ¨/빈 μƒνƒœλŠ” μ–΄λ–»κ²Œ 보여야 ν•˜λŠ”μ§€ + validations: + required: true + + - type: textarea + id: acceptance + attributes: + label: 수용 κΈ°μ€€ + placeholder: | + - [ ] ... + - [ ] ... + validations: + required: true + + - type: textarea + id: contract_dependency + attributes: + label: λ°±μ—”λ“œ / API μ˜μ‘΄μ„± + placeholder: | + - ν•„μš”ν•œ API: + - 계약 λ³€κ²½ μ—¬λΆ€: + - μ—°κ΄€ backend 이슈/PR: + validations: + required: false + + - type: textarea + id: qa_evidence + attributes: + label: ν•„μš”ν•œ QA 증거 + placeholder: | + - μŠ€ν¬λ¦°μƒ·: + - Playwright: + - λΈŒλΌμš°μ € μ½˜μ†”/λ„€νŠΈμ›Œν¬ 확인: + - λ°˜μ‘ν˜• 확인: + validations: + required: true + + - type: textarea + id: non_goals_and_risks + attributes: + label: λΉ„λͺ©ν‘œμ™€ 리슀크 + placeholder: | + λΉ„λͺ©ν‘œ: + 리슀크: + validations: + required: false + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..88b079a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,48 @@ +## 1) μš”μ•½ +- 무엇이 λ³€κ²½λ˜μ—ˆλ‚˜μš”? +- μ™œ μ§€κΈˆ ν•„μš”ν•œκ°€μš”? + +## 2) μ—°κ΄€ 이슈 +- Closes # +- κ΄€λ ¨ backend 이슈/PR: + +## 3) μ‚¬μš©μž 관점 κ²°κ³Ό +- ν•΄κ²°ν•˜λ €λŠ” 문제: +- μ‚¬μš©μžμ—κ²Œ λ‹¬λΌμ§€λŠ” 점: +- λΉ„λͺ©ν‘œ: + +## 4) 영ν–₯ λ²”μœ„ +- λ³€κ²½λœ route / page / component: +- μƒνƒœ 관리 / 데이터 λ‘œλ”© 영ν–₯: +- API 계약 영ν–₯: +- μ ‘κ·Όμ„± / λ°˜μ‘ν˜• 영ν–₯: + +## 5) μŠ€ν¬λ¦°μƒ· λ˜λŠ” μ˜μƒ +- before: +- after: + +## 6) 검증 증거 + +| μœ ν˜• | λͺ…λ Ήμ–΄ / 증거 | κ²°κ³Ό | +| --- | --- | --- | +| Lint | `npm run lint` | | +| Build | `npm run build` | | +| Automated Test | `미ꡬ좕` λ˜λŠ” μ‹€ν–‰ν•œ ν…ŒμŠ€νŠΈ λͺ…λ Ή | | +| Playwright | μ‹€ν–‰ν•œ μ‹œλ‚˜λ¦¬μ˜€ λ˜λŠ” `미ꡬ좕(<μ‚¬μœ >)` | | +| Browser QA | μ½˜μ†” / λ„€νŠΈμ›Œν¬ / λ°˜μ‘ν˜• 확인 λ‚΄μš© | | + +## 7) API / λ°±μ—”λ“œ 연동 확인 +- ν•„μš”ν•œ API 응닡: +- Mock μ—¬λΆ€: +- κ΄€λ ¨ backend λ³€κ²½: + +## 8) 리슀크 및 λ‘€λ°± +- 리슀크: +- λ‘€λ°± κ³„νš: + +## 9) 체크리슀트 +- [ ] μ—°κ΄€ μ΄μŠˆκ°€ μ—°κ²°λ˜μ–΄ 있음 +- [ ] μŠ€ν¬λ¦°μƒ· λ˜λŠ” μ˜μƒμ΄ ν¬ν•¨λ˜μ—ˆκ±°λ‚˜ λΆˆν•„μš” μ‚¬μœ λ₯Ό 적음 +- [ ] Lint / Build κ²°κ³Όκ°€ κΈ°μž…λ˜μ–΄ 있음 +- [ ] λΈŒλΌμš°μ € QA λ˜λŠ” Playwright κ²°κ³Όκ°€ κΈ°μž…λ˜μ–΄ 있음 +- [ ] API 계약 영ν–₯이 λ°˜μ˜λ˜μ—ˆκ±°λ‚˜ μ—†μŒμ„ λͺ…μ‹œν•¨