Skip to content

didYouDoThat/didYouDoThat-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

116 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฑ ๊ทธ๊ฑฐํ–ˆ๋ƒฅ

thumb

๋งˆ์Œ์†์œผ๋กœ๋งŒ ์ƒ๊ฐํ•œ ์Šต๊ด€์„ 1์ฃผ์ผ๋งŒ์ด๋ผ๋„ ์ง€์ผœ๋‚ธ๋‹ค๋ฉด ์ด๋ฏธ ์ด ์Šต๊ด€์€ ๋‹น์‹ ์˜ ๊ฒƒ!
"๊ทธ๊ฑฐํ–ˆ๋ƒฅ?"์œผ๋กœ ์Šต๊ด€ ๋งŒ๋“ค๊ธฐ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์„ธ์š”!

๐Ÿ“ฑ ๋ชฉ์ฐจ

  1. ์‚ฌ์šฉ ์˜์ƒ
  2. ๋™๊ธฐ
  3. ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„
  4. ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๊ณ ๋ฏผ ์ผ๊ธฐ
  5. ๊ธฐ์ˆ  ์Šคํƒ
  6. ์‹คํ–‰ ๋ฐฉ๋ฒ•
  7. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ๋ถ€๋ถ„
  8. ๊ธฐ๋Šฅ
  9. ๊ธฐ์ˆ ์Šคํƒ ์‚ฌ์šฉ ์†Œ๊ฐ
  10. ์†Œ๊ฐ


๐Ÿ“ฝ ์‚ฌ์šฉ ์˜์ƒ

apk ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ


play1 play2



๐Ÿ’ก ๋™๊ธฐ

์Šต๊ด€ ๋งŒ๋“ค๊ธฐ๋ฅผ ํฌ๋งํ•˜์ง€๋งŒ ์‹คํ–‰ํ•˜๋Š”๊ฒŒ ๊ฑฐ์˜ ์—†๋Š” J๊ฐ™์ง€ ์•Š์€ J์ธ ๋‚˜๋ฅผ ์œ„ํ•ด

  • โ€œ์˜ค๋Š˜์€ ๊ผญ ์ผ์ฐ ์ผ์–ด๋‚˜์„œ ์šด๋™๊ฐ€์•ผ์ง€โ€, โ€œ์˜ค๋Š˜์€ ๋ฌผ 800ml ์ •๋„๋Š” ๊ผญ ๋งˆ์…”์•ผ์ง€โ€ ์ œ๊ฐ€ ์ œ์ผ ๋งˆ์Œ์†์œผ๋กœ ๋งŽ์ด ๋˜๋‡Œ์ด๋˜ ๊ฒฐ์‹ฌ๋“ค์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ƒ๊ฐ๋งŒ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋Š” ์ž˜ ์ง€์ผœ์ง€์ง€ ์•Š์•˜๋˜ ์ œ ๊ฒฝํ—˜์„ ๋˜์‚ด๋ ค์„œ, ์‚ฌ์†Œํ•œ ์Šต๊ด€์ด๋ผ๋„ ๊พธ์ค€ํžˆ ์ง€ํ‚ค๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋งˆ์Œ๊ฐ€์ง์„ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ๋Š” Habit Tracker ์–ดํ”Œ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  • โ€œ์‹œ์ž‘์ด ๋ฐ˜์ด๋‹คโ€๋ผ๋Š” ๋ง์ฒ˜๋Ÿผ, ์ผ์ฃผ์ผ์˜ ์‹œ๊ฐ„๋™์•ˆ์ด๋ผ๋„ ๊พธ์ค€ํ•˜๊ฒŒ ๋ณธ์ธ์ด ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ์Šต๊ด€์„ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์‹ถ์—ˆ๊ณ , (๋น„๋ก ์ €๋งŒ ์—†์ง€๋งŒ..) ์ œ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๊ณ ์–‘์ด์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์žฌ๋ฏธ๋ฅผ ๋А๊ปด๋ณด์•˜์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ—“ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

