diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1ac76d --- /dev/null +++ b/README.md @@ -0,0 +1,220 @@ +# โ˜€๏ธ๐Ÿ’Š SEONYAK (์„ ์•ฝ) + +![KakaoTalk_Photo_2024-07-09-23-14-50](https://github.com/TEAM-SEONYAK/SEONYAK-SERVER/assets/81475587/b6c2d246-3281-4a5f-9134-3c15915e69a0) + +``` +" ๋” ํฐ ์„ธ์ƒ์—์„œ ๊ฑธ์Œ๋งˆ๋ฅผ ๋—„ ํ›„๋ฐฐ๋“ค์ด ์„ ๋ฐฐ์˜ ์†์„ ์žก๊ณ  ๋›ธ ์ˆ˜ ์žˆ๋„๋ก " +๊ฐ™์€ ๊ณ„์—ด '์„ '๋ฐฐ์™€์˜ ์ง„๋กœ ์ƒ๋‹ด '์•ฝ'์†, ์„ ์•ฝ + +ใ„ด ๊ฐ™์€ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์„ ๋ฐฐ์™€์˜ ์ง„๋กœ ์ƒ๋‹ด์„ ํ†ตํ•ด ๋” ๋งž์ถคํ™”๋œ ์กฐ์–ธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก +ใ„ด ๊ฐ™์€ ๊ณ„์—ด/์›ํ•˜๋Š” ์ง๋ฌด์˜ ์„ ๋ฐฐ๋ฅผ ํ„ฐ์น˜ ํ•œ๋ฒˆ์œผ๋กœ ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก +``` + +
+ +## Web Backend Developers โ˜๏ธ + +
+ + + + + + + + + +
๊น€์ฐฝ๊ท  ํ™์„๋ฒ”
+
+ +
+ +๊น€์ฐฝ๊ท  - EC2, RDS ์„ธํŒ… / ์ปจ๋ฒค์…˜๋“ค ์ž‘์„ฑ / ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ์—ฐ๋™ / API ๊ฐœ๋ฐœ +ํ™์„๋ฒ” - ์‘๋‹ต, ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํฌํ•จํ•œ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ… / DOCKER CI, CD ์„ธํŒ… / ๋„ค์ด๋ฒ„ OCR, ๊ตฌ๊ธ€ ๋ฏธํŠธ ํšŒ์˜์‹ค ๊ฐœ์„ค ๋“ฑ ์™ธ๋ถ€ API ์—ฐ๋™ / API ๊ฐœ๋ฐœ + +
+ +## 1. Git Convention + +> **Git Flow** + +Git_Flow_Seonyak + +- `main` ์šด์˜์„œ๋ฒ„ ๋ธŒ๋žœ์น˜ +- `hotfix` ํ•ซํ”ฝ์Šค์šฉ ๋ธŒ๋žœ์น˜ +- `develop` ๊ฐœ๋ฐœ์„œ๋ฒ„ ๋ธŒ๋žœ์น˜ +- `prefix/#์ด์Šˆ๋ฒˆํ˜ธ` ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ธ ๋ธŒ๋žœ์น˜ + +
+ +> **Branch Naming Rule** + +- ์ด์Šˆ๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜๊ณ  ๋ถ€์—ฌ๋ฐ›์€ ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. +- **์—ฌ๊ธฐ์„œ์˜ `prefix`๋Š” ์ „๋ถ€ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** + +``` +prefix/#์ด์Šˆ๋ฒˆํ˜ธ + +ex) feat/#8 +ex) fix/#17 +``` + +
+ +> **Commit Convention** + +- **์—ฌ๊ธฐ์„œ์˜ `Prefix`๋Š” ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** + +``` +[PREFIX/#์ด์Šˆ๋ฒˆํ˜ธ] ์ž‘์—…๋‚ด์šฉ + +ex) [FEAT/#8] ๋‹จ์–ด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ API ๊ตฌํ˜„ +ex) [FIX/#17] ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ ์˜ค๋ฅ˜ ์ˆ˜์ • +``` + +
+ +> **Prefix Convention** + +- **`branch`์—์„œ์˜ `prefix`๋Š” ์ „๋ถ€ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** +- **`label`์€ ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** +- ํ•œ commit์—์„œ๋Š” ํ•ด๋‹น prefix type์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ๋งŒ ๊ฐ–๋„๋ก commit์„ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. + +| prefix types | ์˜๋ฏธ | +| --- | --- | +| โœจย FEAT | ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ | +| ๐Ÿ› ๏ธย FIX | ๋ฒ„๊ทธ, ์˜ค๋ฅ˜ ๋“ฑ์„ ์ˆ˜์ • | +| ๐Ÿ”€ย MERGE | ๋‹ค๋ฅธ branch์™€ ๋ณ‘ํ•ฉ | +| โš™๏ธ SETTING | ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ… | +| ๐Ÿงฉย CHORE | ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ๊ณผ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ์ด ์—†๋Š” ์ž‘์—…(์ดˆ๊ธฐ ์„ธํŒ… ์ดํ›„) ex) .gitignore, ์˜์กด์„ฑ ์ถ”๊ฐ€ ๋“ฑ | +| ๐Ÿ“ย DOCS | README๋‚˜ WIKI ๋“ฑ์˜ ๋ฌธ์„œ ์ˆ˜์ • | +| โœ๏ธย CORRECT | ๋ฌธ๋ฒ• ์ƒ ์˜ค๋ฅ˜๋‚˜ ํƒ€์ž…, ๋ณ€์ˆ˜๋ช… ๋“ฑ์„ ๋ณ€๊ฒฝ | +| ๐Ÿ“‚ย FILE | ํด๋”๋ง ๋ณ€๊ฒฝ | +| ๐Ÿ”ย RENAME | ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ | +| โ™ป๏ธย REFACTOR | ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง | +| โšฐ๏ธย DEL | ์“ธ๋ชจ์—†๋Š” ์ฝ”๋“œ ์‚ญ์ œ | +| ๐Ÿ’กย TEST | ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ | +| ๐Ÿ”ฅย !HOTFIX | ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ธ‰ํ•˜๊ฒŒ ์ˆ˜์ • | + +
+ +> **Issue Template** + +- [PREFIX] ์ด์Šˆ๋‚ด์šฉ +- **์—ฌ๊ธฐ์„œ์˜ `PREFIX`๋Š” ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** + +``` +## ๐Ÿ’ก Issue + +- + +## ๐Ÿ“ To-do + + +- [ ] +``` + +
+ +> **Pull Request Template** + +- [PREFIX] #์ด์Šˆ๋ฒˆํ˜ธ - PR๋‚ด์šฉ +- **์—ฌ๊ธฐ์„œ์˜ `PREFIX`๋Š” ์ „๋ถ€ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.** + +``` +# ๐Ÿ’ก Issue +- resolved: #์ด์Šˆ๋ฒˆํ˜ธ + +# ๐Ÿ“ธ Screenshot + + +# ๐Ÿ“„ Description + +- + +# ๐Ÿ’ฌ To Reviewers + + - + +# ๐Ÿ”— Reference + +- +``` + +
+ +## 2. **Package Structure** + +> **Package Structure** + +``` +**๊ณ„์ธตํ˜• ๊ตฌ์กฐ vs ๋„๋ฉ”์ธํ˜• ๊ตฌ์กฐ** +* ๊ณ„์ธตํ˜• ๊ตฌ์กฐ ์„ ํƒ + - ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ณ , ๋„๋ฉ”์ธ์ด ์ ์€ ๊ฒฝ์šฐ + - ๊ณ„์ธตํ˜• ํŒจํ‚ค์ง€ ์•ˆ์— ํด๋ž˜์Šค๋“ค์ด ๊ตฌ๋ถ„์ด ์•ˆ ๋  ๋งŒํผ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ๊ฐ€ ์ ๋‹ค. + - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„ ๋ฐ ๊ฐ€๋…์„ฑ์ด ๋„๋ฉ”์ธํ˜•๋ณด๋‹ค ์ข‹๋‹ค. + - ์œ ์Šค์ผ€์ด์Šค๋ณ„๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ ๋‹ค. + - ๋„๋ฉ”์ธ์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋„, ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ณ  ๋„๋ฉ”์ธ์ด ์ ์€ ๋งŒํผ ๋ณ€๊ฒฝ ๋ฒ”์œ„๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋„“์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. + +* **๋„๋ฉ”์ธํ˜• ๊ตฌ์กฐ ์„ ํƒ** + - ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ , ๋„๋ฉ”์ธ์ด ๋งŽ์€ ๊ฒฝ์šฐ + - ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ  ๋„๋ฉ”์ธ์ด ๋งŽ์€ ๋งŒํผ ๋„๋ฉ”์ธ๋ณ„ ์‘์ง‘๋„๊ฐ€ ๋†’์€ ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ์ด๋‹ค. + - ๊ทœ๋ชจ๊ฐ€ ํฐ ๋งŒํผ ์œ ์Šค์ผ€์ด์Šค๋ณ„๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. +``` + +- ๋„๋ฉ”์ธํ˜• ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. +- `Enum` ํด๋ž˜์Šค๋Š” `model` ํŒจํ‚ค์ง€ ์•ˆ์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. + +``` +โ”œโ”€โ”€ build.gradle +โ”œโ”€โ”€ ๐Ÿ“‚ src/main/java/org/sopt/seonyakServer +โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ domain +โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย entity1 +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย controller +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย dto +โ”‚ย ย  โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย request +โ”‚ย ย  โ”‚ย ย  โ”‚ โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย response +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย model +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย repository +โ”‚ย ย  โ”‚ โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย service +โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย entity2 +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย controller +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย dto +โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย request +โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ ย  โ””โ”€โ”€ ๐Ÿ“‚ย response +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย model +โ”‚ย ย  โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย repository +โ”‚ย ย  โ”‚ โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย service +โ”‚ย ย  โ”‚ โ””โ”€โ”€ ๐Ÿ“‚ utils +โ”‚ย ย  โ”‚ โ”‚ +โ”‚ย ย  โ”‚ โ”‚ +โ”‚ย ย  โ”‚ โ”‚ +โ”‚ย ย  โ”‚ โ”‚ +โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ global +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย auth +โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย filter +โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย jwt +โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย redis +โ”‚ โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย security +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย common +โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย dto +โ”‚ โ”‚ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย external +โ”‚ โ”‚ย ย  โ””โ”€โ”€ ๐Ÿ“‚ย model +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย config +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย exception +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย enums +โ”‚ ย ย  โ”œโ”€โ”€ ๐Ÿ“‚ย model(CustomException) +โ”‚ ย ย  โ””โ”€โ”€ GlobalExceptionHandler.java +โ””โ”€โ”€ SeonyakServerApplication.java +```