diff --git a/README.md b/README.md index 64839acb..73688394 100644 --- a/README.md +++ b/README.md @@ -1 +1,123 @@ -# ๋ณด๊ณ !(BoardGo)๐ŸŽฒ ์„œ๋น„์Šค Backend Repository +# ๋ณด๊ณ !(BoardGo)๐ŸŽฒ ์„œ๋น„์Šค Backend README + +# ๐Ÿ”์„œ๋น„์Šค ์†Œ๊ฐœ + +๋ณด๊ณ !(BoardGo) ์„œ๋น„์Šค๋Š” ๋ณด๋“œ๊ฒŒ์ž„๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์˜คํ”„๋ผ์ธ์œผ๋กœ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋„๋ก ์†Œํ†ต ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.
+์‚ฌ์šฉ์ž๋“ค์€ ์ง์ ‘ ๋ณด๋“œ๊ฒŒ์ž„๊ณผ ์žฅ์†Œ๋ฅผ ์„ ํƒ ํ•ด ๋ชจ์ž„์„ ์ƒ์„ฑํ•˜๊ณ , ๋ณ„๋„์˜ ์—ฐ๋ฝ๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ณด๊ณ  ์„œ๋น„์Šค ๋‚ด์—์„œ ์ฑ„ํŒ…๋ฐฉ์„ ํ†ตํ•ด ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽธ๋ฆฌ์„ฑ์„ ์ œ๊ณต ํ•ด ์ค๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ณด๋“œ๊ฒŒ์ž„์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ +๋ถ„๋“ค์„ ์œ„ํ•ด 1000์—ฌ ๊ฐœ์˜ ๋ณด๋“œ๊ฒŒ์ž„์„ ์žฅ๋ฅด๋ณ„, ์ƒํ™ฉ๋ณ„๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +## ์„œ๋น„์Šค ๊ธฐํš ์ด์œ  + +๋ณด๋“œ๊ฒŒ์ž„์€ ์†Œ์ˆ˜ ๋ณด๋‹ค ๋‹ค์ˆ˜๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒŒ์ž„์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ SNS ๋“ฑ์„ ํ†ตํ•ด ๋ณด๋“œ๊ฒŒ์ž„์„ ํ•จ๊ป˜ํ•  ์ธ์›์„ ๋ชจ์ง‘ํ•˜๊ณ  ๋ณด๋“œ๊ฒŒ์ž„์„ ์ฆ๊ธฐ๊ณค ํ•ฉ๋‹ˆ๋‹ค.
+๋”ฐ๋ผ์„œ ๋ณด๋“œ๊ฒŒ์ž„ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ๋‚ด ์ฃผ๋ณ€์˜ ๋ณด๋“œ๊ฒŒ์ž„ ๋ชจ์ž„์— ์ฐธ๊ฐ€ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๋ณด๋“œ๊ฒŒ์ž„์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ณด๋“œ๊ฒŒ์ž„์„ ์†์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. +์—ฌ๋Ÿฌ๋ช…๊ณผ ๋ณด๋“œ๊ฒŒ์ž„์„ ์ฆ๊ธฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ, ๋ณด๋“œ๊ฒŒ์ž„์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ, ๋น ๋ฅด๊ฒŒ ๋ณด๋“œ๊ฒŒ์ž„ ๋ชจ์ž„์— ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์„ ํƒ€๊ฒŸํŒ…ํ•˜์—ฌ ๋ณด๋“œ๊ฒŒ์ž„์— ํŠนํ™”๋œ ๋ชจ์ž„ ์„œ๋น„์Šค๋ฅผ ๊ธฐํšํ–ˆ์Šต๋‹ˆ๋‹ค. + +## ์„œ๋น„์Šค ์ฃผ์š” ๊ธฐ๋Šฅ + +- ๋ชจ์ž„ ์ƒ์„ฑ ๋ฐ ๋ชจ์ž„ ์ฐธ์—ฌํ•˜๊ธฐ +- ์ƒํ™ฉ๋ณ„ ๋ณด๋“œ๊ฒŒ์ž„/๋งˆ๊ฐ์ž„๋ฐ• ๋ชจ์ž„/์‹ ๊ทœ ๋ชจ์ž„ +- ๋ณด๋“œ๊ฒŒ์ž„์„ ํ•จ๊ป˜ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฆฌ๋ทฐ ๋‚จ๊ธฐ๊ธฐ +- ์‚ฌ์šฉ์ž์˜ ๋ฆฌ๋ทฐ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ•„ +- ๋ชจ์ž„ ์ฐธ์—ฌ์ž ๊ฐ„ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„ํŒ…๋ฐฉ + +--- + +# ๐Ÿ”๊ธฐ์ˆ  ์Šคํƒ + +### Environment + +![Intellij](https://img.shields.io/badge/Intellij-black?style=for-the-badge&logo=Intellij&logoColor=white) +![Git](https://img.shields.io/badge/Git-F05032?style=for-the-badge&logo=Git&logoColor=white) +![Github](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=GitHub&logoColor=white) + +### Config + +![gradle](https://img.shields.io/badge/gradle-v8.8-CB3837?style=for-the-badge&logo=gradle&logoColor=white) + +### Development + +![Java](https://img.shields.io/badge/Java-v21-F7DF1E?style=for-the-badge&logo=Java&logoColor=white) +![Spring Boot](https://img.shields.io/badge/Spring%20Boot-v3.2.8-339933?style=for-the-badge&logo=Spring%20Boot&logoColor=55BB55) +![MariaDB](https://img.shields.io/badge/MariaDB-v11.5-000000?style=for-the-badge&logo=Next.js&logoColor=white) +![JUnit5](https://img.shields.io/badge/JUnit5-2F2E8B?style=for-the-badge&logo=JUnit5&logoColor=white) +![Spring Data JPA](https://img.shields.io/badge/Spring%20Data%20JPA-7952B3?style=for-the-badge&logo=Spring%20Data%20JPA&logoColor=white) +![MapStruct](https://img.shields.io/badge/MapStruct-v1.5.5-007FFF?style=for-the-badge&logo=MapStruct&logoColor=white) + +### Communication + +![Discord](https://img.shields.io/badge/Discord-4A154B?style=for-the-badge&logo=Discord&logoColor=white) +![Notion](https://img.shields.io/badge/Notion-000000?style=for-the-badge&logo=Notion&logoColor=white) +![Gather](https://img.shields.io/badge/Gather-00897B?style=for-the-badge&logo=Gather&logoColor=white) + +### Infra + +![AWS](https://img.shields.io/badge/AWS-4A154B?style=for-the-badge&logo=AWS&logoColor=white) + +# ๐Ÿ”์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ + +## ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ + +![๊ฐœ๋ฐœ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜](./img/dev_arch.png) + +## ์šด์˜ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ + +![์šด์˜ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜](./img/prod_arch.png) + +# ๐Ÿ”ERD + +| `๋ณด๋“œ๊ฒŒ์ž„` +|----------------------------------------------------------------------------------------------| +| ![๋ณด๋“œ๊ฒŒ์ž„ ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/d70648ec-668c-4945-8f93-f47260750ba8) + +| `๋ชจ์ž„` +|--------------------------------------------------------------------------------------------| +| ![๋ชจ์ž„ ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/4ff2861f-7c5d-4816-b7ab-efc78e0cda08) + +| `์ฑ„ํŒ…` +|--------------------------------------------------------------------------------------------| +| ![์ฑ„ํŒ… ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/57d55b9c-b4c6-473c-beb7-bebbd26df49a) + +| `์•Œ๋ฆผ` +|--------------------------------------------------------------------------------------------| +| ![์•Œ๋ฆผ ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/989011bf-7685-4c08-b689-958f1a2bb7b9) + +| `๋ฆฌ๋ทฐ` +|--------------------------------------------------------------------------------------------| +| ![๋ฆฌ๋ทฐ ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/dc81e96a-1a28-49c9-9327-f62d82d11ca2) + +| `ํšŒ์›` +|--------------------------------------------------------------------------------------------| +| ![ํšŒ์› ๋„๋ฉ”์ธ](https://github.com/user-attachments/assets/29bfe9a0-0d62-45d9-8111-3077e2f9003d) + +| `์•ฝ๊ด€๋™์˜` +|------------------------------------------------------------------------------------------| +| ![์•ฝ๊ด€๋™์˜](https://github.com/user-attachments/assets/87dc9ad2-3015-480a-a771-69e448224c22) + +# ๐Ÿ”๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ์˜์กด๊ด€๊ณ„ + +| ํผ์‚ฌ๋“œ ํŒจํ„ด ์‚ฌ์šฉ ์‹œ | ์„œ๋น„์Šค๋งŒ ์‚ฌ์šฉ ์‹œ (๊ฐ™์€ ๋„๋ฉ”์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋งŒ ํ•„์š”ํ•  ๊ฒฝ์šฐ) +|----------------------------------|-----------------------------------------| +| ![ํผ์‚ฌ๋“œ ํŒจํ„ด](./img/facade_arch.png) | ![๊ธฐ์กด ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜](./img/service_arch.png) + +# ๐Ÿ”Git Flow + +| **๋ธŒ๋žœ์น˜** | **ํŠน์ง•** | +|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------| +| `prod` | - ์šด์˜ ์„œ๋ฒ„
- `prod/1.0` `prod/2.1` | +| `dev` | - ๊ฐœ๋ฐœ ์„œ๋ฒ„ & ํ…Œ์ŠคํŠธ์„œ๋ฒ„
- `prod` ๋ธŒ๋žœ์น˜์—์„œ ๋ถ„๊ธฐ
- `prod` ๋ธŒ๋žœ์น˜์—์„œ `hoxfix` ๋ฐœ์ƒ ํ›„ `prod`์— merge ๋์„ ๊ฒฝ์šฐ, `prod > dev` pull ๋™๊ธฐํ™” | +| `feature` | - ํ•˜๋‚˜์˜ CRUD ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ
- `dev` ๋ธŒ๋žœ์น˜์—์„œ ๋ถ„๊ธฐ
- ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์™„๋ฃŒ ์‹œ `dev` ๋ธŒ๋žœ์น˜๋กœ merge
- `feature/๊ธฐ๋Šฅ๋ช…` (feature/user-board)
- feature ๊ธฐ๋Šฅ๋ช…์˜ ๋„ค์ด๋ฐ์€ ์ผ€๋ฐฅ ์ผ€์ด์Šค | +| `fix` | - `dev` ๋ธŒ๋žœ์น˜์—์„œ ์ด์Šˆ ๋ฐœ์ƒ ์‹œ `dev` ๋ธŒ๋žœ์น˜์—์„œ ๋ถ„๊ธฐ
- ์ด์Šˆ ์ˆ˜์ • ์™„๋ฃŒ ์‹œ `dev` ๋ธŒ๋žœ์น˜๋กœ merge | +| `hotfix` | - `prod` ๋ธŒ๋žœ์น˜์—์„œ ์ด์Šˆ ๋ฐœ์ƒ ์‹œ ๋ถ„๊ธฐ
- ์ด์Šˆ ํ•ด๊ฒฐ ์‹œ `prod` ๋ธŒ๋žœ์น˜์— merge
- ํ˜„์žฌ ์šด์˜์ด `prod/1.0`์ด๊ณ , `hotfix/1.0` ์—์„œ ํ•ด๊ฒฐํ•œ ๊ฒฝ์šฐ prod์˜ ๋‹ค์Œ๋ฒ„์ „์ธ `prod/1.1` ์— merge | + +*[๐ŸชดBranch Convention](https://github.com/LuckyVicky-2team/backend/wiki/%F0%9F%AA%B4Branch-Convention) ์ฐธ์กฐ + +# ๐Ÿ”๋ฐฑ์—”๋“œ ํŒ€์› ์†Œ๊ฐœ + +| **ํŒ€์›** | **์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋‹ด๋‹น ๊ธฐ๋Šฅ** | **์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ๊ณผ์ •** | +|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|---------------| +|
**์ด์˜ˆ์ง„([@yeahdy](https://github.com/yeahdy))** | - ์†Œ์…œ ํšŒ์›
- ์•ฝ๊ด€๋™์˜
- ๋ฉ”์ธ ํ™ˆ
- ๋ชจ์ž„ ์ƒํ˜ธ์ž‘์šฉ
- ํšŒ์› ๋งˆ์ดํŽ˜์ด์ง€
- ๋ฆฌ๋ทฐ | | +|
**์–‘์ง€์›([@ambosing](https://github.com/ambosing))** | - ์ผ๋ฐ˜ํšŒ์›
- ๋ชจ์ž„
- ๋ณด๋“œ๊ฒŒ์ž„
- ์ฐœํ•˜๊ธฐ
- ์“ฐ๋ ˆ๋“œ ํ˜•์‹ ์ฑ„ํŒ… | | + + + + diff --git a/img/dev_arch.png b/img/dev_arch.png new file mode 100644 index 00000000..f3357b51 Binary files /dev/null and b/img/dev_arch.png differ diff --git a/img/facade_arch.png b/img/facade_arch.png new file mode 100644 index 00000000..d8e7af04 Binary files /dev/null and b/img/facade_arch.png differ diff --git a/img/prod_arch.png b/img/prod_arch.png new file mode 100644 index 00000000..9d26766a Binary files /dev/null and b/img/prod_arch.png differ diff --git a/img/service_arch.png b/img/service_arch.png new file mode 100644 index 00000000..fe8c48f4 Binary files /dev/null and b/img/service_arch.png differ