From 9b3800d4ac073801326c296c9df32323724b3274 Mon Sep 17 00:00:00 2001 From: west_east Date: Thu, 14 Aug 2025 16:52:52 +0900 Subject: [PATCH] =?UTF-8?q?[#37]=20chore:=20README=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..caa49e1 --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ +# ๐Ÿƒโ€โ™‚๏ธ Runners Fight +### ๋Ÿฌ๋„ˆ๋“ค๋ผ๋ฆฌ์˜ ๋œจ๊ฑฐ์šด ๊ฒฝ์Ÿ์„ ์œ„ํ•œ ๋Ÿฌ๋‹ ๋ฐฐํ‹€ ํ”Œ๋žซํผ + +--- + +![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4.5-6DB33F?style=flat-square&logo=springboot&logoColor=white) +![Java](https://img.shields.io/badge/Java-17-ED8B00?style=flat-square&logo=java&logoColor=white) +![MySQL](https://img.shields.io/badge/MySQL-8.0-4479A1?style=flat-square&logo=mysql&logoColor=white) +![JPA](https://img.shields.io/badge/JPA-Hibernate-59666C?style=flat-square&logo=hibernate&logoColor=white) +![JWT](https://img.shields.io/badge/JWT-000000?style=flat-square&logo=jsonwebtokens&logoColor=white) + +> **๋Ÿฌ๋„ˆ๋“ค ๊ฐ„์˜ ์„ ์˜์˜ ๊ฒฝ์Ÿ์„ ํ†ตํ•ด ์„ฑ์ทจ๊ฐ๊ณผ ์žฌ๋ฏธ๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋Ÿฌ๋‹ ํฌ๋ฃจ ๋ฐฐํ‹€ ์‹œ์Šคํ…œ** +> ์ด๊ณณ์—์„œ ์Šน๋ฆฌ๋Š” ๊ธฐ๋ก์„ ๋„˜์–ด **๋Ÿฌ๋„ˆ๋กœ์„œ์˜ ์„ฑ์žฅ์„ ์˜๋ฏธ**ํ•ฉ๋‹ˆ๋‹ค. + +## ๐Ÿ“– ๊ฐœ์š” + +**Runners Fight**๋Š” ๊ฐœ์ธ์ด ์•„๋‹Œ **๋Ÿฌ๋‹ ํฌ๋ฃจ**์— ์ดˆ์ ์„ ๋งž์ถ˜ ํ˜์‹ ์ ์ธ ๋Ÿฌ๋‹ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. + +### ๐ŸŽฏ ํ•ต์‹ฌ ์•„์ด๋””์–ด +- **๋Ÿฌ๋‹ ํฌ๋ฃจ vs ๋Ÿฌ๋‹ ํฌ๋ฃจ**: ํฌ๋ฃจ ๊ฐ„์˜ ๊ฒฝ์Ÿ์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ๋ฐฐํ‹€ ์‹œ์Šคํ…œ +- **๋•…๋”ฐ๋จน๊ธฐ ์‹œ์Šคํ…œ**: ํฌ๋ฃจ๊ฐ€ ๋‹ฌ๋ฆฐ ๋ฃจํŠธ์— ๊ตฌ์—ญ ํ™•๋ณด ๋ฐ ์žฌํš๋“ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ ์šฉ + + +### ๐Ÿ’ก ๊ธฐํš ๋ฐฐ๊ฒฝ + +์ตœ๊ทผ **์šด๋™ ๋ถ€์กฑ**๊ณผ **๊ฑด๊ฐ•**์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ๋Ÿฌ๋‹์„ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋Š˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋Ÿฌ๋„ˆ๋“ค์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ **์šด๋™์˜ ์žฌ๋ฏธ**๋‚˜ **๋ชฉํ‘œ ๋‹ฌ์„ฑ**์— ๋Œ€ํ•œ ๋™๊ธฐ๋ฅผ ์žƒ์–ด๊ฐ€๊ณค ํ•ฉ๋‹ˆ๋‹ค. + +์ด์— ์šฐ๋ฆฌ๋Š” ๊ฒŒ์ด๋ฏธํ”ผ์ผ€์ด์…˜์„ ํ†ตํ•ด **๋Ÿฌ๋‹์„ ๋” ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•**์„ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค. ์šด๋™์ด ๋‹จ์ˆœํ•œ ๋ฐ˜๋ณต์ ์ธ ํ™œ๋™์ด ์•„๋‹Œ, **ํฅ๋ฏธ๋กญ๊ณ  ๋„์ „์ ์ธ ๊ฒŒ์ž„**์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค. + +## โญ ์ฃผ์š” ๊ธฐ๋Šฅ + +### ๐Ÿ† ํฌ๋ฃจ ๋ฐฐํ‹€ ์‹œ์Šคํ…œ +- **ํฌ๋ฃจ vs ํฌ๋ฃจ** ๊ฒฝ์Ÿ์„ ํ†ตํ•œ ์ง€์†์ ์ธ ๋™๊ธฐ๋ถ€์—ฌ +- **๋•…๋”ฐ๋จน๊ธฐ ์‹œ์Šคํ…œ**์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์ง€๋„ ๊ธฐ๋ฐ˜ ๊ตฌ์—ญ ์ ๋ น +- **๋žญํ‚น ์‹œ์Šคํ…œ**: ์›”๊ฐ„ ํฌ๋ฃจ ๋žญํ‚น ๋ฐ ๊ฐœ์ธ ๊ธฐ๋ก ๊ด€๋ฆฌ +- ํฌ๋ฃจ์›๋“ค์˜ ๊ธฐ๋ก์ด ํ•ฉ์ณ์ ธ ํฌ๋ฃจ ์„ฑ๊ณผ๋กœ ์ง‘๊ณ„ + +### ๐Ÿ‘ฅ ์†Œ์…œ ๊ธฐ๋Šฅ +- **ํฌ๋ฃจ ์ƒ์„ฑ ๋ฐ ๊ฐ€์ž…**: ๋Ÿฌ๋‹ ํฌ๋ฃจ ์ƒ์„ฑ, ๊ฒ€์ƒ‰, ๊ฐ€์ž… ์‹ ์ฒญ +- **์นœ๊ตฌ ์‹œ์Šคํ…œ**: ์นœ๊ตฌ ์ถ”๊ฐ€ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋Ÿฌ๋‹ ์ƒํƒœ ํ™•์ธ +- **์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ**: ํฌ๋ฃจ ํ™œ๋™ ๋ฐ ๋ฐฐํ‹€ ์ƒํ™ฉ ์•Œ๋ฆผ + +### ๐Ÿ“Š ๋Ÿฌ๋‹ ๊ธฐ๋ก ๊ด€๋ฆฌ +- **๊ฐœ์ธ ๋Ÿฌ๋‹ ๊ธฐ๋ก**: GPS ๊ธฐ๋ฐ˜ ๋ฃจํŠธ ์ถ”์  ๋ฐ ํ†ต๊ณ„ +- **ํฌ๋ฃจ ํ†ตํ•ฉ ๊ธฐ๋ก**: ํฌ๋ฃจ์›๋“ค์˜ ๊ธฐ๋ก ํ†ตํ•ฉ ๊ด€๋ฆฌ +- **์‹œ๊ฐํ™”**: ์ง€๋„ ๊ธฐ๋ฐ˜ ๋ฃจํŠธ ํ‘œ์‹œ ๋ฐ ์„ฑ๊ณผ ์ฐจํŠธ + +## ๐Ÿ— ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ + +### ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ +``` +Backend/ +โ”œโ”€โ”€ src/main/java/run/backend/ +โ”‚ โ”œโ”€โ”€ BackendApplication.java +โ”‚ โ”œโ”€โ”€ domain/ +โ”‚ โ”‚ โ”œโ”€โ”€ auth/ # ์ธ์ฆ & OAuth2 +โ”‚ โ”‚ โ”œโ”€โ”€ member/ # ํšŒ์› ๊ด€๋ฆฌ +โ”‚ โ”‚ โ”œโ”€โ”€ crew/ # ํฌ๋ฃจ ๊ด€๋ฆฌ +โ”‚ โ”‚ โ”œโ”€โ”€ event/ # ๋Ÿฌ๋‹ ์ด๋ฒคํŠธ +โ”‚ โ”‚ โ”œโ”€โ”€ running/ # ๋Ÿฌ๋‹ ๊ธฐ๋ก +โ”‚ โ”‚ โ”œโ”€โ”€ notification/ # ์•Œ๋ฆผ +โ”‚ โ”‚ โ”œโ”€โ”€ record/ # ๊ธฐ๋ก ๊ด€๋ฆฌ +โ”‚ โ”‚ โ””โ”€โ”€ file/ # ํŒŒ์ผ ์—…๋กœ๋“œ +โ”‚ โ””โ”€โ”€ global/ +โ”‚ โ”œโ”€โ”€ config/ # ์„ค์ • ํŒŒ์ผ +โ”‚ โ”œโ”€โ”€ security/ # ๋ณด์•ˆ ์„ค์ • +โ”‚ โ”œโ”€โ”€ oauth2/ # OAuth2 ์ฒ˜๋ฆฌ +โ”‚ โ”œโ”€โ”€ exception/ # ์˜ˆ์™ธ ์ฒ˜๋ฆฌ +โ”‚ โ””โ”€โ”€ common/ # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ +โ””โ”€โ”€ src/test/java/ # ํ…Œ์ŠคํŠธ ์ฝ”๋“œ +``` + +### ๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ + +#### Backend +- **Framework**: Spring Boot 3.4.5 +- **Language**: Java 17 +- **Security**: Spring Security + JWT + OAuth2 +- **Database**: MySQL + Spring Data JPA +- **Query**: QueryDSL +- **Documentation**: Swagger (SpringDoc OpenAPI) + +#### Development Tools +- **Build Tool**: Gradle +- **Test**: JUnit 5, Mockito +- **Code Coverage**: JaCoCo + +## ๐ŸŽฏ ์ฐจ๋ณ„์  + +| ๊ตฌ๋ถ„ | Runners Fight | ํƒ€ ๋Ÿฌ๋‹ ์„œ๋น„์Šค | +|------|---------------|--------------| +| **์žฌ๋ฏธ ์š”์†Œ** | ๋•…๋”ฐ๋จน๊ธฐ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ํฌ๋ฃจ ๊ฒฝ์Ÿ | ๊ฐœ์ธ ๊ธฐ๋ก ๊ธฐ๋ฐ˜์˜ ๊ฒฝ์Ÿ | +| **๊ฐœ์ธ ์„ฑ์žฅ** | ํฌ๋ฃจ ๋‹จ์œ„ ๋ชฉํ‘œ ๋‹ฌ์„ฑ์œผ๋กœ ๊ฐœ์ธ ์„ฑ๊ณผ๊ฐ€ ํฌ๋ฃจ ์„ฑ๊ณผ๋กœ ์—ฐ๊ฒฐ | ๊ฐœ์ธ ๊ธฐ๋ก ํ–ฅ์ƒ ์ค‘์‹ฌ | +| **์ง€์—ญ์„ฑ** | ์‹ค์‹œ๊ฐ„ ์ง€๋„ ๊ธฐ๋ฐ˜ ๋•…๋”ฐ๋จน๊ธฐ, ์ง€์—ญ ๊ธฐ๋ฐ˜ ๋Ÿฌ๋‹ ์ปค๋ฎค๋‹ˆํ‹ฐ | ์—†์Œ | +| **๋™๊ธฐ ๋ถ€์—ฌ** | ํฌ๋ฃจ ๋‚ด ์‹ค์‹œ๊ฐ„ ์†Œํ†ต๊ณผ ์„ฑ๊ณผ ๊ณต์œ  | ๊ฐœ์ธ ๊ธฐ๋ก ๊ธฐ๋ฐ˜ | +| **ํ˜‘๋™์‹ฌ** | ํฌ๋ฃจ ๋‹จ์œ„์˜ ํ˜‘๋ ฅ๊ณผ ๊ฒฝ์Ÿ์„ ํ†ตํ•œ ๊ณต๋™ ๋ชฉํ‘œ ๋‹ฌ์„ฑ | ๊ฐœ์ธ ์„ฑ์žฅ ์ค‘์‹ฌ | + + + +--- + +**Runners Fight**์™€ ํ•จ๊ป˜ ๋Ÿฌ๋‹์˜ ์ƒˆ๋กœ์šด ์žฌ๋ฏธ๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”! ๐Ÿƒโ€โ™‚๏ธ๐Ÿ”ฅ