KakaoTalk_20240403_010340235.mp4
<aside> ๐ข FIGGLE์ FIG์ ์ฌ๋ด ์ปค๋ฎค๋ํฐ ์ฑ์ผ๋ก, ์ง์๋ค์ด ์ผ์์ ์ธ ํ์ฌ ์ํ์ ๋ ์ฆ๊ฒ๊ณ ์๋ฏธ ์๋ ๊ฒฝํ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๊ธฐํ๋์์ต๋๋ค. ์ง์๋ค์ ์ํต์ ๊ณต๊ฐ์ด์ ํ์ฌ์ ๋ณต์ง๋ฅผ ๋ ํธํ๊ณ ์ฝ๊ฒ ๋ค๊ฐ๊ฐ ์ ์๋๋ก ํ์ฌ๋ ๊ณ์ ๋ฐ์ ์์ผ๋๊ฐ๊ณ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
Event Page



<aside> โก๏ธ Backend
์ฌ๋ด Event๋ฅผ ์ํ ๋ชจ๋ DB์ค๊ณ๋ฅผ ์ฃผ๋ํ์ต๋๋ค.
Event์ CRUD์ Log ๊ด๋ฆฌ์ ํ์ํ ๋ชจ๋ API๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
Sharp ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ์๋ณธ Image์ Resize๋ Image๋ฅผ S3 Bucket์ ์ ์ฅํ๋ ๋ก์ง์ ๊ฐ๋ฐํ์ต๋๋ค.
</aside>
<aside> โก๏ธ Frontend
Swiper ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Clip path๋ฅผ ํ์ฉํด Slide ๋ฐฐ๋ Component๋ฅผ ๋ง๋ค์์ต๋๋ค.
Event์ ๊ด๋ จ๋ ๋ชจ๋ ํ์ด์ง์ Component๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
React Router Loader๋ก ํ์ด์ง ์ง์ ์ ์กฐํ์๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์์ต๋๋ค.
</aside>
MyPage




<aside> โก๏ธ Backend
์ด๋ฏธ์ง์ ๋น ๋ฅธ ๋ก๋ฉ์ ์ํด ํ๋กํ ์ฌ์ง ๋ฑ๋ก ์ ์ด๋ฏธ์ง Resize ํ S3 Bucket์ ์ ์ฅ์ํค๋ ๋ก์ง ๊ตฌํํ์ต๋๋ค.
</aside>
<aside> โก๏ธ Frontend
Markup์ ํฌํจํ Mypage์ ๋ชจ๋ ๋ถ๋ถ์ ๊ตฌํํ์ต๋๋ค.
๋ง์ ํ์ด์ง์์ ์ฌ์ฉ๋๋ Avatar, ImageAppend, Chip ๋ฑ์ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํด ์์ ๊ธฐ๊ฐ์ ๋จ์ถ์์ผฐ์ต๋๋ค.
React-Query๋ก ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ๋ฉฐ, QueryClient๋ฅผ ํตํด ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํด์ฃผ์์ต๋๋ค.
</aside>
Admin Page
แแ ชแแ งแซ แแ ตแ แ ฉแจ 2024-04-05 แแ ฉแแ ฎ 4.55.38.mov
แแ ชแแ งแซ แแ ตแ แ ฉแจ 2024-04-05 แแ ฉแแ ฎ 5.02.53.mov
<aside> โก๏ธ Backend
์ฌ๋ด ์ด๋ฒคํธ์ ๊ด๋ จ๋ ๋ชจ๋ DB์ค๊ณ๋ฅผ ์ฃผ๋ํ์ต๋๋ค.
๊ด๋ฆฌ์์ ์ฌ์ฉ์๋จ์์ ์ฌ์ฉ๋๋ ์ด๋ฒคํธ ๊ด๋ จ API๋ฅผ ๊ตฌํํ์ต๋๋ค.
Cron์ ํตํด ๋งค์ผ ๋ ์ง๊ฐ ์ง๋ ์ด๋ฒคํธ์ ์นด๋ ์ฌ์ฉ ๋ด์ญ์ ๋จ๊ธฐ๋ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค.
</aside>
<aside> โก๏ธ Frontend ๊ด๋ฆฌ์ ํ์ด์ง๋ฅผ ํผ์ ๊ตฌํํ์ต๋๋ค. (3์ฃผ ์์) Google OAuth๋ฅผ ํตํ ๋ก๊ทธ์ธ์ ๊ตฌํํ์ต๋๋ค. Url Parameter๋ฅผ ํ์ฉํด Modal์ด ์ด๋ฆฐ ํ์ด์ง๋ก์ ์ด๋ ๋ฐ ๋ก๊ทธ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. framer-motion์ ์ด์ฉํด ์ด๋ฏธ์ง Hover ์์ ํ๋ ๊ธฐ๋ฅ ๋ฐ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. dnd-kit์ ์ด์ฉํด ์ด๋ฏธ์ง ์์๋ฅผ ๋ณ๊ฒฝํด ๊ด๋ฆฌ์์ ํธ์์ฑ์ ์ฆ๊ฐ์์ผฐ์ต๋๋ค.
</aside>
Etc


