Skip to content

CapstoneDgu/NUNCHI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

492 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NUNCHI

CI/CD

1. Project Overview (ํ”„๋กœ์ ํŠธ ๊ฐœ์š”)

  • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„: NUNCHI (๋ˆˆ์น˜)
  • ํ”„๋กœ์ ํŠธ ์„ค๋ช…: LLM Agentic AI ๊ธฐ๋ฐ˜ ๋ฐฐ๋ฆฌ์–ดํ”„๋ฆฌ ์ž์œจ์ฃผ๋ฌธ ํ‚ค์˜ค์Šคํฌ. ์Œ์„ฑ ๋Œ€ํ™”๋งŒ์œผ๋กœ ๋ฉ”๋‰ด ํƒ์ƒ‰ โ†’ ์ถ”์ฒœ โ†’ ๋‹ด๊ธฐ โ†’ ๊ฒฐ์ œ๊นŒ์ง€ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งํ•˜์ง€ ์•Š์•„๋„ AI๊ฐ€ ๋ง์„ค์ž„์„ ๊ฐ์ง€ํ•ด ๋จผ์ € ๋„์›€์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.


2. Team Members (ํŒ€์› ๋ฐ ํŒ€ ์†Œ๊ฐœ)

์กฐํšจ๋™ ์ดํ˜„๋…ธ ์ž„ํ˜ธ์˜ ์ž„ํ˜„์šฐ
ํšจ๋™ ํ˜„๋…ธ ํ˜ธ์˜ ํ˜„์šฐ
BE / AI FE / PD Infra / VISION/ ADMIN FE/PM
GitHub GitHub GitHub GitHub


3. Key Features (์ฃผ์š” ๊ธฐ๋Šฅ)

3.1 ์‹œ์ž‘ ํ™”๋ฉด

ํ„ฐ์น˜ ์ฃผ๋ฌธ, ์‹œ์„  ์ถ”์  ์ฃผ๋ฌธ, ์ €์ž์„ธ(๋ฐฐ๋ฆฌ์–ดํ”„๋ฆฌ) ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ธ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

๋ฉ”์ธํ™”๋ฉด

3.2 ์ฃผ๋ฌธ ๋ชจ๋“œ ์„ ํƒ

์ผ๋ฐ˜ ํ„ฐ์น˜ ์ฃผ๋ฌธ๊ณผ AI ๋Œ€ํ™” ์ฃผ๋ฌธ ์ค‘ ์›ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์ธํ™”๋ฉด

3.3 ์ผ๋ฐ˜ ๋ชจ๋“œ (Touch Order)

ํ„ฐ์น˜ ๊ธฐ๋ฐ˜ ์ฃผ๋ฌธ์ด ๊ธฐ๋ณธ ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ์ƒ๋‹จ ๋งˆ์ดํฌ ๋ฒ„ํŠผ์œผ๋กœ ์Œ์„ฑ ์ฃผ๋ฌธ์„ ์‹œ์ž‘ํ•˜๋ฉด AI๊ฐ€ ์Œ์„ฑ์„ ์ธ์‹ํ•˜๊ณ  ํ™”๋ฉด์„ ์ž๋™์œผ๋กœ ์›๊ฒฉ ์กฐ์ž‘ํ•˜์—ฌ ๋ฉ”๋‰ด ํƒ์ƒ‰ยท๋‹ด๊ธฐยท๊ฒฐ์ œ๊นŒ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. AI ์ถ”์ฒœ ๋ผ๋ฒจ, ๋Œ€ํ™” ๊ธฐ๋ก, ๋งค์žฅ/ํฌ์žฅ ์ „ํ™˜ ๋ฒ„ํŠผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์ธํ™”๋ฉด

3.4 ์•„๋ฐ”ํƒ€ ๋ชจ๋“œ (AI Avatar)

์บ๋ฆญํ„ฐ ์•„๋ฐ”ํƒ€ "๋ˆˆ์น˜" ์™€ ์Œ์„ฑ ๋Œ€ํ™”๋กœ ์ฃผ๋ฌธ ์ „ ๊ณผ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ธฐ ๋ฉ”๋‰ด ์ถ”์ฒœ์€ ๋ฌผ๋ก , ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์œผ๋กœ ์ถ”์ฒœ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ๊ธฐ ๋ฉ”๋‰ด ๊ธฐ๋ฐ˜ ์ถ”์ฒœ
  • ์˜์–‘์„ฑ๋ถ„ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ (์ €์นผ๋กœ๋ฆฌ, ๊ณ ๋‹จ๋ฐฑ ๋“ฑ)
  • ์•Œ๋ ˆ๋ฅด๊ธฐ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ (ํŠน์ • ์„ฑ๋ถ„ ์ œ์™ธ)
  • ๋‚ ์”จ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ (์˜ค๋Š˜ ๋‚ ์”จ์— ์–ด์šธ๋ฆฌ๋Š” ๋ฉ”๋‰ด)

