From a8df6eb4c8c462f387c016a18d67e6889032af4e Mon Sep 17 00:00:00 2001 From: chaewon <82140052+chaewon-io@users.noreply.github.com> Date: Wed, 15 May 2024 16:16:33 +0900 Subject: [PATCH] Create: README.md --- README.md | 213 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..947faa3 --- /dev/null +++ b/README.md @@ -0,0 +1,213 @@ +## ๐ŸŒŠ ์ฑŒ๋ฆฐ์ง€์˜ ํŒŒ๋„๋ฅผ ๋„˜์–ด ์ทจ์—…์œผ๋กœ, WAVED + + +### ๐Ÿ“† ๊ฐœ๋ฐœ๊ธฐ๊ฐ„ +- ๊ฐœ๋ฐœ : 2024๋…„ 2์›” 26์ผ ~ 2024๋…„ 3์›” 22์ผ +- ํ…Œ์ŠคํŠธ ๋ฐ ๋ฆฌํŒฉํ† ๋ง : 2024๋…„ 4์ผ 1์ผ ~ 2024๋…„ 4์›” 26์›” + +### ๐Ÿ”ง Tools + +
+ + + + + + +
+ + + +
+ + + +
+ +
+ +### ๐Ÿ„โ€โ™€๏ธ ์•„ํ‚คํ…์ณ +![waved-BE-Page-1](https://i.ibb.co/CM6FNjz/waved-BE-Page-1.jpg) + +### ๐Ÿ„โ€โ™€๏ธ API๋ช…์„ธ + +| | Method | URI | Description | +| --- | --- | --- | --- | +| ๊ด€๋ฆฌ์ž | GET | /api/v2/admin/groups | ์ง„ํ–‰์ค‘์ธ ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน ์กฐํšŒ | +| | GET | /api/v2/admin/{challengeGroupId}/verifications | ๊ทธ๋ฃน๋ณ„ ์ธ์ฆ ๋‚ด์—ญ ์กฐํšŒ | +| | DELETE | /api/v2/admin/{challengeGroupId}/verifications/{verificationId} | ์ธ์ฆ ๋‚ด์—ญ ์ทจ์†Œ ๋…ผ๋ฆฌ์‚ญ์ œ | +| ์ผ๋ฐ˜ํšŒ์› | PATCH | /api/v1/members/edit | ๋ฉค๋ฒ„ ์ •๋ณด ์ˆ˜์ •(์ดˆ๊ธฐ ํšŒ์› ๊ฐ€์ž…์‹œ) | +| | POST | /api/v1/members/reissue | ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ refreshTocken ํ™œ์šฉ | +| | POST | /api/v1/members/logout | ๋กœ๊ทธ์•„์›ƒ accessToken ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์ „์ธ 10๋ถ„๋™์•ˆ์€ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ์ฒ˜๋ฆฌ | +| | DELETE | /api/v1/members/delete | ํšŒ์› ํƒˆํ‡ด | +| | GET | /api/v1/members/profile | ํ”„๋กœํ•„ ์กฐํšŒ | +| | GET | /api/v1/members/profile/edit | ํ”„๋กœํ•„ ์ˆ˜์ • | +| | POST | /api/v1/members/github | ๊นƒํ—ˆ๋ธŒ ์—ฐ๋™ | +| | GET | /api/v1/members/github | ๊นƒํ—ˆ๋ธŒ ์ •๋ณด ์กฐํšŒ | +| | DELETE | /api/v1/members/github | ๊นƒํ—ˆ๋ธŒ ์—ฐ๋™ ํ•ด์ œ | +| | GET | /api/v1/members/reviews?page=0&limit=5 | ์ž์‹ ์˜ ๋ฆฌ๋ทฐ ์กฐํšŒ 5๊ฐœ์”ฉ ํŽ˜์ด์ง• | +| | GET | /api/v1/members/paymentRecords?page=0&limit=5 | ์˜ˆ์น˜๊ธˆ ๋‚ด์—ญ ์กฐํšŒ5๊ฐœ์”ฉ ํŽ˜์ด์ง• | +| ์ฑŒ๋ฆฐ์ง€ | GET | /api/v1/challenges/waiting | ๋Œ€๊ธฐ์ค‘์ธ ์ „์ฒด ์ฑŒ๋ฆฐ์ง€ ์กฐํšŒ ๋น„ํšŒ์›์กฐํšŒ๊ฐ€๋Šฅ | +| | GET | /api/v1/challenges/{challengeId}/reviews?page=0&limit=5 | ์ฑŒ๋ฆฐ์ง€ ์ „์ฒด ๋ฆฌ๋ทฐ ์กฐํšŒ 5๊ฐœ์”ฉ ํŽ˜์ด์ง• ๋น„ํšŒ์›์กฐํšŒ๊ฐ€๋Šฅ | +| ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน(๊ธฐ์ˆ˜) | GET | /api/v1/challengeGroups/info/{challengeGroupId} | ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ ๋น„ํšŒ์›์กฐํšŒ๊ฐ€๋Šฅ | +| | POST | /api/v1/challengeGroups/{challengeGroupId}?deposit= | ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน ์‹ ์ฒญ | +| | GET | /api/v1/challengeGroups/{challengeGroupId}?verificationDate= | ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน์˜, ๋‚ ์งœ๋ณ„, ์ธ์ฆ ๋‚ด์—ญ ์กฐํšŒ | +| | GET | /api/v1/challengeGroups/{challengeGroupId}/myVerifies?verificationDate= | ์ฑŒ๋ฆฐ์ง€ ๊ทธ๋ฃน์˜ ๋‚ด ์ธ์ฆ ๋‚ด์—ญ ์กฐํšŒ | +| ๋งˆ์ด์ฑŒ๋ฆฐ์ง€ | GET | /api/v1/myChallenges?status=PROGRESS | WAITING | COMPLETED +| ์ƒํƒœ๋ณ„ ๋งˆ์ด ์ฑŒ๋ฆฐ์ง€ ์กฐํšŒ | +| | GET | /api/v1/myChallenges/{myChallengeId} | ๋‚˜์˜(๋งˆ์ด์ฑŒ๋ฆฐ์ง€) ์ธ์ฆ ๋‚ด์—ญ ์กฐํšŒ | +| ์ธ์ฆ | POST | /api/v1/verify/{challengeGroupId} +โ†’ form-data : imageUrl, content, link, ๊นƒํ—™์€ ์ œ์ถœ x | ์ฑŒ๋ฆฐ์ง€ ์ธ์ฆ ์ œ์ถœ (๊ธ€, ๋งํฌ, ์‚ฌ์ง„, ๊นƒํ—ˆ๋ธŒ) ์ค‘๋ณต ์ œ์ถœ ๋ถˆ๊ฐ€๋Šฅ | +| | GET | /api/v1/verify/{challengeGroupId}/dates?quizDate=2024-03-20 03:25:02.337779 | ๊ทธ๋ฃน์˜, ๋‚ ์งœ๋ณ„ ํ€ด์ฆˆ ์กฐํšŒ | +| | GET | /api/v1/verify/{challengeGroupId} | ๊ทธ๋ฃน์˜, ์˜ค๋Š˜์˜ ํ€ด์ฆˆ ์กฐํšŒ | +| ๋ฆฌ๋ทฐ | POST | /api/v1/reviews/myChallenge/{myChallengeId} | ๋ฆฌ๋ทฐ ๋“ฑ๋ก ์ค‘๋ณต ๋“ฑ๋ก ๋ถˆ๊ฐ€๋Šฅ | +| | GET | /api/v1/reviews/{reviewId} | ๋ฆฌ๋ทฐ ์ˆ˜์ •์šฉ content ์กฐํšŒ | +| | PATCH | /api/v1/reviews/{reviewId} | ๋ฆฌ๋ทฐ ์ˆ˜์ • | +| | DELETE | /api/v1/reviews/{reviewId} | ๋ฆฌ๋ทฐ ์‚ญ์ œ | +| ๊ฒฐ์ œ | POST | /api/v1/payments/{myChallengeId} | ๊ฒฐ์ œ ํ›„ ๊ฒ€์ฆ | +| | POST | /api/v1/payments/{myChallengeId}/cancel | ์ฑŒ๋ฆฐ์ง€ ์‹ ์ฒญ ์ทจ์†Œ ์‹œ ํ™˜๊ธ‰ | +| | POST | /api/v1/payments/{myChallengeId}/completed | ์ฑŒ๋ฆฐ์ง€ ์™„์ฃผ ์‹œ ํ™˜๋ถˆ ๋ฒ„ํŠผ | +| ์ข‹์•„์š” | POST | /api/v1/likes/{verificationId} | ์ข‹์•„์š” ์ถ”๊ฐ€ ์ค‘๋ณต ์ถ”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ | +| | GET | /api/v1/likes/{verificationId} | ํŠน์ • ์ธ์ฆ ๋‚ด์—ญ ์ข‹์•„์š” ์ˆ˜ ์กฐํšŒ | +| | DELETE | /api/v1/likes/{verificationId} | ์ข‹์•„์š” ์ทจ์†Œ | +| ์•Œ๋ฆผ | GET | /api/v1/event/subscribe | ์•Œ๋ฆผ ๊ตฌ๋… | +| | GET | /api/v1/event/new | ์ƒˆ๋กœ์šด ์•Œ๋ฆผ ์œ ๋ฌด ํ™•์ธ | + +### ๐Ÿ„โ€โ™€๏ธ ํ…Œ์ด๋ธ” (๋‹ค์ด์–ด๊ทธ๋žจ) + +แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-21 แ„‹แ…ฉแ„’แ…ฎ 2 08 32 + + +### ๐Ÿ„โ€โ™€๏ธ ์‚ฌ์ดํŠธ +https://waved-likelion.site/ + +### ๐Ÿ„โ€โ™€๏ธ ๊ตฌํ˜„ ๊ธฐ๋Šฅ +#### 1. ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ +- ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€ OAuth 2.0 ๋กœ๊ทธ์ธ ์—ฐ๋™์„ JWT ํ† ํฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๊ณ , Redis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ refresh Token์„ ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. +- ๋กœ๊ทธ์•„์›ƒํ•œ ์œ ์ € ํ† ํฐ์˜ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ์ฒ˜๋ฆฌ๋กœ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. +
+image + +#### 2. ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ +- ์Šคํ”„๋ง ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ด๋ฒคํŠธ SseEmitter๋กœ ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๊ด€๋ฆฌ์ž ๋‹จ์—์„œ ์ทจ์†Œ๋˜๋Š” ์ธ์ฆ์— ๋Œ€ํ•ด ์œ ์ €์—๊ฒŒ ํ™•์‹คํ•˜๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. +
+image + +#### 3. ๊ฒฐ์ œ ์‚ฌํ›„ ๊ฒ€์ฆ, ์ทจ์†Œ, ํ™˜๊ธ‰ +- ํฌํŠธ์›๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๊ฒฐ์ œ ์š”์ฒญ์„ ํ™•์ธํ•˜๊ณ , ๊ธˆ์•ก์ด ์ •ํ™•ํ•œ์ง€ ์ฒดํฌํ•˜๋Š” ์‚ฌํ›„ ๊ฒ€์ฆ ๊ณผ์ •๊ณผ ๊ฒฐ์ œ ์ทจ์†Œ ๋ฐ ํ™˜๊ธ‰ ๊ณผ์ •์˜ ์ „์ฒด ๊ฒฐ์ œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. +
+image + +### ๐Ÿ„โ€โ™€๏ธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ +``` + +โ””โ”€โ”€ src + โ”œโ”€โ”€ main + โ”œโ”€โ”€ java + โ”‚ โ””โ”€โ”€ com + โ”‚ โ””โ”€โ”€ senity + โ”‚ โ””โ”€โ”€ waved + โ”‚ โ”œโ”€โ”€ base + โ”‚ โ”‚ โ”œโ”€โ”€ config + โ”‚ โ”‚ โ”œโ”€โ”€ exception + โ”‚ โ”‚ โ”œโ”€โ”€ jwt + โ”‚ โ”‚ โ”œโ”€โ”€ redis + โ”‚ โ”‚ โ””โ”€โ”€ security + โ”‚ โ”œโ”€โ”€ common + โ”‚ โ”‚ + โ”‚ โ”‚ + โ”‚ โ””โ”€โ”€ domain + โ”‚ โ”œโ”€โ”€โ”€ amdin + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ challenge + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ challengeGroup + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ event + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ liked + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ member + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ”œโ”€โ”€โ”€ request + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ myChallenge + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ notification + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ paymentRecord + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ”œโ”€โ”€โ”€ request + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ quiz + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ review + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ โ”œโ”€โ”€โ”€ verification + โ”‚ โ”œโ”€โ”€โ”€ controller + โ”‚ โ”œโ”€โ”€โ”€ dto + โ”‚ โ”œโ”€โ”€โ”€ request + โ”‚ โ””โ”€โ”€โ”€ response + โ”‚ โ”œโ”€โ”€โ”€ entity + โ”‚ โ”œโ”€โ”€โ”€ exception + โ”‚ โ”œโ”€โ”€โ”€ repository + โ”‚ โ””โ”€โ”€โ”€ service + โ”‚ + โ”‚ + โ””โ”€โ”€ resource + โ”œโ”€โ”€ application.yml + โ””โ”€โ”€ application-secret.yml + +```