<aside> โก๏ธ Backend
Fcm๋ฅผ ์ด์ฉํ Push์๋ฆผ๊ณผ Notification ๊ตฌํํด ์ฌ์ฉ์์ ํธ์์ฑ๊ณผ ์ฐธ์ฌ์จ์ ์ฆ์ง์์ผฐ์ต๋๋ค.
Jenkins Docker Image๋ฅผ ํ์ฉํด CI/CD๋ฅผ ๊ตฌ์ถ, ํ ์คํธ์ ๋ฐฐํฌ ์๊ฐ ๋ฐ ์ ์ฒด์ ์ธ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ๋จ์ถ์์ผฐ์ต๋๋ค.
</aside>
<aside> โก๏ธ Frontend
PWA ์ธํ ๊ณผ Service Worker Custom ์์ ์ ์งํํ์์ต๋๋ค. Device token ๋ฐ๊ธ ๋ฐ Push ์๋ฆผ์ ๊ตฌํํ์ต๋๋ค.
</aside>
FIGGLE ํ๋ก์ ํธ๋ ํ์ ์ฃผ๋ ์๋ ์์๋์์ง๋ง, ์ด๊ธฐ์๋ ์์์น ๋ชปํ ๊ธฐ์ ์ ์ธ ์ด๋ ค์์ ์ง๋ฉดํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ด๋ธ๋ฆฌ๋ ์ฑ์ ๊ฐ๋ฐํ๋ ค๊ณ ํ์ผ๋ Apple์ ์ ์ฑ ์ผ๋ก ์ธํด ๋น๊ณต๊ฐ ์ฑ์ ์คํ ์ด์ ์ฌ๋ฆด ์ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ฌ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์์ ์ฐ๋ฆฌ๋ ๋์์ ๋ชจ์ํ๊ธฐ ์์ํ๊ณ , ๊ฒฐ๊ตญ PWA(Progressive Web Application)๋ฅผ ์ ํํ๊ฒ ๋์์ต๋๋ค. ํ์ง๋ง PWA์ ๋ํ ์ ๋ณด๊ฐ ๋ถ์กฑํ๊ธฐ์ ์ฝ๋ฉ๋ณด๋ค๋ PWA์ ๊ธฐ์ ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ํ์ตํ๋ ๋ฐ ์๊ฐ์ ๋ง์ด ํ ์ ํ์ต๋๋ค.
๋ํ, Push ์๋ฆผ์ ๋ถ์ฌ๋ ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ ๋ค๋ฅธ ์ค๋ํ ๋ฌธ์ ์์ต๋๋ค. ํนํ iOS์์ PWA์ Push ์๋ฆผ์ ์ง์ํ์ง ์๋๋ค๋ ์ฌ์ค์ ์๊ฒ๋์์ ๋, ์ ํฌ ํ์ ํฐ ์ข์ ๊ฐ์ ๋๊ผ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ํฌ๊ธฐํ์ง ์๊ณ , ๋์ ๋ค์ํ ์๋ฃจ์ ์ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค. ์ฝ๋ฉ๋ณด๋ค๋ ๊ธฐ์กด์ Push ์๋ฆผ์ ๋์ฒดํ๋ ๋ฐฉ๋ฒ์ ์ง์คํ๊ณ , ์ด๋ฌํ ๊ณผ์ ์์ ์๋ก์ด ๊ธฐ์ ์ ์ต๋ํ๊ณ ์ ์ฉํ๋ ๊ฒ์ ๋ํ ๊ธฐํ๋ฅผ ๊ฐ์ก์ต๋๋ค.
FIGGLE ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์๋ก์ด ๊ธฐ์ ์ ๋์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์ ๋ ์ง์์ ํ์ฅํ๊ณ ์ค๋ ฅ์ ํฅ์์ํฌ ์ ์๋ ๊ธฐํ๋ฅผ ๊ฐ์ก์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ, ์๋น์ค๋ฅผ Develop ์ํค๊ธฐ ์ํด ํ์๋ค๊ณผ ํ๋ ฅํ๊ณ ์๊ฒฌ์ ๋ด๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์์์น ๋ชปํ ์ํฉ์ ์ง๋ฉดํ์ ๋๋ ํ์๋ค๊ณผ ํจ๊ป ํด๊ฒฐ์ฑ ์ ์ฐพ์๋ด๋ ๊ณผ์ ์์ ์ ์ ๋ฆฌ๋์ญ๊ณผ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ํฅ์์ํฌ ์ ์์์ต๋๋ค. ์ด๋ฐ ๊ฒฝํ๋ค์ด ์ ๋ฅผ ๋์ฑ ๊ฐ์ธํ๊ณ ์ฑ์ํ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ๊ฒ ํด์ค ๊ฒ ๊ฐ์ต๋๋ค.
FIGGLE ํ๋ก์ ํธ๋ ๊ทธ ์ด๋ค ๊ฒ๋ณด๋ค๋ ์ ์๊ฒ ์์คํ ํ๋ก์ ํธ์ ๋๋ค. ์ด ๊ฒฝํ์ ํตํด ์ ์ค๋ ฅ๊ณผ ์์ธ์ ๋ํด ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๋๋ ์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.