์•„๋ฐ”ํƒ€ ๋ชจ๋“œ โ€” ๋Œ€ํ™” & ์ถ”์ฒœ

๋ฉ”์ธํ™”๋ฉด

์•„๋ฐ”ํƒ€ ๋ชจ๋“œ โ€” ์ถ”์ฒœ ๋ฉ”๋‰ด ๋ชจ๋‹ฌ

์ถ”์ฒœ์„ ๋ฐ›์œผ๋ฉด ๋ฉ”๋‰ด ์นด๋“œ ๋ชจ๋‹ฌ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์Œ์— ๋“œ๋Š” ๋ฉ”๋‰ด๋ฅผ ๋ฐ”๋กœ ๋‹ด๊ฑฐ๋‚˜, ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉด ๋‹ซ๊ณ  ๋‹ค๋ฅธ ์ถ”์ฒœ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์ธํ™”๋ฉด

3.5 ํ€ต๋ฐ” (Quick Bar)

๋‹ค์Œ ๋ฐœํ™”๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ ํ•˜๋‹จ์— ์ถ”์ฒœ ์ž…๋ ฅ ๋ฒ„ํŠผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ€ต๋ฐ” ์‘๋‹ต์€ ๋ฏธ๋ฆฌ prefetch๋˜์–ด ์ฆ‰์‹œ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ™•์ธํ•ด์ค˜ ยท ์กฐ๊ฑด ๋ฐ”๊ฟ”์„œ ์ถ”์ฒœํ•ด์ค˜ ยท ๋‹ค๋ฅธ ๋ฉ”๋‰ด๋„ ์ถ”์ฒœํ•ด์ค˜

๋ฉ”์ธํ™”๋ฉด

3.6 Smithery MCP ์—ฐ๋™

Smithery.ai์— NUNCHI MCP ์„œ๋ฒ„๋ฅผ ๋“ฑ๋กํ•˜์—ฌ, ๊ฐœ์ธ Claude Desktop์— ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด ํ•œ ์ค„๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ AI๋ฅผ ํ†ตํ•ด ์™ธ๊ตญ์–ด ์ฃผ๋ฌธ, ๊ฐœ์ธ ๋งž์ถค ์ถ”์ฒœ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

image

3.7 ๐Ÿ‘€ ๋ˆˆ์น˜ ๊ธฐ๋Šฅ

์‚ฌ์šฉ์ž๊ฐ€ ๋„์›€์„ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„, AI๊ฐ€ ๋ง์„ค์ž„ ์‹ ํ˜ธ๋ฅผ ๊ฐ์ง€ํ•ด ๋จผ์ € ์ถ”์ฒœ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒด๋ฅ˜ ์‹œ๊ฐ„: ํŠน์ • ํ™”๋ฉด์— ์˜ค๋ž˜ ๋จธ๋ฌด๋ฆ„
  • ๋ฐ˜๋ณต ํƒ์ƒ‰: ๊ฐ™์€ ๋ฉ”๋‰ดยท์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ˜๋ณต ํ™•์ธ
  • ์นจ๋ฌต: ์‘๋‹ต ์—†์ด ์ผ์ • ์‹œ๊ฐ„ ์ •์ง€
  • ํ—ค์ง• ๋ฐœํ™”: "์Œ", "๋ญ๊ฐ€ ์ข‹์ง€", "์ถ”์ฒœํ•ด์ค˜" ๋“ฑ ๋ถˆํ™•์‹ค ํ‘œํ˜„
  • ์Œ์„ฑ ๋ถˆํ™•์‹ค์„ฑ: STT ์‹ ๋ขฐ๋„ ๋‚ฎ์Œ

3.8 ์‹œ์„  ์ถ”์  ์ฃผ๋ฌธ (NUNCHI Vision)

