๋ง์์์ผ๋ก๋ง ์๊ฐํ ์ต๊ด์ 1์ฃผ์ผ๋ง์ด๋ผ๋ ์ง์ผ๋ธ๋ค๋ฉด ์ด๋ฏธ ์ด ์ต๊ด์ ๋น์ ์ ๊ฒ!
"๊ทธ๊ฑฐํ๋ฅ?"์ผ๋ก ์ต๊ด ๋ง๋ค๊ธฐ๋ฅผ ์์ํด๋ณด์ธ์!
- ์ฌ์ฉ ์์
- ๋๊ธฐ
- ํ๋ก์ ํธ ๊ธฐ๊ฐ
- ํ๋ก์ ํธ ๊ธฐ๊ฐ ๋์์ ๊ณ ๋ฏผ ์ผ๊ธฐ
- ๊ธฐ์ ์คํ
- ์คํ ๋ฐฉ๋ฒ
- ํ๊ฒฝ๋ณ์ ์ค์ ๋ถ๋ถ
- ๊ธฐ๋ฅ
- ๊ธฐ์ ์คํ ์ฌ์ฉ ์๊ฐ
- ์๊ฐ
์ต๊ด ๋ง๋ค๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง ์คํํ๋๊ฒ ๊ฑฐ์ ์๋ J๊ฐ์ง ์์ J์ธ ๋๋ฅผ ์ํด
- โ์ค๋์ ๊ผญ ์ผ์ฐ ์ผ์ด๋์ ์ด๋๊ฐ์ผ์งโ, โ์ค๋์ ๋ฌผ 800ml ์ ๋๋ ๊ผญ ๋ง์
์ผ์งโ
์ ๊ฐ ์ ์ผ ๋ง์์์ผ๋ก ๋ง์ด ๋๋์ด๋ ๊ฒฐ์ฌ๋ค์ด์์ต๋๋ค. ํ์ง๋ง, ์๊ฐ๋ง ํ๋ ๊ฒ์ผ๋ก๋ ์ ์ง์ผ์ง์ง ์์๋ ์ ๊ฒฝํ์ ๋์ด๋ ค์, ์ฌ์ํ ์ต๊ด์ด๋ผ๋ ๊พธ์คํ ์งํค๊ฒ ํด์ค ์ ์๋ ๋ง์๊ฐ์ง์ ๋ง๋ค์ด ์ค ์ ์๋ Habit Tracker ์ดํ์ ๋ง๋ค์ด๋ณด๊ณ ์ถ์์ต๋๋ค.
- โ์์์ด ๋ฐ์ด๋คโ๋ผ๋ ๋ง์ฒ๋ผ, ์ผ์ฃผ์ผ์ ์๊ฐ๋์์ด๋ผ๋ ๊พธ์คํ๊ฒ ๋ณธ์ธ์ด ๋ง๋ค์ด๋ณด๊ณ ์ถ์๋ ์ต๊ด์ ์ฌ๋ฏธ์๊ฒ ๋ง๋ค์ด๋ณผ ์ ์๊ฒ ํ๊ณ ์ถ์๊ณ , (๋น๋ก ์ ๋ง ์์ง๋ง..) ์ ๊ฐ ์ข์ํ๋ ๊ณ ์์ด์ ์ํ๋ฅผ ๋ณํ์ํค๋ ์ฌ๋ฏธ๋ฅผ ๋๊ปด๋ณด์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
1์ฃผ์ฐจ (02.21 ~ 02.26) - ์ค๋น
- ์์ด๋์ด ๊ธฐํ ๋ฐ ๊ธฐ์ ์คํ ์ ์ ๋ฐ ๊ฒํ
- ๋ชฉ์ , ์คํค๋ง, ํ์คํฌ ์นด๋ ์์ฑ
- git repository ์์ฑ ๋ฐ ์ด๊ธฐ ํด๋๊ตฌ์กฐ ์ ํ
2์ฃผ์ฐจ (02.27 ~ 03.05) - ๊ฐ๋ฐ
- ๋ก๊ทธ์ธ ํ๋ฉด ๋ฐ ๊ด๋ จ ๋ฐฑ์๋ ์์
- ๋ฉ์ธํ๋ฉด, ์ต๊ด ์ข ๋ฃ๋ ํ๋ฉด ๋ ๋๋ง ๋ฐ ๊ด๋ จ ๋ฐฑ์๋ ์์
3์ฃผ์ฐจ (03.06 ~ 03.11) - ๊ฐ๋ฐ ๋ฐ ๋ง๋ฌด๋ฆฌ
- ๋ง์ดํ์ด์ง ํ๋ฉด ๋ ๋๋ง ๋ฐ ๋ฐฑ์๋ ์์
- ๋ฆฌํฉํ ๋ง
- ๋ฐฐํฌ ๋ฐ ํ ์คํธ ์ฝ๋ ์์ฑ
- 2์ 21์ผ ~ 23์ผ (1์ฃผ์ฐจ ์ ~ ์์์ผ) : ํ๋ก์ ํธ ๊ธฐํ ๋ฐ asset์ ๋ํ ๊ณ ๋ฏผ
- ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ํด ์ฒ์์ผ๋ก ๊ธฐํํ๊ฒ ๋์์ ๋, ์ ๊ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ๊ธฐ๋ฅ์ด ๋ง๊ฑฐ๋ css ์ ์ผ๋ก ๋ ๋ค์ํ ๊ฒ์ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์์ต๋๋ค. ํด๋ณด๊ณ ์ถ์๋ ๊ฒ์ ํ๋ก์ ํธ๋ก ๋ง๋ค๋ค ๋ณด๋ ์กฐ๊ธ ๋ ์ ์ ์ด ๊ฐ๊ฒ ๋์๊ณ , ์ ๊ฐ ์ํ๋ ์ปจ์
์ ๋ง๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ณ ์ถ์ด์ ์๊ฐ์ด ๋ค์ ๊ฑธ๋ฆฌ๋๋ผ๋, ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ค์ ์ ๊ฐ ์ง์ ๊ทธ๋ ค ๊ตฌํํ๊ธฐ๋ก ํ์์ต๋๋ค.
- ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ํด ์ฒ์์ผ๋ก ๊ธฐํํ๊ฒ ๋์์ ๋, ์ ๊ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ๊ธฐ๋ฅ์ด ๋ง๊ฑฐ๋ css ์ ์ผ๋ก ๋ ๋ค์ํ ๊ฒ์ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์์ต๋๋ค. ํด๋ณด๊ณ ์ถ์๋ ๊ฒ์ ํ๋ก์ ํธ๋ก ๋ง๋ค๋ค ๋ณด๋ ์กฐ๊ธ ๋ ์ ์ ์ด ๊ฐ๊ฒ ๋์๊ณ , ์ ๊ฐ ์ํ๋ ์ปจ์
์ ๋ง๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ณ ์ถ์ด์ ์๊ฐ์ด ๋ค์ ๊ฑธ๋ฆฌ๋๋ผ๋, ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ค์ ์ ๊ฐ ์ง์ ๊ทธ๋ ค ๊ตฌํํ๊ธฐ๋ก ํ์์ต๋๋ค.
- 2์ 24์ผ (1์ฃผ์ฐจ ๋ชฉ์์ผ) : ์ ์ญ์ํ ๊ด๋ฆฌ์ ๋ํ ๊ณ ๋ฏผ
- ์ ์ ์ ๋ณด์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ์ญ์ํ๊ฐ ํ์ํ์ต๋๋ค. ์ฒ์์๋ ๋ง์ฐํ๊ฒ ๊ฐ๋ณ๊ฒ๋ผ๋ ์ ์ญ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ผ๋, ์ ์ ์ ๋ณด๋ฅผ ์ํด ๊ตณ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋ ๊ฒ ๊ฐ์, useContext๋ก ์ ์ญ์ํ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ๋ก ํ์์ต๋๋ค. useContext์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์, ์ด ๋ ๊ฒฝ์ฐ์๋ง ๋ณํ๊ธฐ ๋๋ฌธ์ ํฐ ์ฉ๋์ ์ ์ญ์ํ ๊ด๋ฆฌ ํด์ ์ฌ์ฉํ์ง ์์๋ ๋ ๊ฒ์ด๋ผ ํ๋จํ์์ต๋๋ค.
- ์ ์ ์ ๋ณด์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ์ญ์ํ๊ฐ ํ์ํ์ต๋๋ค. ์ฒ์์๋ ๋ง์ฐํ๊ฒ ๊ฐ๋ณ๊ฒ๋ผ๋ ์ ์ญ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ผ๋, ์ ์ ์ ๋ณด๋ฅผ ์ํด ๊ตณ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋ ๊ฒ ๊ฐ์, useContext๋ก ์ ์ญ์ํ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ๋ก ํ์์ต๋๋ค. useContext์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์, ์ด ๋ ๊ฒฝ์ฐ์๋ง ๋ณํ๊ธฐ ๋๋ฌธ์ ํฐ ์ฉ๋์ ์ ์ญ์ํ ๊ด๋ฆฌ ํด์ ์ฌ์ฉํ์ง ์์๋ ๋ ๊ฒ์ด๋ผ ํ๋จํ์์ต๋๋ค.
- 2์ 26์ผ (1์ฃผ์ฐจ ํ ์์ผ) : useQuery ์๋ฌ ์ฒ๋ฆฌ์ ๋ํ ๊ณ ๋ฏผ
- useQuery์ฒ๋ฆฌ ์๋ฌ ๋ฐ์ ์ดํ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ ์ง์ ๋ํด ๊ณ ๋ฏผํ์๋๋ฐ ์ฒซ๋ฒ์งธ๋ก ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ ์๋ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๋ด๋ถ์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ํน์ try again๋ฒํผ์ ๋ง๋ค์ด์ ๋ค์ query๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ํ์์ต๋๋ค. ํ์ง๋ง, suspense์ ๊ด๋ จ๋ ์์
๊ณผ fallbackRender์ ๋ค์ด๊ฐ์ผํ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ทธ๋ ค์ฃผ์์ผ๋ ๊ณ์ํด์ ์๋ฌ๊ฐ ๋ฌ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์ ์๋๋ก์ด๋์์ ๊ตฌํ ๊ฐ๋ฅํ Toast ์๋์ผ๋ก ์๋ฌ์ ๊ด๋ จ๋ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ์๋ ํ ์คํธ ์๋์ผ๋ก ๋ฐ์ ์ ์๊ณ , ๋ค์ query๋ฅผ ์๋ํด๋ณผ ์ ์๊ฒ ๋ฉ๋๋ค. suspense๊ฐ ์์ง์ ์คํ์ ์ธ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์, useQuery์ isLoading ๋ฐ isError, useMutation์ onError ๋ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ฒฐ์ ํ์์ต๋๋ค.
- useQuery์ฒ๋ฆฌ ์๋ฌ ๋ฐ์ ์ดํ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ ์ง์ ๋ํด ๊ณ ๋ฏผํ์๋๋ฐ ์ฒซ๋ฒ์งธ๋ก ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ ์๋ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๋ด๋ถ์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ํน์ try again๋ฒํผ์ ๋ง๋ค์ด์ ๋ค์ query๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ํ์์ต๋๋ค. ํ์ง๋ง, suspense์ ๊ด๋ จ๋ ์์
๊ณผ fallbackRender์ ๋ค์ด๊ฐ์ผํ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ทธ๋ ค์ฃผ์์ผ๋ ๊ณ์ํด์ ์๋ฌ๊ฐ ๋ฌ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์ ์๋๋ก์ด๋์์ ๊ตฌํ ๊ฐ๋ฅํ Toast ์๋์ผ๋ก ์๋ฌ์ ๊ด๋ จ๋ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ์๋ ํ ์คํธ ์๋์ผ๋ก ๋ฐ์ ์ ์๊ณ , ๋ค์ query๋ฅผ ์๋ํด๋ณผ ์ ์๊ฒ ๋ฉ๋๋ค. suspense๊ฐ ์์ง์ ์คํ์ ์ธ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์, useQuery์ isLoading ๋ฐ isError, useMutation์ onError ๋ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ฒฐ์ ํ์์ต๋๋ค.
- 3์ 4์ผ (2์ฃผ์ฐจ ๊ธ์์ผ) : ์๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ํ ๊ณ ๋ฏผ
- ์๋ฒ์๋ ISO์ ๋ง๊ฒ ์ ์ฅ์ ํ๋๋ฐ ํด๋ผ์ด์ธํธ๋ก ๋ถ๋ฌ์ฌ ๋ ๋ก์ปฌ์๊ฐ์ ๋ง๊ฒ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋์์ต๋๋ค. ๊ทธ๋์ ์ฐ์ ์ ์๋ฒ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ ISO ๊ธฐ์ค์ผ๋ก ์ ์ฅํด์ฃผ๊ณ , ํ๋ฉด์์ ์ข
๋ฃ์์ ์ ๋ํ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํด์ค๋, getTimeOffsetZone ๋ฉ์๋๋ฅผ ๊ธฐ์ค์ผ๋ก UTC์ ๋ก์ปฌ ์ฌ์ด์ ์๊ฐ์ฐจ๋ฅผ ๋ฐํ์ผ๋ก UTC์ ๋ก์ปฌํ์์ ์ผ์๋ฅผ ๊ณ์ฐํ์ฌ ์ ๋ฆฌํ๊ธฐ๋ก ํ์์ต๋๋ค. ์ต๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํด๋ณด๊ณ ์ ์ฝ๋๊ฐ ์ ๋๋์ง ์์๋๋ฐ, ์ด ์ธ์๋ ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ time zone ์ฝ๋ฉ์ ๋ํด ์ ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
- ์๋ฒ์๋ ISO์ ๋ง๊ฒ ์ ์ฅ์ ํ๋๋ฐ ํด๋ผ์ด์ธํธ๋ก ๋ถ๋ฌ์ฌ ๋ ๋ก์ปฌ์๊ฐ์ ๋ง๊ฒ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋์์ต๋๋ค. ๊ทธ๋์ ์ฐ์ ์ ์๋ฒ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ ISO ๊ธฐ์ค์ผ๋ก ์ ์ฅํด์ฃผ๊ณ , ํ๋ฉด์์ ์ข
๋ฃ์์ ์ ๋ํ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํด์ค๋, getTimeOffsetZone ๋ฉ์๋๋ฅผ ๊ธฐ์ค์ผ๋ก UTC์ ๋ก์ปฌ ์ฌ์ด์ ์๊ฐ์ฐจ๋ฅผ ๋ฐํ์ผ๋ก UTC์ ๋ก์ปฌํ์์ ์ผ์๋ฅผ ๊ณ์ฐํ์ฌ ์ ๋ฆฌํ๊ธฐ๋ก ํ์์ต๋๋ค. ์ต๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํด๋ณด๊ณ ์ ์ฝ๋๊ฐ ์ ๋๋์ง ์์๋๋ฐ, ์ด ์ธ์๋ ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ time zone ์ฝ๋ฉ์ ๋ํด ์ ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
- 3์ 10์ผ ~ 11์ผ (3์ฃผ์ฐจ ์ ~ ๋ชฉ์์ผ) : ๋ฐฐํฌ์ ๋ํ ๊ณ ๋ฏผ
- expo start, expo publish, expo start --no-dev๋ก ์คํํ์์ ๋์๋ ๋ฐ์ํ์ง ์์๋ ๋ก๊ทธ์ธ ์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค. apk ํ์ผ์ ํตํด ์ง์ ์ค์น ํ ์งํํ์ ๋, ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ผ๋ก ๋ค์ด๊ฐ ์ ์์์ผ๋, ๊ตฌ๊ธ ๊ณ์ ์ ํํ ๋ค์ ๋ก๊ทธ์ธ ํ๋ฉด์ด ๋ ๋๋ง ๋๋ ๊ฒ์ด ๋ฐ๋ณต๋์์ต๋๋ค. ์๋ฌด๋ฆฌ ์ฐพ์๋ ์์ธ์ ๋ํด์ ํ์ ํ ์ ์์ด์ ๊ณต์๋ฌธ์ ๋ฐ stackoverflow๋ฅผ ๋ค์ ธ๋ณด์๊ณ , ๊ณต์๋ฌธ์์ ์ ํ์๋ provider/google ๋ด ๋ฉ์๋ ๋ช ์ด ์๋ชป ๋์๊ณ , ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์์ต๋๋ค. ๋ํ, expo ์ฌ์ดํธ ๋ด ํ๊ฒฝ๋ณ์ ์ง์ ๋ฐ eas cli ์ค์น ๋ฑ ๋ค์ํ ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ฑ๊ณต์ ์ผ๋ก buildํ ์ ์์์ต๋๋ค. ๊ณต์๋ฌธ์๊ฐ ์ค์ํ ๊ธฐ์ค์ ์ด ๋๊ธด ํ์ง๋ง, ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ์์ ๋๋ ๋ค์ํ ๊ฒ์ ๋ฐ ์ ๊ทผ์ ํตํด ํด๊ฒฐํด์ผ ํ๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
- React Native
- React Query
- Expo-cli
- Emotion
- Node.js
- Express
- MongoDB
- Google Oauth 2.0
- JWT
- Elastic Beanstalk(๋ฐฐํฌ)
- ํ๋ก ํธ์๋ : jest, enzyme
- ๋ฐฑ์๋ : mocha, chai, supertest
client๋ฅผ ๊ธฐ๊ธฐ์์ ์คํํ๊ธฐ ์ํด์, ์๋ฒ๊ฐ ์ฌ์ฉํ๋ ์์ดํ์ด์ ๊ธฐ๊ธฐ๊ฐ ์ฌ์ฉํ๋ ์์ดํ์ด๊ฐ ๋์ผํด์ผ ํฉ๋๋ค.
git clone https://github.com/didYouDoThat/didYouDoThat-Client.git
npm install
npm start // expo start
git clone https://github.com/didYouDoThat/didYouDoThat-Server.git
npm install
npm start // npm run dev (development ๋ฒ์ )
SERVER_URI=http://<YOUR_WIFI_IP_ADDRESS>:8000/
GOOGLE_EXPO_CLIENT_ID=<YOUR_GOOGLE_CLOUD_CREDENTIAL_KEY_OF_WEB_APP>
GOOGLE_IOS_CLIENT_ID=<YOUR_GOOGLE_CLOUD_CREDENTIAL_KEY_OF_IOS>
GOOGLE_ANDROID_CLIENT_ID=<YOUR_GOOGLE_CLOUD_CREDENTIAL_KEY_OF_ANDROID>
MONGO_DB_URI=<YOUR_MONGO_DB_URI>
GOOGLE_CLIENT_ID=<YOUR_GOOGLE_CLOUD_CREDENTIAL_KEY_OF_WEB_APP>
SECRET_KEY=<YOUR_JWT_TOKEN_SECRET_KEY>
- ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ํตํด ๋ก๊ทธ์ธ ํ ํ์๋ง ์ดํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ก๊ทธ์ธ์ ํ ํ ๋ก๊ทธ์์์ ํ์ง ์๋๋ค๋ฉด, ํด๋น ์ฑ์ ๊ฐ์ ์ข ๋ฃ์ํค๋๋ผ๋ ๋ก๊ทธ์ธ์ด ์ ์ง๋ฉ๋๋ค.
- ํ๋จ ํญ ๋ฉ๋ด์์๋ ๋ฉ์ธ ํ๋ฉด์ผ๋ก ์ฌ ์ ์๋ ๋ฉ์ธ๋ฒํผ, ์๋ก์ด ์ต๊ด์ ๋ง๋ค ์ ์๋ ๋ฒํผ, ๊ทธ๋ฆฌ๊ณ ๋ง์ดํ์ด์ง๋ก ๊ฐ ์ ์๋ ๋ฒํผ ์ด 3๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค. (๋งจ ์ฒ์ ๋ํ๋๋ ํ๋ฉด์ ๋ฉ์ธ ๋ฒํผ ํด๋ฆญ์ ๋์ค๋ ๋ฉ์ธ ํ๋ฉด์ ๋๋ค)
- ํ์ฌ ์ผ์๋ฅผ ํ์ํด์ฃผ๋ ๋ ์ง ์์ญ์ด ์์ต๋๋ค.
- ํ์ฌ ์ผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์งํํ๊ณ ์๋ ์ต๊ด ๋ฆฌ์คํธ๋ค ํน์ ์ด์ ์ผ์ ๊ธฐ์ค์ผ๋ก ์ข ๋ฃ๋ ์ต๊ด๋ค์ด ๋ํ๋ฉ๋๋ค.
- ๋งค ์ต๊ด์ ๋งค์ผ 00์ ๊ธฐ์ค์ผ๋ก ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉฐ, ์ ๋ ์ต๊ด์ ์ํํ๋ค๊ณ ํ์ํ ๊ฒ๋ค๋ ๋ชจ๋ ๋ฆฌ์ ๋ฉ๋๋ค.
- ์์ง ์ข ๋ฃ๋์ง ์์ ์ต๊ด๋ค์ ํด๋ฆญํ๋ฉด(์งํํ๋ค๋ ํ์) ํด๋น ์ต๊ด์ ์ ๋ชฉ์์ญ์ ๋นจ๊ฐ ์ค์ด ๊ทธ์ด์ง๋ฉฐ, ํ๋จ์ ํํธ ๊ฐ์๊ฐ 1 ์ฆ๊ฐํ๊ณ , ์ด์ ๋ฐ๋ผ ํด๋น ์ต๊ด์ ๊ณ ์์ด์ด๋ฏธ์ง๊ฐ ๋ณํฉ๋๋ค.
- ๋ฐ๋๋ก ์ด๋ฏธ ์งํํ๋ค๊ณ ํ์ํ, ์ข ๋ฃ๋์ง ์์ ์ต๊ด๋ค์ ํด๋ฆญํ๋ฉด ํด๋น ์ต๊ด์ด ์ํ๋์ง ์์ ์ํ๋ก ๋ค์ ๋์์ค๊ฒ ๋ฉ๋๋ค.
- ์ข ๋ฃ๋ ์ต๊ด์ ํด๋ฆญํ๊ฒ ๋๋ฉด, ์ต๊ด์ ๋ํ ๊ฒฐ๊ณผํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
- ์ต๊ด ์ปดํฌ๋ํธ๋ฅผ ์ผ์ชฝ์ผ๋ก ์ค์์ดํํ๊ฒ ๋๋ฉด, ํ์ฌ๊น์ง ํด๋น ์ต๊ด์ ์ธ์ ์ดํํ๋์ง ์ฒดํฌํ๊ฑฐ๋, ์ต๊ด์ ์ญ์ ํ ์ ์๋ ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค.
- ํ๋ฉด ์ค๋ฅธ์ชฝ ๋ฐ์ ์์ฃผ ๋ฌผ์ ๋ฒํ ์ง๋ฌธ์ ํ๋ฒ์ ๋ชจ์์ ๋ณผ ์ ์๋ ํ๋ฉด์ ๋จ๊ฒ ํ๋ ๋ฒํผ์ด ์์ต๋๋ค.
- ํ๋จ ํญ ๋ฉ๋ด์ ์๋ก์ด ์ต๊ด์ ์์ฑํ๋ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด, ์๋ก์ด ์ต๊ด์ ๋ง๋๋ ๋ชจ๋ฌ์ด ๋ํ๋ฉ๋๋ค.
- ๋ชจ๋ฌ์ ํตํด ์ต๊ด์ ์ ๋ชฉ์ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ต๋ 20์๊น์ง ์ง์ ๊ฐ๋ฅํฉ๋๋ค.
- ์๋ก์ด ์ต๊ด์ ๋ง๋๋ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด, ํด๋น ์ต๊ด์ ํด๋นํ๋ ๊ณ ์์ด๊ฐ ๋ฐฐ์ ๋๋ฉฐ, ๋ง๊ฐ๊ธฐํ์ ์๋์ผ๋ก ์ผ์ฃผ์ผ ๋ค๋ก ์์ฑ๋๊ณ , ๋ฉ์ธ ํ๋ฉด์ผ๋ก ๋์๊ฐ๋ ๋ฒํผ์ ํตํด ํด๋น ํ์ด์ง๋ฅผ ๋น ์ ธ๋์ค๊ฒ ๋ฉ๋๋ค.
- ํ์ฑํ๋ ์ต๊ด์ด 5๊ฐ์ธ ๊ฒฝ์ฐ, ์ถ๊ฐ์ ์ธ ์ต๊ด์ ์์ฑํ ์ ์๊ฒ ๋ฉ๋๋ค.
- ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ ์ ๊ตฌ๊ธ ๊ณ์ ๋ด user ์ด๋ฆ์ด ๋ ธ์ถ๋ฉ๋๋ค.
- ๋ก๊ทธ์์ ๋ฒํผ, ๊ทธ๋ฆฌ๊ณ ๋งค์ผ 10์ ์ฃผ๊ธฐ์ ์ผ๋ก ์๋์ ๋ฐ์ ์ ์๋ ์๋ ๋ฐ๊ธฐ ๋ฒํผ์ด ์์ต๋๋ค.
- ์๋ ๋ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด ๋ชจ๋ฌ์ฐฝ์ ํตํด ์ต์ข ์ ์ผ๋ก ์๋์ ๋ฐ์ ์ ์๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ฉฐ, ์๋ฆผ์ ๋ฐ์ ์ํ์ ์ ์ ๋ผ๋ฉด, ์๋ ๋ฐ๊ธฐ ๋ฒํผ์ ์๋ ๋ฐ์ง ์๊ธฐ ๋ฒํผ์ผ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
- ์๋์ ๋ฐ์ ํ ์๋ ๋๊ธฐ๋ฅผ ํฌ๋งํ๋ ๊ฒฝ์ฐ, ๋ง์ดํ์ด์ง ๋ด ์๋ ๋ฐ์ง ์๊ธฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋์ผํ ๊ณผ์ ์ผ๋ก ํด์ ํ ์ ์์ต๋๋ค.
- ํ์ฌ๊น์ง ๋ง๋ ์ต๊ด๋ค ์ค ์ข
๋ฃ๋ ์ต๊ด๋ค๋ง ๋ฐ๋ก ๋ณผ ์ ์๋ ์์ญ์ด ์์ต๋๋ค.
- ์ข ๋ฃ๋ ์ต๊ด๋ค์ด ์๋ค๋ฉด, ๋น ํ๋ฉด ๋ด ๋์ฒด ์ด๋ฏธ์ง์ ํ ์คํธ๊ฐ ๋ํ๋ฉ๋๋ค.
- ์ข ๋ฃ๋ ์ต๊ด๋ค์ ์ฑ๊ณตํ ์ต๊ด๋ค (์ผ์ฃผ์ผ ๋์ ๋ชจ๋ ์คํ ํ๋ ์ต๊ด)๊ณผ ์คํจํ ์ต๊ด๋ค (์ผ์ฃผ์ผ๋์ ํ๋ฃจ๋ผ๋ ์ํํ์ง ์์๋ ์ต๊ด๋ค)์ ๋ฐ๋ก ๋ชจ์๋ ์ฑ๊ณตํญ, ์คํจํญ์ผ๋ก ๊ตฌ๋ถ๋์ด์ง๋๋ค.
- ๊ฐ ํญ๋ณ๋ก 5๊ฐ์ฉ ๋ ๋๋ง๋๋ฉฐ, 5๊ฐ๋ณด๋ค ๋ ๋ง์ ์ต๊ด๋ค์ด ์๋ ๊ฒฝ์ฐ, ๋ฌดํ์คํฌ๋กค๋ก ์ธํด ๊ณ์ํด์ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ฐ ํญ๋ณ ๋ด์๋ ๊ฒ์์ฐฝ์ด ์๊ณ , ๊ฒ์์ฐฝ์ ํตํด ์ข ๋ฃ๋ ์ต๊ด๋ค์ ์ต๊ด ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๊ฐ ์ข ๋ฃ๋ ์ต๊ด๋ค์ ํด๋ฆญํ๊ฒ ๋๋ฉด, ์ต๊ด์ ๋ํ ๊ฒฐ๊ณผํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
- ๊ฒฐ๊ณผ ํ์ด์ง๋ ๊ฐ ์ต๊ด๋ค์ ์ดํ์ ๋๋ฅผ ๋ํ๋ด์ฃผ๋ ํ์ด์ง ์ ๋๋ค.
- ์ฑ๊ณต ๊ฒฐ๊ณผํ์ด์ง๋ ๊ฒฐ๊ณผ๋ด์ฉ๊ณผ ํจ๊ป ์บก์ณํ๊ธฐ ๋ฒํผ, ๋์๊ฐ๊ธฐ ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค.
- ์บก์ณํ๊ธฐ ๋ฒํผ์ ํตํด ๊ฒฐ๊ณผํ์ด์ง๋ฅผ ์บก์ณํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ SNS์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ์คํจ ๊ฒฐ๊ณผํ์ด์ง๋ ๊ฒฐ๊ณผ๋ด์ฉ๊ณผ ํจ๊ป ๋ค์ ๋ง๋ค๊ธฐ ๋ฒํผ, ๋์๊ฐ๊ธฐ ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค.
- ๋ค์ ๋ง๋ค๊ธฐ ๋ฒํผ์ ํตํด ํด๋น ์ต๊ด์ ๋์ผํ ์ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ต๊ด์ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ๊น์ง ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ง ๊ตฌํํด๋ณด์๊ณ , ๋ง์ฐํ๊ฒ ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํด์ผ ๊ฒ ๋ค๋ ์๊ฐ์ ํ์์ต๋๋ค. ํ์ง๋ง, ์ค์ ์ฌ์ฉํ๋ฉด์ ๋๊ผ๋ ์ ์ ๋ฆฌ์กํธ์ ๋น์ทํ์ง๋ง ๋น์ทํ์ง ์์ ๋ถ๋ถ๋ค์ด ๋ง์๋ค๋ ์ ์ ๋๋ค.
react์์๋ route๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ํ์ง๋ง, react-native์์๋ screen๋ณ ์ด๋์ ํ๊ธฐ ์ํด, navigation์ ์ด์ฉํด์ผ ํ๋ ์ ์ด ์๋กญ๊ฒ ๋ค๊ฐ์์ต๋๋ค. screen์ ํตํด์ ์ด๋ ํ ๋ค์ ๋์์ค๊ฒ ๋๋๋ผ๋ unmount ๋์๋ค๊ณ ํ๋จ๋์ง ์๋ ์ ์ด ๋ฉ์ธํ์ด์ง ๋ก ์ด๋ํ ๋๋ง๋ค ์๊ฐ์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ ์ดํ ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ๊ฒ ๋์์ต๋๋ค. ์ด๋ฅผ ์ํด focus ์ด๋ฒคํธ๋ก navigation์ด ๋ ๋ ๋ง๋ค ๋ค์ ๋ฐ์ดํฐ refetch๋ฅผ ํ๊ฒ ํ์์ต๋๋ค. ์ด ๊ธฐ๋ณธ ์๋ฆฌ๊ฐ ์น react์๋ ๊ฐ์ฅ ๋ฌ๋๊ณ , prop์ ์ ๋ฌํด์ฃผ๋ ๋ฐฉ์๋ ๋ง์ด ๋ฌ๋๋ค๋ ๊ฒ์ ๋๊ผ๋ ๋ถ๋ถ์ด์์ต๋๋ค.
๋ชจ๋ฐ์ผ์ style์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ด ๊ธฐ์กด์ ์น์์ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ๋ง์ด ๋ฌ๋ผ, ์ด๋ฐ css๋ฅผ ๊ตฌํํ๋๋ฐ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ๊ฐ screen๋ณ๋ก status bar์ ๋ํ ์ค์ ์ ํ๊ฑฐ๋ stack navigator, stack group ๋ฑ ๊ฐ๊ฐ์ ๊ทธ๋ฃน๋ณ๋ก๋ ๋ค์ํ๊ฒ ์ค์ ์ ํ ์ ์๋ค๋ ์ ์ด ์คํ๋ ค ์์จ์ฑ์ ์ฃผ๋ ๋์ ๋ ์ค์ ํด์ผ ํ๊ณ ๋ถ๊ธฐ์ฒ๋ฆฌํด์ผ ํ๋ ๋ถ๋ถ๋ค์ด ๋ง์๋ค๊ณ ๋๊ปด์ก์ต๋๋ค. ๋ํ, ์น์์๋ ์ต์ํ๋ css ๋ฌธ๋ฒ์ด ๋ง์ด ๋ฌ๋ผ, ์ด๋ฅผ ์ํด emotion์ ๋์
ํ๊ฒ ๋์์ต๋๋ค. styled-component์ ๊ฑฐ์ ์ ์ฌํ emotion์ ๋์
ํ๊ฒ ๋ ์ด์ ๋, ๊ธฐ์กด์ ์น์์ ๋ง์ด ์ฌ์ฉํ๋ styled-component์ ๋ฌธ๋ฒ์ด ๊ฑฐ์ ์ ์ฌํ๊ณ , ์กฐ๊ธ ๋ ๊ฐ๋ฒผ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ํ๋ก์ ํธ์ ๋ ์ ํฉํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ง๋ง ํ๋ก ํธ์๋ ํ
์คํธ ์ฝ๋ ์์ฑ ์, ํด๋น ํ๊ทธ๋ฅผ ์ฐพ์๋ ๊ฐ ์ปดํฌ๋ํธ์ style.js ํ์ผ์์ import ํด์์ผ ํ
์คํธ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ ์ด ๋ค์ ์์ฌ์ ์ต๋๋ค.
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์
ํ๊ฒ๋ ๊ณ๊ธฐ๋ ์ง๋ ํํ๋ก์ ํธ ๋น์, redux์ redux-toolkit(createSlice, redux-Saga)๋ฅผ ํตํด ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์งํํ์์์ต๋๋ค. socket.io๋ฅผ saga์ event-channel๋ก ๋ค๋ฃฐ ์ ์์ด ๋น๋๊ธฐ์ฒ๋ฆฌ๋ฅผ ์์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ํธํ์ผ๋, ์๊ฐ๋ณด๋ค boiler plate๊ฐ ๋ง์๊ณ , action ํจ์๊ฐ ๋๋ฌด ๋ง์์ ธ ๊ฐ๋
์ฑ์ด ๋ง์ด ๋จ์ด์ง๊ฒ ๋ ์ ์ด ์์ฌ์ ์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํ๋ก์ ํธ์ boiler plate๊ฐ ์ ๊ณ , ์ ์ญ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ react-query ๋์
์ ๊ฒฐ์ ํ๊ฒ ๋์์ต๋๋ค. ๋ฌด์๋ณด๋ค, ๋ชจ๋ฐ์ผ์์ ํ์ํ pagination์ ์ ์ฒ๋ฆฌํ ์ ์๋ useInfiniteQuery๊ฐ ์์๊ณ , ๊ฐ hook ๋ณ๋ก ๋น๋๊ธฐ์ฒ๋ฆฌ์ ๋ํ ๊ณผ์ ์ ๋ํด ๊ฐ๋
์ฑ ์ข๊ฒ ์งง์ ์์ ์ฝ๋๋ก๋ ๊ตฌํ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ผ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋์ฑ ์ ํํ๊ฒ ๋์์ต๋๋ค.
ํ์ง๋ง, ์ฒ์ ์ ํด๋ณด๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ผ๋ก ๋ก๊ทธ์ธ ๋ฐฉ์ ๋ฐ react-query๋ก๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ ๋ user ์ ๋ณด ์ ์ญ๊ด๋ฆฌ์ ๋ํ ๊ณ ๋ฏผ์ ํ๋๋ผ ์ด๋ฐ์ ๋ฐฉํฅ์ ์ก๋๋ฐ ์ด๋ ค์ ๊ณ , ๊ด๋ จ ์ฌ์ฉ๋ฒ์ ๋ํด์ ์ ๋ง ์์ธํ๊ฒ ์ตํ์ง ๋ชปํ ๊ฒ์ด ๋ค์ ์์ฌ์ ์ต๋๋ค. ์ด๋ฒ์ ์ฌ์ฉํ ๊ฒฝํ์ ํตํด ๋ค์ ์ฌ์ด๋ ํ๋ก์ ํธ ํน์ ํ์
์์ ๋ค๋ฃจ๊ฒ ๋ ๋, react-query์ ๋ฌธ๋ฒ๋ค์ ๋ค์ํ๊ณ , ํจ์จ์ ์ผ๋ก ์งํํด๋ณด๊ณ ์ถ์ต๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ์ ๊ฐ ์ ์ ์๋ํด๋ณด์ง ๋ชปํ๋ ์๋ก์ด ๊ฒ๋ค์ ๋ง์ด ํด๋ณผ ์ ์์์ต๋๋ค. ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ํ๋ก ํธ์๋ ์์
์ ํ๋ฉด์ ์ฒ์ ๋ณด๋ ๋ถ๋ถ๋ค์ด ๋ง์๊ณ ์ฝ๋๊ฐ ์๋ฒฝํ์ง๋ ์์ง๋ง, ๊ทธ๋งํผ ๋ฐฐ์ฐ๋ ๊ณผ์ ์ ์์ด์ ํฅ๋ฏธ๋ฅผ ๋๊ผ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ํ๋ ์ฑ
๋ ๋ณด๊ณ , ์ ํ๋ธ๋ ๋ณด๊ณ , ๊ณต์๋ฌธ์๋ฅผ ๋ง์ด ๋ณด๋ฉด์ ํ๋ฆฌ์ง ์์๋ ๋ถ๋ถ๋ค์ ํด๊ฒฐํด๋๊ฐ๋ ๊ณผ์ ์ด ๊ฐ์ธ์ ์ผ๋ก ์ข์ ๊ฒฝํ์ด์๊ณ , ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์๋๋ ฅ์ด ๋์์ต๋๋ค. ์์ผ๋ก๋ ์ด ๊ฐ๊ฐ์ ๊ณ์ ์ ์งํ์ฌ ๋ ๋ง์ด ๋ฐฐ์ฐ๊ณ , ๋ ์ฑ์ฅํ ์ ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์ต๋๋ค.








