๊ธฐ๊ฐ | 2023.02.22 ~ 2023.02.27 |
---|---|
๋ฐฐํฌ | simple thumbnail |
๋์์ธ | figma |
ํ์๋ก | Team Notion |
์๋ชฝ | ๋งฅ์ค | ์๋ฌ | ์ดํฐ | ์ํจ | ์ฒด๋ค | ํ |
---|---|---|---|---|---|---|
Designer | FrontEnd | FrontEnd | FrontEnd | FrontEnd | FrontEnd | FrontEnd |
๊ธฐ์กด์ ๋์์ธํด์ ๋ค๋ฃจ๊ธฐ ์ด๋ ต๋ค๋ ๋ฌธ์ ๊ฐ ์์ด, ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ธ๋ค์ผ์ ์ ์ ํ๋ ์๋น์ค๊ฐ ํ์ํ์ต๋๋ค.
Target
- ๋์์ธ์ ์ด๋ ค์ํ๊ณ , ์ญ๋์ด ๋ถ์กฑํ ์ฌ๋
- ๊ฐ๋จํ ์ธ๋ค์ผ์ด ํ์ํ ์ฌ๋.
git clone 'https://github.com/Yangjaecheon-Otter-Guardians/simple-thumbnail.git'
npm install
npm start
- TypeScript
- ํ์ ์ ์์ ์ฑ์ ์ด์ฉํ๊ณ ์ ์ฑํํ์์ต๋๋ค.
- React
- ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๋ฉฐ SPA ๊ตฌ์ถํ๋๋ฐ ์ฉ์ดํ์ฌ ์ฑํํ์์ต๋๋ค.
- Tailwind CSS
- ์น ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ํฅ์ ์ํค๊ณ ์ ์ง ๋ณด์๊ฐ ์ฌ์ ์ฑํํ์์ต๋๋ค.
- Recoil
- Preview ์ค์ ๋ด์ฉ์ ์ ์ฅํ๊ธฐ ์ํด ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ์์ต๋๋ค.
- Axios
- HTTP ๋น๋๊ธฐ ํต์ ์ ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- eslint, prettier
- ์ฝ๋ ์ ๋ ฌ ๋ฐ ํจ์จ์ ์ธ ์ ์ง๋ณด์๋ฅผ ์ํด ์ฑํํ์์ต๋๋ค.
- downloadjs, html-to-image
- ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- react-color
- ์ปฌ๋ฌ ํฝ์ปค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- react-toastify
- ๋ค์ํ ์๋ฆผ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- react-icons
- ์ฌ๋ฌ ์์ด์ฝ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- react-helmet-async
- HTML์ head ํ๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
๐ฆfrontend
โฃ ๐public
โฃ ๐src
โ โฃ ๐assets # ๋ฒ๋ค๋ง ๋์ด์ผํ๋ ์์ฐ์ ๋ชจ์๋ ํด๋์
๋๋ค.
โ โฃ ๐atom # recoil์ atom์ ๋ชจ์๋ ํด๋์
๋๋ค.
โ โฃ ๐components # ๋ํ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ๊ฐ ๋ชจ์ฌ์๋ ํด๋์
๋๋ค.
โ โ โฃ ๐common # ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์๋ ํด๋์
๋๋ค.
โ โ โฃ ๐text # ํ
์คํธ ๋ ์ด์์ ๋ฐ ์์ดํ
์ ๋ชจ์๋ ํด๋์
๋๋ค.
โ โฃ ๐constants # ์ ์ญ์ ์ผ๋ก ์ฌ์ฉ๋ ์์๋ฅผ ๋ชจ์๋ ํด๋์
๋๋ค.
โ โฃ ๐features
โ โ โ ๐App.tsx # App ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ์
๋๋ค.
โ โฃ ๐fonts # ํฐํธ ํ์ผ๋ค์ด ๋ชจ์ฌ์๋ ํด๋์
๋๋ค.
โ โฃ ๐sections # ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ํ ์ปดํฌ๋ํธ๊ฐ ๋ชจ์ฌ์๋ ํด๋์
๋๋ค.
โ โฃ ๐styles # module๋ก ์์ฑํ cssํ์ผ์ด ๋ชจ์ฌ์๋ ํด๋์
๋๋ค.
โ โฃ ๐utils # ์ ํธ์ฑ ํจ์๋ฅผ ์ํ ํด๋์
๋๋ค.
โฃ ๐.eslintrc.js
โฃ ๐.gitignore
โฃ ๐.prettierrc
โฃ ๐package-lock.json
โฃ ๐package.json
โฃ ๐README.md
โฃ ๐tailwind.config.js
โ ๐tsconfig.json
0001-4813.mp4
- ์ปจ๋ฒ์ค ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค.
- ๋๋กญ๋ค์ด์ ํตํด
1:1
,4:3
,16:9
๋น์จ๋ก ๋ณ๊ฒฝํ๋๋ก ํ์ต๋๋ค.
- ๋๋กญ๋ค์ด์ ํตํด
- ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค.
- ์์ ๋ฐฐ๊ฒฝ : ํ๋ ํธ์์ ์์์ ์ ํํ๊ฑฐ๋, ๊ทธ๋ผ๋ฐ์ด์ ์ผ๋ก ๋ณ๊ฒฝํ๋๋ก ๊ตฌํํ์ต๋๋ค.
- ์ด๋ฏธ์ง ๋ฐฐ๊ฒฝ : Unsplash api๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋๋คํ๊ฒ ์ ์ฉํ์์ต๋๋ค. ๊ณผ๋ํ api์์ฒญ์ ๋ง๊ธฐ์ํด ๋๋ฐ์ด์ฑ์ ์ถ๊ฐํ์์ต๋๋ค.
- ์ง์ ์ ๋ก๋ : ์ํ๋ ์ฌ์ง์ ์ ๋ก๋ํ์ฌ ๋ณ๊ฒฝํ๋๋ก ๊ตฌํํ์ต๋๋ค.
- ํ
์คํธ๋ฅผ ์
๋ ฅ/์์ ํ๊ณ ์ถ๋ค.
- ์ ๋ ฅ์ฐฝ์ ๋ฌธ๊ตฌ๋ฅผ ์์ฑ/์์ ํ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ๋ฉด์ ๋ฐ์๋๋๋ก ๊ตฌํํ์์ต๋๋ค.
- ํ
์คํธ ๋ ์ด์์์ ์ค์ ํ๊ณ ์ถ๋ค.
- ํ ์คํธ ๊ฐฏ์์ ์๋ง์ ํ ์คํธ ๋ ์ด์์์ Carousel๋ก ๋ณด์ฌ์ค์ผ๋ก์ ์ ํํ๋๋ก ํ์์ต๋๋ค.
- ํ
์คํธ ํฐํธ๋ฅผ ์ค์ ํ๊ณ ์ถ๋ค.
- ๋ชจ๋ ํ ์คํธ์ ์ ์ฉ๋ ํฐํธ๋ฅผ ๋๋กญ๋ค์ด์ผ๋ก ์ ํํ์ฌ ์ ์ฉ๋๋๋ก ๊ตฌํํ์ต๋๋ค.
- ํ
์คํธ ๊ฐ์กฐ(๊ตต๊ธฐ)๋ฅผ ์ ํํ๊ณ ์ถ๋ค.
- ๊ฐ ํ
์คํธ์ ๊ตต๊ธฐ๋ฅผ
๊ตต๊ฒ
,๋ณดํต
,์๊ฒ
์ ๋ฒํผ์ ์ ํํ๋๋ก ํ์์ต๋๋ค.
- ๊ฐ ํ
์คํธ์ ๊ตต๊ธฐ๋ฅผ
- ํฐํธ ์์์ ์ ํํ๊ณ ์ถ๋ค.
- ๊ฐ ํ
์คํธ์ ์ ์ฉ๋ ์์์
ํ๋ ํธ
,ColorPicker
๋ฅผ ํตํด ๋ณ๊ฒฝ๋๋๋ก ๊ตฌํํ์ต๋๋ค.
- ๊ฐ ํ
์คํธ์ ์ ์ฉ๋ ์์์
- ์ธ๋ค์ผ์ ์ ์ฅํ๊ณ ์ถ๋ค.
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋์จ ํ๋ฉด์
downloadjs
์html-to-image
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์๋์ ์ฅํ๋๋ก ๊ตฌํํ์ต๋๋ค. ์ ์ฅํ๋ ์์ ์ด ๊ธธ์ด์ง ๊ฒฝ์ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ก๋ฉ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋์จ ํ๋ฉด์
- ์์
๋ด์ฉ์ ์ด๊ธฐํํ๊ณ ์ถ๋ค.
- ๊ฐ ์ค์ ๋ ๋ชจ๋ recoil๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ ค๋์ ์ด๊ธฐํํ๋๋ก ๊ตฌํํ์ต๋๋ค.
- Github Pages ๋ฐฐํฌ. + ์ปค์คํ
๋๋ฉ์ธ ์ฐ๊ฒฐ (+ main branch์ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ)
- Github Pages workflow๋ฅผ ์์ฑํ์ฌ CI/CD๋ฅผ ๊ตฌ์ถํ์์ต๋๋ค.
- Github Pages๋ก ๋ฐฐํฌ๋ ์ฃผ์๋ฅผ Github Custom Domain์ ์ค์ ํ์์ต๋๋ค.
- ๋ฐ์ํ ์น ์ ์ฉ
-
Mobile
,Tablet
,Desktop
์ผ๋ก ๋๋ ๋ฒ์์ ์ํ๋ ์ฌ์ด์ฆ์ ๋ง๊ฒ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ์ต๋๋ค.
-
- SEO ์ต์ ํ
- metaํ๊ทธ, title, description ๋ฑ์ ์ด์ฉํ์ฌ Open Graph, ๊ตฌ์กฐํ๋ ๋งํฌ์ ์ผ๋ก ๊ตฌํํ์ต๋๋ค.
- Google Search Console์ ํ์ด์ง ๋ฑ๋ก
- ๊ตฌ๊ธ ๊ฒ์ ์์ง์ ์น์ฌ์ดํธ๊ฐ ๊ฒ์๋๋๋ก ๋ฑ๋กํด์ฃผ๊ณ , ๊ตฌ๊ธ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ์ด๋ค์ง๊ณ ์๋์ง ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ๋ ์๊ธฐ์ํด ๋ฑ๋กํ์ต๋๋ค.
- GA(๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค)
- ์น์ฌ์ดํธ๋ก ์ ์ ๋๋ ๋ชจ๋ ๋ฐฉ๋ฌธ์์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ ์ ์ฌ์ฉํ์์ต๋๋ค.
์คํ๋ฆฐํธ ๋ชฉ์
์ด๋ป๊ฒ ํ๋ฉด ์์ผ๋ก ํ์ ์ ๋ ์ ํ ์ ์์์ง ๊ทธ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ
์คํ๋ฆฐํธ ํ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์งํ ๋์์ต๋๋ค.
- ์๊ฐ์ ์ ํ๊ธฐ
- ๊ฐ์์ ์ด์ผ๊ธฐ๋ฅผ ์ฐ๊ธฐ
- ๋์๊ฐ๋ฉฐ ์๊ธฐํ๊ธฐ
- ์ ๊ทน์ ์ผ๋ก ๋ฆฌ์ก์ ํ๊ธฐ
๊ทธ ์ค ์ ๊ทน์ ์ธ ๋ฆฌ์ก์ ์ ํตํด ๋ฐํ์๋ฅผ ํธํ๊ฒ ํ๊ณ , ์๋ก์ด ์๊ฐ๊ณผ ๋ง์ ๊บผ๋ด๋๋ฐ ํฐ ๋์์ด ๋์์ต๋๋ค.
์๋ก์ด ์ฌ๋๋ค๊ณผ ํ์ ํ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ์งํ ํ ๊ฒ์ ํ ์บ๋ฒ์ค ์์ฑ์ด์์ต๋๋ค. ๋จ๊ณ ๋ณ๋ก ์์ ์ ์๊ฐํ๋ฉฐ ๊ฐ๊น์์ง๋ ๊ณผ์ ์ผ๋ก "๋ด๊ฐ ์ด ์ฌ๋๋ค ์์์๋ ๋์น๋ฅผ ๋ณด๋ฉด์ ๋ง ํ ํ์๊ฐ ์๋ค"๋ ์ฌ๋ฆฌ์ ์์ ์ฅ์น๋ฅผ ๋ง๋ จํ ์ ์์์ต๋๋ค.
์ง๋ ๊ทธ๋ฆฌ๊ธฐ
์๋ก์ ์์ด๋์ด๋ฅผ ํ์ฅ ํ๊ณ ๋ฐ์ฐ ํ๊ณ ๊ตฌ์ฒดํ ํ๋ ์๊ฐ
์ข์ ํ์ ์ ์์์ ์๋ก์ ์๊ฐ์ ์ฃผํ์๋ฅผ ๋ง์ถ๋ ๊ฒ์ ๋๋ค. ์๋น์ค์ ๊ถ๊ทน์ ์ธ ๋ชฉ์ ๊ณผ ๋์์ ๋ฐํ์ผ๋ก ์๋ ํด๋ผ์ฐ๋๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ผ๋ฐฉ์ ์ธ ์๊ฒฌ ์ฃผ์ฅ์ด ์๋ ์ด๋ป๊ฒ ํ๋ฉด ~ ํ ์ ์์๊น๋ผ๋ ์ง๋ฌธ๊ณผ ๋ ํผ๋ฐ์ค๋ฅผ ์ด์ฉํ์ฌ ๋ต๋ณํ๋ ๊ฒ์ด ์์ด๋์ด๋ฅผ ๊ตฌ์ฒดํํ๋๋ฐ ๋ง์ ๋์์ด ๋๋ ๊ฒ์ ๋๊ผ์ต๋๋ค.
์ค์ผ์น
๋ฌด์์ด ๋ง๋ ๋ฐฉ๋ฒ์ธ์ง ๋ ผ์๋ฅผ ๊ธธ๊ฒ ์ด์ด๊ฐ๊ธฐ ๋ณด๋ค๋ ์ฐ์ ๊ฐ์์ ์ค์ผ์นํ ์์ด๋์ด๋ฅผ ๋ฐํํจ์ผ๋ก์จ ๋ชจ๋ ์๊ฒฌ์ ๋๋ฝ์์ด ๊ณต์ ํ์์ต๋๋ค.
๊ฒฐ์
์ํ์ ์ธ ํ์ํฌ๋ฅผ ๋ง๋ค๊ธฐ์ํด ๋ฌด์ธ๊ฐ๋ฅผ ์ ์ผ ์ํ๋ ์ฌ๋์ด ์ ์ผ ์ํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ฉฐ ์ด๋ ๊ถ์๋ ์ง๊ธ์ด ์๋๋ผ ์ญํ ์ ์ํํ๋ ๊ฒ์ด๋ผ ์๊ฐํ์ฌ ๊ฒฐ์ ๊ถ์(PL)๋ฅผ ์ ์ ํ์์ต๋๋ค.
์ด๋ก์จ ๊ฒฐ์ ๊ถ์๋ฅผ ํตํด ์ฌ๋ฌ ์๊ฒฌ์ ํ๋๋ก ์ขํ๋๊ฐ ์ ์์์ต๋๋ค. ๋ํ ๊ฒฐ์ ๊ณผ ์ฑ ์์ด ๋ถ๋ช ํ์ง ์์ผ๋ฉด ๋จ์๊ฒ ์ฑ ์์ ๋ฏธ๋ฃจ๊ฑฐ๋ ๋๊ตฐ๊ฐ๊ฐ ๋ ๋จ์ ์ผ๋ก ๊ฒฐ์ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ์์ต๋๋ค.
์ค๊ณ
BDD(behavior driven development)
์ฌ์ฉ์์ ํ๋์ ์ค์ฌ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๋ ๋ฐฉ์