1์ฃผ์ฐจ (02.21 ~ 02.26) - ์ค€๋น„

  • ์•„์ด๋””์–ด ๊ธฐํš ๋ฐ ๊ธฐ์ˆ ์Šคํƒ ์„ ์ • ๋ฐ ๊ฒ€ํ† 
  • ๋ชฉ์—…, ์Šคํ‚ค๋งˆ, ํƒœ์Šคํฌ ์นด๋“œ ์ž‘์„ฑ
  • git repository ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ํด๋”๊ตฌ์กฐ ์…‹ํŒ…

2์ฃผ์ฐจ (02.27 ~ 03.05) - ๊ฐœ๋ฐœ

  • ๋กœ๊ทธ์ธ ํ™”๋ฉด ๋ฐ ๊ด€๋ จ ๋ฐฑ์—”๋“œ ์ž‘์—…
  • ๋ฉ”์ธํ™”๋ฉด, ์Šต๊ด€ ์ข…๋ฃŒ๋œ ํ™”๋ฉด ๋ Œ๋”๋ง ๋ฐ ๊ด€๋ จ ๋ฐฑ์—”๋“œ ์ž‘์—…

3์ฃผ์ฐจ (03.06 ~ 03.11) - ๊ฐœ๋ฐœ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

  • ๋งˆ์ดํŽ˜์ด์ง€ ํ™”๋ฉด ๋ Œ๋”๋ง ๋ฐ ๋ฐฑ์—”๋“œ ์ž‘์—…
  • ๋ฆฌํŒฉํ† ๋ง
  • ๋ฐฐํฌ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ


๐ŸŒค ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋™์•ˆ์˜ ๊ณ ๋ฏผ ์ผ๊ธฐ

feeling

  • 2์›” 21์ผ ~ 23์ผ (1์ฃผ์ฐจ ์›” ~ ์ˆ˜์š”์ผ) : ํ”„๋กœ์ ํŠธ ๊ธฐํš ๋ฐ asset์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
    • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ฒ˜์Œ์œผ๋กœ ๊ธฐํšํ•˜๊ฒŒ ๋˜์—ˆ์„ ๋•Œ, ์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๊ธฐ๋Šฅ์ด ๋งŽ๊ฑฐ๋‚˜ css ์ ์œผ๋กœ ๋” ๋‹ค์–‘ํ•œ ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์„ ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ ์กฐ๊ธˆ ๋” ์• ์ •์ด ๊ฐ€๊ฒŒ ๋˜์—ˆ๊ณ , ์ œ๊ฐ€ ์›ํ•˜๋Š” ์ปจ์…‰์— ๋งž๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ ์‹œ๊ฐ„์ด ๋‹ค์†Œ ๊ฑธ๋ฆฌ๋”๋ผ๋„, ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€๋“ค์„ ์ œ๊ฐ€ ์ง์ ‘ ๊ทธ๋ ค ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • 2์›” 24์ผ (1์ฃผ์ฐจ ๋ชฉ์š”์ผ) : ์ „์—ญ์ƒํƒœ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
    • ์œ ์ € ์ •๋ณด์˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ „์—ญ์ƒํƒœ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ง‰์—ฐํ•˜๊ฒŒ ๊ฐ€๋ณ๊ฒŒ๋ผ๋„ ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์œผ๋‚˜, ์œ ์ € ์ •๋ณด๋ฅผ ์œ„ํ•ด ๊ตณ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™์•„, useContext๋กœ ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. useContext์— ์ €์žฅ๋œ ์œ ์ € ์ •๋ณด๋Š” ๋กœ๊ทธ์ธ๊ณผ ๋กœ๊ทธ์•„์›ƒ, ์ด ๋‘ ๊ฒฝ์šฐ์—๋งŒ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์šฉ๋Ÿ‰์˜ ์ „์—ญ์ƒํƒœ ๊ด€๋ฆฌ ํˆด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • 2์›” 26์ผ (1์ฃผ์ฐจ ํ† ์š”์ผ) : useQuery ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
    • useQuery์ฒ˜๋ฆฌ ์—๋Ÿฌ ๋ฐœ์ƒ ์ดํ›„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ• ์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ๋กœ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์—๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๋‚ด๋ถ€์— ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ ํ˜น์€ try again๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์„œ ๋‹ค์‹œ query๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, suspense์™€ ๊ด€๋ จ๋œ ์ž‘์—…๊ณผ fallbackRender์— ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ทธ๋ ค์ฃผ์—ˆ์œผ๋‚˜ ๊ณ„์†ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„ ์€ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ Toast ์•Œ๋žŒ์œผ๋กœ ์—๋Ÿฌ์™€ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ํ† ์ŠคํŠธ ์•Œ๋žŒ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋‹ค์‹œ query๋ฅผ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. suspense๊ฐ€ ์•„์ง์€ ์‹คํ—˜์ ์ธ ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์—, useQuery์˜ isLoading ๋ฐ isError, useMutation์˜ onError ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • 3์›” 4์ผ (2์ฃผ์ฐจ ๊ธˆ์š”์ผ) : ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
    • ์„œ๋ฒ„์—๋Š” 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

client๋ฅผ ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์™€์ดํŒŒ์ด์™€ ๊ธฐ๊ธฐ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์™€์ดํŒŒ์ด๊ฐ€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

git clone https://github.com/didYouDoThat/didYouDoThat-Client.git
npm install 
npm start // expo start

Server

git clone https://github.com/didYouDoThat/didYouDoThat-Server.git
npm install
npm start // npm run dev (development ๋ฒ„์ „)


๐Ÿ” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ๋ถ€๋ถ„

Client ํด๋” ์ตœ์ƒ๋‹จ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„ ์•„๋ž˜์˜ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ์„ธ์š”

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>

Server ํด๋” ์ตœ์ƒ๋‹จ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„ ์•„๋ž˜์˜ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ์„ธ์š”

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>


๐Ÿ”ฌ ๊ธฐ๋Šฅ

๋กœ๊ทธ์ธ ํ™”๋ฉด

login

  • ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ํ•œ ํšŒ์›๋งŒ ์–ดํ”Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธ์„ ํ•œ ํ›„ ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ํ•ด๋‹น ์•ฑ์„ ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ค๋”๋ผ๋„ ๋กœ๊ทธ์ธ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์ธ ํ™”๋ฉด

main

  • ํ•˜๋‹จ ํƒญ ๋ฉ”๋‰ด์—์„œ๋Š” ๋ฉ”์ธ ํ™”๋ฉด์œผ๋กœ ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ธ๋ฒ„ํŠผ, ์ƒˆ๋กœ์šด ์Šต๊ด€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ดํŽ˜์ด์ง€๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ ์ด 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. (๋งจ ์ฒ˜์Œ ๋‚˜ํƒ€๋‚˜๋Š” ํ™”๋ฉด์€ ๋ฉ”์ธ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ๋‚˜์˜ค๋Š” ๋ฉ”์ธ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค)
  • ํ˜„์žฌ ์ผ์ž๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๋Š” ๋‚ ์งœ ์˜์—ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ์ผ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์Šต๊ด€ ๋ฆฌ์ŠคํŠธ๋“ค ํ˜น์€ ์–ด์ œ ์ผ์ž ๊ธฐ์ค€์œผ๋กœ ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ๋งค ์Šต๊ด€์€ ๋งค์ผ 00์‹œ ๊ธฐ์ค€์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๋ฉฐ, ์ „๋‚  ์Šต๊ด€์„ ์‹œํ–‰ํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•œ ๊ฒƒ๋“ค๋„ ๋ชจ๋‘ ๋ฆฌ์…‹๋ฉ๋‹ˆ๋‹ค.
  • ์•„์ง ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ์Šต๊ด€๋“ค์„ ํด๋ฆญํ•˜๋ฉด(์ง„ํ–‰ํ–ˆ๋‹ค๋Š” ํ‘œ์‹œ) ํ•ด๋‹น ์Šต๊ด€์˜ ์ œ๋ชฉ์˜์—ญ์— ๋นจ๊ฐ„ ์ค„์ด ๊ทธ์–ด์ง€๋ฉฐ, ํ•˜๋‹จ์˜ ํ•˜ํŠธ ๊ฐœ์ˆ˜๊ฐ€ 1 ์ฆ๊ฐ€ํ•˜๊ณ , ์ด์— ๋”ฐ๋ผ ํ•ด๋‹น ์Šต๊ด€์˜ ๊ณ ์–‘์ด์ด๋ฏธ์ง€๊ฐ€ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ ์ด๋ฏธ ์ง„ํ–‰ํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•œ, ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ์Šต๊ด€๋“ค์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์Šต๊ด€์ด ์‹œํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ข…๋ฃŒ๋œ ์Šต๊ด€์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด, ์Šต๊ด€์— ๋Œ€ํ•œ ๊ฒฐ๊ณผํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์Šต๊ด€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์Šค์™€์ดํ”„ํ•˜๊ฒŒ ๋˜๋ฉด, ํ˜„์žฌ๊นŒ์ง€ ํ•ด๋‹น ์Šต๊ด€์„ ์–ธ์ œ ์ดํ–‰ํ–ˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ฑฐ๋‚˜, ์Šต๊ด€์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ ๋ฐ‘์— ์ž์ฃผ ๋ฌผ์„ ๋ฒ•ํ•œ ์งˆ๋ฌธ์„ ํ•œ๋ฒˆ์— ๋ชจ์•„์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ๋œจ๊ฒŒ ํ•˜๋Š” ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์Šต๊ด€ ์ƒ์„ฑ ํ™”๋ฉด

newHabit

  • ํ•˜๋‹จ ํƒญ ๋ฉ”๋‰ด์˜ ์ƒˆ๋กœ์šด ์Šต๊ด€์„ ์ƒ์„ฑํ•˜๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด, ์ƒˆ๋กœ์šด ์Šต๊ด€์„ ๋งŒ๋“œ๋Š” ๋ชจ๋‹ฌ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋‹ฌ์„ ํ†ตํ•ด ์Šต๊ด€์˜ ์ œ๋ชฉ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ๋Œ€ 20์ž๊นŒ์ง€ ์ง€์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ์Šต๊ด€์„ ๋งŒ๋“œ๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์Šต๊ด€์— ํ•ด๋‹นํ•˜๋Š” ๊ณ ์–‘์ด๊ฐ€ ๋ฐฐ์ •๋˜๋ฉฐ, ๋งˆ๊ฐ๊ธฐํ•œ์€ ์ž๋™์œผ๋กœ ์ผ์ฃผ์ผ ๋’ค๋กœ ์ƒ์„ฑ๋˜๊ณ , ๋ฉ”์ธ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ํ™œ์„ฑํ™”๋œ ์Šต๊ด€์ด 5๊ฐœ์ธ ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์ธ ์Šต๊ด€์€ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํŽ˜์ด์ง€

mypage

  • ํ˜„์žฌ ๋กœ๊ทธ์ธ๋œ ์œ ์ €์˜ ๊ตฌ๊ธ€ ๊ณ„์ • ๋‚ด user ์ด๋ฆ„์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ, ๊ทธ๋ฆฌ๊ณ  ๋งค์ผ 10์‹œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์•Œ๋žŒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์•Œ๋žŒ ๋ฐ›๊ธฐ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์•Œ๋žŒ ๋ฐ›๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ๋ชจ๋‹ฌ์ฐฝ์„ ํ†ตํ•ด ์ตœ์ข…์ ์œผ๋กœ ์•Œ๋žŒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ฉฐ, ์•Œ๋ฆผ์„ ๋ฐ›์€ ์ƒํƒœ์˜ ์œ ์ €๋ผ๋ฉด, ์•Œ๋žŒ ๋ฐ›๊ธฐ ๋ฒ„ํŠผ์€ ์•Œ๋žŒ ๋ฐ›์ง€ ์•Š๊ธฐ ๋ฒ„ํŠผ์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ์•Œ๋žŒ์„ ๋ฐ›์€ ํ›„ ์•Œ๋žŒ ๋„๊ธฐ๋ฅผ ํฌ๋งํ•˜๋Š” ๊ฒฝ์šฐ, ๋งˆ์ดํŽ˜์ด์ง€ ๋‚ด ์•Œ๋žŒ ๋ฐ›์ง€ ์•Š๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋™์ผํ•œ ๊ณผ์ •์œผ๋กœ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ๊นŒ์ง€ ๋งŒ๋“  ์Šต๊ด€๋“ค ์ค‘ ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค๋งŒ ๋”ฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค์ด ์—†๋‹ค๋ฉด, ๋นˆ ํ™”๋ฉด ๋‚ด ๋Œ€์ฒด ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    • ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค์€ ์„ฑ๊ณตํ•œ ์Šต๊ด€๋“ค (์ผ์ฃผ์ผ ๋™์•ˆ ๋ชจ๋‘ ์‹คํ–‰ ํ–ˆ๋˜ ์Šต๊ด€)๊ณผ ์‹คํŒจํ•œ ์Šต๊ด€๋“ค (์ผ์ฃผ์ผ๋™์•ˆ ํ•˜๋ฃจ๋ผ๋„ ์‹œํ–‰ํ•˜์ง€ ์•Š์•˜๋˜ ์Šต๊ด€๋“ค)์„ ๋”ฐ๋กœ ๋ชจ์•„๋‘” ์„ฑ๊ณตํƒญ, ์‹คํŒจํƒญ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ง‘๋‹ˆ๋‹ค.
    • ๊ฐ ํƒญ๋ณ„๋กœ 5๊ฐœ์”ฉ ๋ Œ๋”๋ง๋˜๋ฉฐ, 5๊ฐœ๋ณด๋‹ค ๋” ๋งŽ์€ ์Šต๊ด€๋“ค์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ์ธํ•ด ๊ณ„์†ํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ ํƒญ๋ณ„ ๋‚ด์—๋Š” ๊ฒ€์ƒ‰์ฐฝ์ด ์žˆ๊ณ , ๊ฒ€์ƒ‰์ฐฝ์„ ํ†ตํ•ด ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค์˜ ์Šต๊ด€ ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ ์ข…๋ฃŒ๋œ ์Šต๊ด€๋“ค์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด, ์Šต๊ด€์— ๋Œ€ํ•œ ๊ฒฐ๊ณผํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํŽ˜์ด์ง€

success failure

  • ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋Š” ๊ฐ ์Šต๊ด€๋“ค์˜ ์ดํ–‰์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.
  • ์„ฑ๊ณต ๊ฒฐ๊ณผํŽ˜์ด์ง€๋Š” ๊ฒฐ๊ณผ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ์บก์ณํ•˜๊ธฐ ๋ฒ„ํŠผ, ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    • ์บก์ณํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๊ฒฐ๊ณผํŽ˜์ด์ง€๋ฅผ ์บก์ณํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ SNS์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํŒจ ๊ฒฐ๊ณผํŽ˜์ด์ง€๋Š” ๊ฒฐ๊ณผ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ๋‹ค์‹œ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ, ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์‹œ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ•ด๋‹น ์Šต๊ด€์˜ ๋™์ผํ•œ ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์Šต๊ด€์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ—‚ ๊ธฐ์ˆ ์Šคํƒ ์‚ฌ์šฉ ์†Œ๊ฐ

React-Native

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ๊ตฌํ˜„ํ•ด๋ณด์•˜๊ณ , ๋ง‰์—ฐํ•˜๊ฒŒ ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ œ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๊ผˆ๋˜ ์ ์€ ๋ฆฌ์•กํŠธ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋น„์Šทํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•˜๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

1. navigation