OpenCV์™€ MediaPipe ๊ธฐ๋ฐ˜ Python ๋น„์ „ ์—”์ง„์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์‹œ์„  ๋ฐฉํ–ฅ๊ณผ ๋”๋ธ” ๊นœ๋นก์ž„์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

Python ๋น„์ „ ์„œ๋ฒ„๋Š” WebSocket(ws://127.0.0.1:8765)์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์™€ ์—ฐ๊ฒฐ๋˜๋ฉฐ, ํ”„๋ก ํŠธ์—”๋“œ์˜ vision-client.js๊ฐ€ .vision-selectable ์š”์†Œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํฌ์ปค์Šค ์ด๋™๊ณผ ํด๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • LEFT / RIGHT ์‹œ์„  ์œ ์ง€: ์„ ํƒ ํฌ์ปค์Šค ์ด๋™
  • ๋”๋ธ” ๊นœ๋นก์ž„: ํ˜„์žฌ ํฌ์ปค์Šค๋œ ์š”์†Œ ํด๋ฆญ
  • ์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜ ํ™”๋ฉด: ์‚ฌ์šฉ์ž์˜ ์ค‘์•™ ์‹œ์„  ๊ธฐ์ค€ ๋ณด์ •
  • ์ ์šฉ ํ™”๋ฉด: ๋ชจ๋“œ ์„ ํƒ, ๋งค์žฅ/ํฌ์žฅ ์„ ํƒ, ๋ฉ”๋‰ด ์„ ํƒ, ์ฃผ๋ฌธ ํ™•์ธ, ๊ฒฐ์ œ ํ๋ฆ„

์ด๋ฅผ ํ†ตํ•ด ํ„ฐ์น˜ ์—†์ด๋„ ํ‚ค์˜ค์Šคํฌ ์ฃผ์š” ์ฃผ๋ฌธ ํ”Œ๋กœ์šฐ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


3.9 ๊ด€๋ฆฌ์ž ๋ชจ๋“œ

ํ‚ค์˜ค์Šคํฌ์—์„œ ๋ฐœ์ƒํ•œ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ์ž๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์šด์˜ ๊ด€๋ฆฌ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž๋Š” ์ฃผ๋ฌธ ๋‚ด์—ญ, ์ฃผ๋ฌธ ์ƒ์„ธ ์ •๋ณด, ์ฃผ๋ฌธ ์ƒํƒœ, ์ฃผ๋ฌธ ์‹œ๊ฐ, ์ฃผ๋ฌธ ๋ฉ”๋‰ด ๋“ฑ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‚ค์˜ค์Šคํฌ์—์„œ ์ƒ์„ฑ๋œ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฑ์—”๋“œ์™€ DB์— ์ •์ƒ ๋ฐ˜์˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ
  • ์ฃผ๋ฌธ ๋‚ด์—ญ ์กฐํšŒ
  • ์ฃผ๋ฌธ ์ƒ์„ธ ์ •๋ณด ํ™•์ธ
  • ์ฃผ๋ฌธ ์ƒํƒœ ํ™•์ธ
  • ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ DB ์ €์žฅ ํ™•์ธ
  • ๊ด€๋ฆฌ์ž API ๊ธฐ๋ฐ˜ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • ์ฃผ๋ฌธ ํ†ต๊ณ„ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ


4. Tasks & Responsibilities (์ž‘์—… ๋ฐ ์—ญํ•  ๋ถ„๋‹ด)

์กฐํšจ๋™ ํšจ๋™
  • Spring Boot & FastAPI ๋ฐฑ์—”๋“œ/AI ์„œ๋ฒ„ ์„ค๊ณ„ยท๊ฐœ๋ฐœ
  • ๋ฉ”๋‰ด ์กฐํšŒยท์ถ”์ฒœยท์ฃผ๋ฌธยท๊ฒฐ์ œ API ๊ตฌํ˜„
  • LangGraph ์ฃผ๋ฌธ ์—์ด์ „ํŠธ & MCP Tool/์„œ๋ฒ„(Smithery) ๊ตฌํ˜„
  • MCP ์„œ๋ฒ„ Smithery ๋ฐฐํฌ
  • CI/CD ์„ค์ • ๋ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ (GitHub Actions, Discord ์›นํ›…)
์ž„ํ˜„์šฐ ์ž„ํ˜„์šฐ
  • ๊ธฐํš ๋ฐ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • AI ์•„๋ฐ”ํƒ€ ์ œ์ž‘ ๋ฐ ํ”Œ๋กœ์šฐ ๊ตฌํ˜„
  • ์•„๋ฐ”ํƒ€ ๋ชจ๋“œ UI ๊ตฌํ˜„
  • ํ”„๋ก ํŠธ ํ†ตํ•ฉ ๋ฐ SSE ํด๋ผ์ด์–ธํŠธ ๊ตฌ์ถ•
์ž„ํ˜ธ์˜ ํ˜ธ์˜
  • AWS EC2 ๋ฐ Docker Compose ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ๋ฐฐํฌยท์šด์˜ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • Spring Boot, FastAPI, PostgreSQL, Redis, Nginx ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ
  • GitHub Actions CI/CD ๋ฐ PrometheusยทGrafana ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฒด๊ณ„ ๊ตฌ์ถ•
  • ๊ด€๋ฆฌ์ž ์ฃผ๋ฌธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, API ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐ ์‹œ์„  ์ž…๋ ฅ ๋ณด์กฐ ๊ธฐ๋Šฅ ์—ฐ๋™ ๊ฒ€ํ† 
์ดํ˜„๋…ธ ํ˜„๋…ธ
  • ์ผ๋ฐ˜ ๋ชจ๋“œ ํ‚ค์˜ค์Šคํฌ UI ๋ฐ ์Œ์„ฑ ์ฃผ๋ฌธ ํ”Œ๋กœ์šฐ ๊ฐœ๋ฐœ
  • AI ์ถ”์ฒœ ๋ชจ๋‹ฌ ๋ฐ ๋ˆˆ์น˜ ์ถ”์ฒœ ๋ชจ๋‹ฌ ํ”„๋ก ํŠธ ๊ตฌํ˜„
  • ๊ฒฐ์ œ ํ”Œ๋กœ์šฐ ์ „ ํ™”๋ฉด ๊ตฌํ˜„ ๋ฐ ๋ฐฑ์—”๋“œ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์„œ๋ฒ„ ์—ฐ๋™
  • ์‹ค ์นด๋“œ ๋‹จ๋ง๊ธฐ ํ•˜๋“œ์›จ์–ด ์—ฐ๋™, ์˜์ˆ˜์ฆ, ๋ฒˆํ˜ธํ‘œ ์ถœ๋ ฅ ์—ฐ๊ฒฐ
  • ์ €์ž์„ธ ๋ชจ๋“œ ๊ตฌํ˜„


5. Technology Stack (๊ธฐ์ˆ  ์Šคํƒ)

Java Java
JavaScript JavaScript
Python Python
Spring Boot Spring Boot
PostgreSQL PostgreSQL
Redis Redis
FastAPI FastAPI
LangGraph LangGraph
OpenAI OpenAI
Docker Docker
GitHub Actions GitHub Actions
Prometheus Prometheus
Grafana Grafana
OpenCV OpenCV
MediaPipe MediaPipe

6. Project Structure (ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ)

NUNCHI/
โ”œโ”€โ”€ src/main/
โ”‚   โ”œโ”€โ”€ java/dgu/capstone/
โ”‚   โ”‚   โ”œโ”€โ”€ domain/          # ์—”ํ‹ฐํ‹ฐ ๋ฐ ๋„๋ฉ”์ธ ๋ชจ๋ธ
โ”‚   โ”‚   โ”œโ”€โ”€ repository/      # JPA ๋ ˆํฌ์ง€ํ† ๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ service/         # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”‚   โ”œโ”€โ”€ controller/      # REST API ์ปจํŠธ๋กค๋Ÿฌ
โ”‚   โ”‚   โ”œโ”€โ”€ dto/             # ์š”์ฒญ/์‘๋‹ต DTO
โ”‚   โ”‚   โ”œโ”€โ”€ config/          # Security, Redis ์„ค์ •
โ”‚   โ”‚   โ””โ”€โ”€ exception/       # ๊ณตํ†ต ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ”‚   โ””โ”€โ”€ resources/
โ”‚       โ””โ”€โ”€ application.yml
โ”œโ”€โ”€ nunchi-vision/               # OpenCV / MediaPipe ๊ธฐ๋ฐ˜ ์‹œ์„  ์ž…๋ ฅ ์„œ๋ฒ„
โ”‚   โ”œโ”€โ”€ main.py                  # ๋น„์ „ ์—”์ง„ ์‹คํ–‰ ์ง„์ž…์ 
โ”‚   โ”œโ”€โ”€ server.py                # WebSocket ์„œ๋ฒ„
โ”‚   โ”œโ”€โ”€ detectors/               # ์–ผ๊ตด/ํ™์ฑ„ ๊ฐ์ง€
โ”‚   โ””โ”€โ”€ fusion/                  # ์‹œ์„  ์ด๋™, ๊นœ๋นก์ž„, ๋ง์„ค์ž„ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
โ”œโ”€โ”€ tests/                   # ํ”„๋ก ํŠธ์—”๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Node test runner)
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ images/              # โ† ์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€ ์ €์žฅ ์œ„์น˜
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ Dockerfile
โ””โ”€โ”€ build.gradle


7. Development Workflow (๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ)

๋ธŒ๋žœ์น˜ ์ „๋žต (Branch Strategy)

Git Flow๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋‹ค์Œ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • main Branch

    • ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ๋ฐฐํฌ๋Š” ์ด ๋ธŒ๋žœ์น˜์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • dev Branch

    • ๊ฐœ๋ฐœ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค.
    • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ dev๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • {name}/{feature} Branch

    • ํŒ€์› ๊ฐ์ž์˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค.
    • ์˜ˆ: feat/#82/kakao-payment


8. Coding Convention

๋ช…๋ช… ๊ทœ์น™ (Java / Spring)

// ํด๋ž˜์Šค: ํŒŒ์Šค์นผ ์ผ€์ด์Šค
public class OrderService {}

// ๋ฉ”์„œ๋“œ & ๋ณ€์ˆ˜: ์นด๋ฉœ ์ผ€์ด์Šค
public void createOrder() {}
private String orderStatus;

// ์ƒ์ˆ˜: ์–ดํผ ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค
public static final String JWT_SECRET = "...";

API ์„ค๊ณ„ ์›์น™

- REST API: /api/**
- ์‘๋‹ต ์ฝ”๋“œ: 200, 201, 400, 401, 404, 409, 500 ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„
- ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ Controller์— ๋‘์ง€ ์•Š๊ณ  Service๋กœ ๋ถ„๋ฆฌ
- ์™ธ๋ถ€ ์—ฐ๋™์€ Adapter/Client ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌ
- ๊ณตํ†ต ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‚ฌ์šฉ

๋ณด์•ˆ ์›์น™

- API Key, JWT Secret ๋“ฑ ๋ฏผ๊ฐ ์ •๋ณด๋Š” ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€
- ํ™˜๊ฒฝ ๋ณ€์ˆ˜(.env)๋กœ ๊ด€๋ฆฌ
- ๊ฒฐ์ œ/์ธ์ฆ ์ •๋ณด๋Š” ๋กœ๊ทธ์— ๊ธฐ๋ก ๊ธˆ์ง€


9. ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

๊ธฐ๋ณธ ๊ตฌ์กฐ

[Type] ์„ค๋ช…

Type ์ข…๋ฅ˜

[Feat]    : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
[Fix]     : ๋ฒ„๊ทธ ์ˆ˜์ •
[Refactor]: ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
[Chore]   : ๋นŒ๋“œ, ์„ค์ •, ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ
[Docs]    : ๋ฌธ์„œ ์ž‘์„ฑ / ์ˆ˜์ •

์ปค๋ฐ‹ ์˜ˆ์‹œ

== ex1
[Feat] ๋ฉ”๋‰ด ์ถ”์ฒœ API ์ถ”๊ฐ€

ํ™ˆ ํ™”๋ฉด ๋ฉ”๋‰ด ์ถ”์ฒœ ์—”๋“œํฌ์ธํŠธ ๋ฐ Specification ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง ๊ตฌํ˜„

== ex2
[Fix] ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ถ„์‚ฐ ๋ฝ ํš๋“ ์‹คํŒจ ์‹œ 409 ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€

== ex3
[Chore] Discord ์›นํ›… CI/CD ์•Œ๋ฆผ ์ถ”๊ฐ€

About

๐Ÿ‘€ ์ฃผ๋ฌธํ•  ๋•Œ ๋ˆˆ์น˜๋ณด์ง€ ๋งˆ์„ธ์š”, AI๊ฐ€ ๋‹น์‹ ์˜ ๋ˆˆ์น˜๋ฅผ ํŒŒ์•…ํ•ด์š”

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors