An open API service indexing awesome lists of open source software.

https://github.com/f-lab-edu/givemeticon


https://github.com/f-lab-edu/givemeticon

Last synced: 7 months ago
JSON representation

Awesome Lists containing this project

README

          

# ๐ŸŽ givemeticon

์ƒˆ๋กœ์šด ์†Œ๋น„ ํŠธ๋ Œ๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋‚ญ๋น„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” **๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ „๋ฌธ ์ค‘๊ณ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ**์œผ๋กœ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ๊ฐ€ ์ž„๋ฐ•ํ•œ ๊ธฐํ”„ํ‹ฐ์ฝ˜์„ ํŒ๋งคํ•˜๊ณ  ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์œผ๋กœ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค ํ”Œ๋žซํผ

## ๐Ÿ”ง ์‚ฌ์šฉ ๋ฐ ๊ธฐ์ˆ ํ™˜๊ฒฝ

---















## ๐Ÿ“– ํ”„๋กœํ† ํƒ€์ž…

---

๐Ÿคณ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์› ์ •๋ณด


๋กœ๊ทธ์ธ ํ™”๋ฉด
ํšŒ์› ๊ฐ€์ž… ํ™”๋ฉด
๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ
๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ

๐Ÿคณ ์ƒํ’ˆ ํƒ์ƒ‰


ํšŒ์› ๊ฐ€์ž… ํ™”๋ฉด
๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ
๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ

๐Ÿคณ ์ƒํ’ˆ ๊ตฌ๋งค


์ƒํ’ˆ ๊ตฌ๋งค ํ™”๋ฉด
์œ ํšจ๊ธฐ๊ฐ„ ์„ ํƒ
๊ตฌ๋งค ์™„๋ฃŒ
๊ตฌ๋งค ์ƒ์„ธ
๊ตฌ๋งค ํ™•์ •
๊ตฌ๋งค์ฝ˜ํ•จ(๋ณด์œ )
๊ตฌ๋งค์ฝ˜ํ•จ(์‚ฌ์šฉ ๋ฐ ๋งŒ๋ฃŒ)

๐Ÿคณ ์ƒํ’ˆ ํŒ๋งค


ํŒ๋งค ์ œํ’ˆ ์„ ํƒ
๋ฐ”์ฝ”๋“œ ๋ฐ ์œ ํšจ๊ธฐ๊ฐ„ ์ธ์ฆ
์ด ํŒ๋งค ๊ธˆ์•ก
ํŒ๋งค ๋‚ด์—ญ

๐Ÿคณ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ


์ฐœ ๋ชฉ๋ก
์•Œ๋ฆผ

์ „์ฒด ํ”„๋กœํ† ํƒ€์ž… -> [์นด์นด์˜ค ์˜ค๋ธ UI](https://ovenapp.io/view/N8q3JurAx3UZZR5DhCzkDvlEsCRUQnJZ/cFTi7)

## ๐Ÿ“– ๊ธฐ๋Šฅ ๋ชฉ๋ก (์„ค๋ช… ์š”์•ฝ)

---

* **ํŒ๋งค**
* ๋“ฑ๋ก / ์‚ญ์ œ
* ๋ชฉ๋ก / ์ด ํŒ๋งค ๊ธˆ์•ก ์กฐํšŒ
* **๊ตฌ๋งค**
* ๊ฐ€๊ฒฉ๋ณ„ / ์œ ํšจ๊ธฐ๊ฐ„ ๋ณ„ ์กฐํšŒ
* ๊ตฌ๋งค ๋‚ด์—ญ ์กฐํšŒ(์ตœ๊ทผ ๊ตฌ๋งค์ˆœ || ๋งŒ๋ฃŒ ์ž„๋ฐ•์ˆœ)
* ๊ตฌ๋งคํ•˜๊ธฐ
* ๊ตฌ๋งค ํ™•์ •
* **ํšŒ์›**
* ํšŒ์› ๊ฐ€์ž… / ๋กœ๊ทธ์ธ / ๋กœ๊ทธ์•„์›ƒ
* OAuth ๋กœ๊ทธ์ธ (์นด์นด์˜ค๏น’๋„ค์ด๋ฒ„)
* ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ๋ฐ ๋ณ€๊ฒฝ
* ์ƒํ’ˆ ์ข‹์•„์š”
* ๊ณ„์ขŒ ๋“ฑ๋ก

์ž์„ธํ•œ UseCase ๐Ÿ‘‰ [Use Case (wiki)](https://github.com/f-lab-edu/givemeticon/wiki/Usecase)

## ๐ŸŒ ERD
![img.png](assets/ERD.png)

## ๐ŸŒ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜

## ๐Ÿค” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒช์€ ๊ณ ๋ฏผ๏น’๋ฐฐ์šด์ 

- **GitHub Actions**์„ ํ™œ์šฉํ•˜์—ฌ CI/CD ๊ตฌ์ถ•
- **Git Submodule**์„ ๋„์ž…ํ•˜์—ฌํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™”
- ์™ธ๋ถ€ ํ˜ธ์ถœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๊ต ๋ฐ ์ ์šฉ
๐Ÿ‘‰ [ํ•ด๋‹น ๋ธ”๋กœ๊ทธ](https://velog.io/@wlsgur1533/RestTemplate-WebClient-FeignClient-%EB%A5%BC-%EB%B9%84%EA%B5%90-OAuth-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%98%88%EC%8B%9C%EB%A1%9C#resttemplate%EC%9D%98-%EC%9E%A5%EC%A0%90)
- Spring Security๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  **์ง์ ‘ OAuth ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„**ํ•˜์—ฌ ์œ ์—ฐ์„ฑ, ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ํ–ฅ์ƒ
๐Ÿ‘‰ [๊ตฌํ˜„ ๊ณผ์ •](https://velog.io/@wlsgur1533/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-%EC%97%86%EC%9D%B4-OAuth-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0)
- MyBatis์—์„œ insert ์„ฑ๊ณต ์‹œ 1์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ž๋™์ฆ๊ฐ€๋œ id๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด **์ƒ์„ฑ๋œ ๊ฐ์ฒด์• ์„œ ๋ฐ˜ํ™˜ํ•œ id**๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉ ๐Ÿ‘‰ [ํ•ด๋‹น ๋ธ”๋กœ๊ทธ](https://velog.io/@wlsgur1533/mybatis%EC%95%BC-%EC%99%9C-insert%ED%95%98%EB%A9%B4-1%EC%9D%84-%EA%BA%BC%EB%82%B4%EC%A3%BC%EB%8B%88)
- ์ด๋ฉ”์ผ ์ธ์ฆ์ด 5์ดˆ ์ด์ƒ ์†Œ์š”๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **์ธ์ฆ๊ณผ ํšŒ์›๊ฐ€์ž…์„ ๋ถ„๋ฆฌ**ํ•˜๊ณ , ์ธ์ฆ ๊ธฐ๋Šฅ์„ **๋น„๋™๊ธฐ๋กœ ๊ฐœ์„ **ํ•˜์—ฌ ์‹ ์†ํ•œ ํšŒ์›๊ฐ€์ž… ๊ฐ€๋Šฅ
- ์ข‹์•„์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ๊ณ ๋ฏผ
- ์ข‹์•„์š”์™€ ์ทจ์†Œ ๊ธฐ๋Šฅ์„ **ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ**(ํ† ๊ธ€ ํ˜•์‹)์—์„œ **๋‘ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌ**ํ•˜์—ฌ
์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ์ฆ๊ฐ€
- ์ข‹์•„์š” ์ทจ์†Œ ์‹œ isFavorite ์นผ๋Ÿผ์„ false๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ๋ถˆํ•„์š”ํ•œ ๋ณด๊ด€์„ ์ƒ๋žตํ•จ์œผ๋กœ์จ DB ์šฉ๋Ÿ‰ ์ ˆ์•ฝ
- ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์— ๋งž๋Š” ๋ ˆ์ด์–ด๋“œ(๊ณ„์ธต) ๋น„๊ต ๋ฐ ์ ์šฉ
๐Ÿ‘‰ [ํ•ด๋‹น ๋ธ”๋กœ๊ทธ](https://velog.io/@wlsgur1533/Mapper-vs-Repository-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%97%91%EC%84%B8%EC%8A%A4-%EA%B3%84%EC%B8%B5-%EB%B9%84%EA%B5%90)