react์—์„œ๋Š” route๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ, react-native์—์„œ๋Š” screen๋ณ„ ์ด๋™์„ ํ•˜๊ธฐ ์œ„ํ•ด, navigation์„ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ์ ์ด ์ƒˆ๋กญ๊ฒŒ ๋‹ค๊ฐ€์™”์Šต๋‹ˆ๋‹ค. screen์„ ํ†ตํ•ด์„œ ์ด๋™ ํ›„ ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒŒ ๋˜๋”๋ผ๋„ unmount ๋˜์—ˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜์ง€ ์•Š๋Š” ์ ์ด ๋ฉ”์ธํŽ˜์ด์ง€ ๋กœ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์‹œ๊ฐ„์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ์–ดํ”Œ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด focus ์ด๋ฒคํŠธ๋กœ navigation์ด ๋ ๋•Œ ๋งˆ๋‹ค ๋‹ค์‹œ ๋ฐ์ดํ„ฐ refetch๋ฅผ ํ•˜๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ์›๋ฆฌ๊ฐ€ ์›น react์™€๋Š” ๊ฐ€์žฅ ๋‹ฌ๋ž๊ณ , prop์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋ฐฉ์‹๋„ ๋งŽ์ด ๋‹ฌ๋ž๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ผˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

2. style

๋ชจ๋ฐ”์ผ์˜ style์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์ด ๊ธฐ์กด์— ์›น์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹๊ณผ ๋งŽ์ด ๋‹ฌ๋ผ, ์ดˆ๋ฐ˜ css๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ screen๋ณ„๋กœ status bar์— ๋Œ€ํ•œ ์„ค์ •์„ ํ•˜๊ฑฐ๋‚˜ stack navigator, stack group ๋“ฑ ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน๋ณ„๋กœ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์˜คํžˆ๋ ค ์ž์œจ์„ฑ์„ ์ฃผ๋Š” ๋Œ€์‹  ๋” ์„ค์ •ํ•ด์•ผ ํ•˜๊ณ  ๋ถ„๊ธฐ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•˜๋‹ค๊ณ  ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์›น์—์„œ๋Š” ์ต์ˆ™ํ–ˆ๋˜ css ๋ฌธ๋ฒ•์ด ๋งŽ์ด ๋‹ฌ๋ผ, ์ด๋ฅผ ์œ„ํ•ด emotion์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. styled-component์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•œ emotion์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š”, ๊ธฐ์กด์— ์›น์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋˜ styled-component์™€ ๋ฌธ๋ฒ•์ด ๊ฑฐ์˜ ์œ ์‚ฌํ–ˆ๊ณ , ์กฐ๊ธˆ ๋” ๊ฐ€๋ฒผ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ, ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ์ฐพ์„๋•Œ ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ style.js ํŒŒ์ผ์—์„œ import ํ•ด์™€์•ผ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค๋Š” ์ ์ด ๋‹ค์†Œ ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

React-Query

ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ•˜๊ฒŒ๋œ ๊ณ„๊ธฐ๋Š” ์ง€๋‚œ ํŒ€ํ”„๋กœ์ ํŠธ ๋‹น์‹œ, 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์˜ ๋ฌธ๋ฒ•๋“ค์„ ๋‹ค์–‘ํ•˜๊ณ , ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๐ŸŽค ์†Œ๊ฐ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์ œ๊ฐ€ ์ „์— ์‹œ๋„ํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค์„ ๋งŽ์ด ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ์ฒ˜์Œ ๋ณด๋Š” ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ๊ทธ๋งŒํผ ๋ฐฐ์šฐ๋Š” ๊ณผ์ •์— ์žˆ์–ด์„œ ํฅ๋ฏธ๋ฅผ ๋А๊ผˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜ ์ฑ…๋„ ๋ณด๊ณ , ์œ ํŠœ๋ธŒ๋„ ๋ณด๊ณ , ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋งŽ์ด ๋ณด๋ฉด์„œ ํ’€๋ฆฌ์ง€ ์•Š์•˜๋˜ ๋ถ€๋ถ„๋“ค์„ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •์ด ๊ฐœ์ธ์ ์œผ๋กœ ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์›๋™๋ ฅ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์ด ๊ฐ๊ฐ์„ ๊ณ„์† ์œ ์ง€ํ•˜์—ฌ ๋” ๋งŽ์ด ๋ฐฐ์šฐ๊ณ , ๋” ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors