Skip to content
@HanghaeE5

HanghaeE5

TODO WITH

ํ•ญํ•ด99 7๊ธฐ 39๊ฐœ ํŒ€ ์ค‘ 1์œ„ ์ˆ˜์ƒ๐Ÿ˜Ž

๐Ÿ“Œ ๋งํฌ

TodoWith ๋งํฌ
Front-End Repo ๋งํฌ
Back-End Repo ๋งํฌ
Notion ๋งํฌ
์†Œ๊ฐœ ์˜์ƒ

๐ŸŽฌ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ์šฐ๋ฆฌ๋Š” ํ•˜๋ฃจ์—๋„ ์ˆ˜ ๋งŽ์€ ์ผ๋“ค์„ ํ•ฉ๋‹ˆ๋‹ค. ํ•  ์ผ์„ ์‰ฝ๊ฒŒ ๊ธฐ๋กํ•˜๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ์š”? ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค TODOWITH ์€ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ TODO ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค.

โณ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

2022๋…„ 6์›” 24์ผ - 2022๋…„ 8์›” 5์ผ

๐Ÿ™ ํŒ€์›

์ด๋ฆ„ ํฌ์ง€์…˜ ๊นƒํ—ˆ๋ธŒ or ๋ธ”๋กœ๊ทธ ๋‹ด๋‹น
์‹ฌ์•„์˜ Front-End https://github.com/ccimayoung [๋ถ€๋ฆฌ๋”]
1. CICD/๋ฌด์ค‘๋‹จ๋ฐฐํฌ
2. ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…/์˜จ๋ณด๋”ฉ
3. ๋ฉ”์ธํŽ˜์ด์ง€
4. ์ฑ„ํŒ…
5. ์นœ๊ตฌ๋ชฉ๋ก/์นœ๊ตฌํŽ˜์ด์ง€
6. ์•Œ๋ฆผ 7.์ธํ„ฐ์…‰ํ„ฐ ๋กœ์ง
์กฐ์œค๊ฒฝ Front-End 1. ํˆฌ๋‘ ํŽ˜์ด์ง€
2. ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€
3. ์ด๋ฒคํŠธํŽ˜์ด์ง€
4. ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ
๊น€์ง€ํ™˜ Back-End https://github.com/Kimjipang [๋ฆฌ๋”]
1. ์ปค๋ฎค๋‹ˆํ‹ฐ CRUD
2. To Do ์ •๋ ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ
3. ์•Œ๋ฆผ ๊ธฐ๋Šฅ(๊ฐ„๋‹จํ•œ ์•Œ๋ฆผ ํ…Œ์ŠคํŠธ O , ํ”„๋กœ์ ํŠธ์— ๊ตฌํ˜„์€ X)
์ด๊ฑด์šฐ Back-End https://github.com/geonoo 1. CICD / ๋ฌด์ค‘๋‹จ๋ฐฐํฌ
2. ๋กœ๊ทธ์ธ(์ผ๋ฐ˜, ์†Œ์…œ)
3. ์ด๋ฒคํŠธ ๊ธฐ๋Šฅ(์Šค์ผ€์ค„๋Ÿฌ, ๋žœ๋ค๋ฝ‘๊ธฐ)
4. ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒ€์ƒ‰
์–‘ํฌ์ˆ˜ Back-End https://github.com/hee1su123 1. ์ฑ„ํŒ…(WebSocket, Redis)
2. ์นœ๊ตฌ์ถ”๊ฐ€ ๊ธฐ๋Šฅ
3. To-do ๋ฆฌ์ŠคํŠธ
4. ์บ๋ฆญํ„ฐ ๋ฐ ์•„์ดํ…œ ๊ธฐ๋Šฅ
๋ฐ•ํ˜œ์ง„ DESIGNER 1. ์†Œ๊ฐœํŽ˜์ด์ง€
2. ํˆฌ๋‘๋ฆฌ์ŠคํŠธํŽ˜์ด์ง€
3. ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€
4. ์นœ๊ตฌ๋ชฉ๋กํŽ˜์ด์ง€
5. ์ฑ„ํŒ…ํŽ˜์ด์ง€
6. ์บ๋ฆญํ„ฐ์„ ํƒํŽ˜์ด์ง€
7.์ด๋ฒคํŠธ ๋ฐฐ๋„ˆ ๋ฐ ์ƒ์„ธํŽ˜์ด์ง€
์ตœ๋ฏผ์˜ DESIGNER 1. ๋กœ๊ทธ์ธํŽ˜์ด์ง€
2. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€
3. ํ™ˆ ํŽ˜์ด์ง€
4. ํ”„๋กœํ•„/๋‹‰๋„ค์ž„ ํŽธ์ง‘ ํŽ˜์ด์ง€
5. ํ™ˆ ํ™”๋ฉด ๋‚ด ๊ฐ ์บ๋ฆญํ„ฐ gif, ๋ ˆ๋ฒจ์—… gif
6. ๋กœ๊ณ 

๐ŸŽ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ˜ƒย ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•œ ํšŒ์›๊ฐ€์ž…

  • ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค๋ฅผ ํ†ตํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐ ์ด๋ฉ”์ผ ์ธ์ฆ์„ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž…
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ์†Œ์…œ or ์ผ๋ฐ˜๋กœ๊ทธ์ธ
    • ์˜จ๋ณด๋”ฉํŽ˜์ด์ง€(์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ํˆฌ๋‘์œ—์ด ์–ด๋– ํ•œ ์„œ๋น„์Šค์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ)
    • PWA ๋‹ค์šด๊ฐ€๋Šฅ
      ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…

๐Ÿ˜ƒ ๋ฉ”์ธ ํŽ˜์ด์ง€

  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ์บ๋ฆญํ„ฐ gif๋ฅผ ๋ณผ์ˆ˜์žˆ์Œ.(2๊ฐ€์ง€ ์บ๋ฆญํ„ฐ)
    • ์บ๋ฆญํ„ฐ์™€ ์•„์ดํ…œ์€ ์Šคํ…์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•จ์œผ๋กœ์จ, ์‚ฌ์šฉ์ž์—๊ฒŒ To Do ๋‹ฌ์„ฑ์„ ๋” ์žฌ๋ฏธ์žˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํฅ๋ฏธ์™€ ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•จ.
      ๋ฉ”์ธ ํŽ˜์ด์ง€

๐Ÿ˜ƒย ๊ณ„ํš ์ž‘์„ฑ, ๋ชฉํ‘œ ๋‹ฌ์„ฑ์„ ์œ„ํ•œ TO-DO ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ

  • ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค๋ฅผ ํ†ตํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐ ์ด๋ฉ”์ผ ์ธ์ฆ์„ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž…
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ์†Œ์…œ or ์ผ๋ฐ˜๋กœ๊ทธ์ธ
    • ์˜จ๋ณด๋”ฉํŽ˜์ด์ง€(์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ํˆฌ๋‘์œ—์ด ์–ด๋– ํ•œ ์„œ๋น„์Šค์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ)
    • PWA ๋‹ค์šด๊ฐ€๋Šฅ
      Todo ๋ฆฌ์ŠคํŠธ

๐Ÿ˜ƒย ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•œ ์œ„๋“œํˆฌ๋‘ ์ง„ํ–‰ ๋ฐ ์ผ์ƒ ๊ณต์œ 

  • ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ TO-DO ๋ฅผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•  ์‚ฌ๋žŒ๋“ค์„ ๋ชจ์„ ์ˆ˜ ์žˆ์Œ.
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ๋‹จ์ฒด์ฑ„ํŒ…๋ฐฉ์„ ์ฐธ์—ฌํ•˜์—ฌ ํ•จ๊ป˜ TO-DO ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ์†Œํ†ต์ด ๊ฐ€๋Šฅํ•จ.
      ์ปค๋ฎค๋‹ˆํ‹ฐ

๐Ÿ˜ƒย ์นœ๊ตฌ์™€ ํ•จ๊ป˜ ๊ณต์œ  ๊ฐ€๋Šฅํ•œ TO-DO ๋ฆฌ์ŠคํŠธ ๋ฐ ์บ๋ฆญํ„ฐ

  • ์นœ๊ตฌ ์ถ”๊ฐ€ ํ›„ TO-DO ๋ฆฌ์ŠคํŠธ ๊ณต์œ  ๊ฐ€๋Šฅ๐Ÿ˜ƒย ์นœ๊ตฌ์™€ ์†Œํ†ตํ•˜๋ฉฐ ํ•จ๊ป˜ TO-DO ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„ํŒ…๋ฐฉ
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ๋‹‰๋„ค์ž„์„ ํ†ตํ•ด ์นœ๊ตฌ ์š”์ฒญ(๋ฐ›์€ ์‚ฌ๋žŒ์€ ์ˆ˜๋ฝ ๋˜๋Š” ๊ฑฐ์ ˆ ๊ฐ€๋Šฅ)
    • ์นœ๊ตฌ ํŽ˜์ด์ง€์—์„œ ์บ๋ฆญํ„ฐ, ๋ณด์œ  ์•„์ดํ…œ, ๋‹น์ผ ํˆฌ๋‘๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์นœ๊ตฌ๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ํ•ด๋†“์€ ๊ฒฝ์šฐ์—๋Š” ๋ณผ ์ˆ˜ ์—†์Œ.
      ์นœ๊ตฌ

๐Ÿ˜ƒ ์ฑ„ํŒ… ํŽ˜์ด์ง€

  • ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ With To Do ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ•จ๊ป˜ TO-DO ๋ฅผ ์ง„ํ–‰ ์ค‘์ธ ์‚ฌ๋žŒ๋“ค ๋˜๋Š” ์นœ๊ตฌ์™€์˜ ์ผ๋Œ€์ผ ์ฑ„ํŒ… ๊ฐ€๋Šฅ
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„ํŒ…๋ฐฉ์ด ์ •๋ ฌ๋จ.
    • ์˜๊ตฌ์  ์ €์žฅ DB(๋Šฆ๊ฒŒ ๋“ค์–ด์˜จ ์‚ฌ์šฉ์ž๋„ ์ฑ„ํŒ…๋ฐฉ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ํ™•์ธ ๊ฐ€๋Šฅํ•จ)
      ์ฑ„ํŒ…

๐Ÿ˜ƒ ์•Œ๋ฆผ ๊ธฐ๋Šฅ

  • ์•Œ๋ฆผํŽ˜์ด์ง€์—์„œ ์ด๋ฒคํŠธ(์ถœ์„ ๋„์žฅ), ์นœ๊ตฌ(์นœ๊ตฌ ์š”์ฒญ, ์ˆ˜๋ฝ, ๊ฑฐ์ ˆ), ์บ๋ฆญํ„ฐ(์Šคํ…์—…, ๋ ˆ๋ฒจ์—…) ๊ด€๋ จ ์•Œ๋ฆผ์„ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์นœ๊ตฌ์š”์ฒญ, ์ˆ˜๋ฝ, ๊ฑฐ์ ˆ ์•Œ๋ฆผ์˜ ๊ฒฝ์šฐ ์ „์ฒด ํŽ˜์ด์ง€์— ํŒ์—…๋จ
  • PWA ๋ฐฐํฌ๋กœ PC ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋„ ์•Œ๋ฆผ ํ™•์ธ ๊ฐ€๋Šฅ ์•Œ๋ฆผ

๐Ÿ˜ƒย ๋‚˜๋งŒ์˜ ํ”„๋กœํ•„ ์‚ฌ์ง„๊ณผ ๋‹‰๋„ค์ž„

  • ํ”„๋กœํ•„ ์‚ฌ์ง„๊ณผ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ.
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ๋‹‰๋„ค์ž„ ์ค‘๋ณต ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ.
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
      ํ”„๋กœํ•„

๐Ÿ˜ƒย TO-DO ์™„๋ฃŒํ•˜๊ณ  ์ƒํ’ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ

  • ์˜ค๋Š˜์˜ TO-DO ๋ฅผ ์ „๋ถ€ ์™„๋ฃŒ ์‹œ(๋‹น์ผ ๋‚ ์งœ๋กœ ์ง€์ •ํ•œ ๋ฏธ์™„๋ฃŒ TO-DO๊ฐ€ ์—†์–ด์•ผ ํ•จ) ๋„์žฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ๋„์žฅ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ˆ„์  3๊ฐœ๊ฐ€ ๋ชจ์ด๋ฉด, ์‘๋ชจ๊ถŒ์œผ๋กœ ๊ตํ™˜ํ•˜์—ฌ ์ด๋ฒคํŠธ ์ฐธ์—ฌ ๊ฐ€๋Šฅ
  • ํŽ˜์ด์ง€ ์„ค๋ช…
    • ๋‹ค์–‘ํ•œ ์ƒํ’ˆ์˜ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋žœ๋ค ๋‹น์ฒจ
      ์ด๋ฒคํŠธ

๐Ÿ”จ ์•„ํ‚คํ…์ฒ˜ / ๊ธฐ์ˆ  ์Šคํƒ

์•„ํ‚คํ…์ฒ˜

Architecture

๊ธฐ์ˆ  ์Šคํƒ

Front-End
์‚ฌ์šฉ ๊ธฐ์ˆ  ๊ธฐ์ˆ  ์„ ์ • ์ด์œ  ๋ฐ ์„ค๋ช…
Type Script โ€ข ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์—ฌ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋œจ์ง€ ์•Š๋„๋ก ํ•ด์คŒ. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ค ์˜ค๋ฅ˜์ธ์ง€ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋” ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ.
โ€ข state๋‚˜ api์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ณ , ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Œ. ํˆฌ๋‘ ํŽ˜์ด์ง€์˜ ํ•„ํ„ฐ๋‚˜ ์ •๋ ฌํƒ€์ž…, select box์˜ value ๋“ฑ์— string์ด ์•„๋‹Œ literal type์„ ์„ ์–ธํ•ด ์‚ฌ์šฉํ–ˆ์Œ.
PWA โ€ข ์›น์•ฑ์œผ๋กœ ํ™ˆํ™”๋ฉด์— ์•„์ด์ฝ˜์„ ์„ค์น˜ํ•ด ์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๊ธฐ์ˆ .
โ€ข native ์•ฑ๊ณผ ์ตœ์ ํ™”์™€ ์„ฑ๋Šฅ๋ฉด์—์„œ ์ฐจ์ด๋Š” ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ ์›น๋ณด๋‹ค๋Š” ์•ฑ์ฒ˜๋Ÿผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž ์ ‘๊ทผ์„ฑ์ด ๋†’์„ ๊ฒƒ ๊ฐ™์•„ ์„ ํƒํ–ˆ์Œ
โ€ข ์บ์‹ฑ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜คํ”„๋ผ์ธ์—์„œ๋„ ์ ‘์†์€ ๊ฐ€๋Šฅํ•˜๋‹ค. https์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ , push ๊ธฐ๋Šฅ๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ๋„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
Recoil , React-Query โ€ข ์ „์—ญ์ƒํƒœ ๊ด€๋ฆฌ๋Š” Recoil, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋น„๋™๊ธฐ ์ž‘์—…์—๋Š” React Query๋ฅผ ์‚ฌ์šฉํ–ˆ์Œ.
โ€ข Redux๋Š” ํƒ€์ž„๋จธ์‹  ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ์ž‘์€ ๊ธฐ๋Šฅ์ด์—ฌ๋„ ์•ก์…˜๋“ฑ์„ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค์–ด์•ผํ•จ. ์•ก์…˜ ํƒ€์ž…, ๋ฆฌ๋“€์„œ, ์•ก์…˜ ์ƒ์„ฑํ•จ์ˆ˜ ๋“ฑ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Œ.
โ€ข Recoil์€ store ํ•˜๋‚˜๋กœ ์–ด๋””์„œ๋“  ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ƒํƒœ๋ฅผ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์‚ฌ์šฉํ–ˆ์Œ.
โ€ข React Query๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ client state์™€ server state๋ฅผ ๋ถ„๋ฆฌํ• ์ˆ˜ ์žˆ๊ณ  useQuery hook์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์„ฑ๊ณต, ๋กœ๋”ฉ, ์—๋Ÿฌ ์ฝœ๋ฐฑ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํŒจ์นญ, ์บ์‹ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์„œ ์‚ฌ์šฉํ–ˆ์Œ. ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ™์€ ๋ชฉ๋กํ˜• ์ •๋ณด๋ฅผ freshํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์ž˜ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Œ.
Axios โ€ข Async / Await ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ํ†ต์‹  ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, then๋ณด๋‹ค ๊น”๋”ํžˆ ์ž‘์„ฑ ๊ฐ€๋Šฅ.
Web Socket โ€ข ์›น ์†Œ์ผ“์€ Statefull protocol์ž„
โ€ข ๊ทธ ์ค‘, socket.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ
Chart JS โ€ข ๊ฒฝํ—˜์น˜ ๋ฐ” ์š”๊ตฌ์‚ฌํ•ญ : โ€œ๊ฐ€์šด๋ฐ๊ฐ€ ํˆฌ๋ช…ํ•˜๋ฉฐ ๋‘˜๋ ˆ์˜ ์ผ๋ถ€๋ถ„์ด ๋šซ๋ ค์•ผํ•จ, ๊ทธ๋ผ๋ฐ์ด์…˜์œผ๋กœ ๊ฒŒ์ด์ง€๋ฐ”๊ฐ€ ์ฑ„์›Œ์ ธ์•ผํ•จ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ํ•„์š”โ€ ์žˆ์—ˆ์Œ.
โ€ข ์บ๋ฆญํ„ฐ ๊ฒฝํ—˜์น˜๋ฐ”์— ์ฐจํŠธ JS๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ๊ทธ๋ผ๋””์–ธํŠธ์—๋Š” ์บ”๋ฒ„์Šค ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉ
โ€ข CSS์—์„œ๋Š” ์›ํ•˜๋Š” ๋งŒํผ ๋‘˜๋ ˆ๋ฅผ ๋šซ๊ธฐ ์–ด๋ ต๊ณ , ๊ฒฝํ—˜์น˜์— ๋”ฐ๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์–ด๋ ค์›Œ์„œ ๋ฐฐ์ œํ•จ.
โ€ข Canvas๋Š” ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ์™€ ๊ทธ๋ผ๋ฐ์ด์…˜์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ํ”„๋กœ์ ํŠธ ์‹œ๊ฐ„๋™์•ˆ ํ„ฐ๋“ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. ์ด๋ถ€๋ถ„์ด ์•„์‰ฝ๊ณ , 3D ์ธํ„ฐ๋ž™์…˜์„ ๊ณต๋ถ€ํ•˜๊ณ ์‹ถ์–ด์„œ ์‹ค์ „ํ”„๋กœ์ ํŠธ ์ข…๋ฃŒ ํ›„ ๊ณต๋ถ€ํ•  ์˜ˆ์ •์ด๋‹ค.
LightHouse โ€ข ์›ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ๋Š๋ฆฐ ์†๋„ ์›์ธ์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ณ , ํ•ด๊ฒฐ ์ „ํ›„์˜ ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, ๊ถŒ์žฅ์‚ฌํ•ญ, ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
Styled-Components โ€ข ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ์„ ๋ฏธ๋ฆฌ ์ปดํฌ๋„ŒํŠธํ™”ํ•ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
โ€ข ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ
ESLINT โ€ข ํŒ€ ๋‚ด ์ •ํ•ด๋†“์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝ”๋”ฉ์„ ํ•จ์œผ๋กœ์จ ๋ฏธ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ์žก์„ ์ˆ˜ ์žˆ๊ณ , ํ˜‘์—…์— ๋„์›€์„ ์คŒ.
React Icon โ€ข ๋””์ž์ด๋„ˆ๋‹˜์˜ ์•„์ด์ฝ˜๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์•„์ด์ฝ˜ ์šฉ๋Ÿ‰์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
Back-End
์‚ฌ์šฉ ๊ธฐ์ˆ  ๊ธฐ์ˆ  ์„ ์ • ์ด์œ  ๋ฐ ์„ค๋ช…
spring-security ์ธ์ฆ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ถŒํ•œ์„ ์ง์ ‘ ์†Œ์Šค๋กœ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๋งŽ์€์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ
spring-mail ์ด๋ฉ”์ผ ์ธ์ฆ ๊ด€๋ จ
oauth2 ์†Œ์…œ ๋กœ๊ทธ์ธ
websocket โ€ข ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์„ ์ •
โ€ข ์š”์ฒญ์ด ์˜ค๋ฉด ์‘๋‹ต์„ ํ•˜๋Š” http ํ”„๋กœํ† ์ฝœ๊ณผ ๋‹ฌ๋ฆฌ ์—ฐ๊ฒฐ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅ
โ€ข Polling, Long Polling, Streaming ๋ฐฉ์‹์œผ๋กœ ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ๋ณด์ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ด๋“ค์€ ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์ด ์•ผ๊ธฐํ•จ.
stomp โ€ข Spring Framework ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ( ์จ๋ณธ์  ์—†๋Š” NodeJs ๋ฅผ ๋ฐฐ์›Œ์„œ ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค Spring ์—์„œ ๊ตฌํ˜„ํ•ด ๋ณด๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค๊ณ  ํŒ๋‹จ )
โ€ข pub/sub ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ด ์†ก/์ˆ˜์‹  ์ฒ˜๋ฆฌ๊ฐ€ ๋ช…ํ™•
โ€ข ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (๋ฉ”๋ชจ๋ฆฌ, Rabbitmq, Kafka, Redis ๋“ฑ๋“ฑ)
swagger โ€ขย Spring REST Docs๋ผ๋Š” ๋ฌธ์„œํ™” ๋„๊ตฌ์™€๋Š” ๋‹ฌ๋ฆฌย Swagger๋Š” ์ฝ”๋“œ ๋ช‡ ์ค„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ ์šฉํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›€.
โ€ข ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ์ œ๊ณต โ†’ Spring REST Docs๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๋ฉด์„œ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€๋งŒย Swagger๋Š” ๋ฌธ์„œ ํ™”๋ฉด์—์„œ ๋ฐ”๋กœ API ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•จ.
Querydsl โ€ข ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•จ์œผ๋กœ์จ, ์ปดํŒŒ์ผ ์‹œ์ ์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์ž๋™ ์™„์„ฑ ๋“ฑ IDE์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข ๋™์ ์ธ ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ํŽธ๋ฆฌํ•˜๋‹ค.
โ€ข ์ฟผ๋ฆฌ ์ž‘์„ฑ ์‹œ ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ๋ฉ”์„œ๋“œ ์ถ”์ถœ์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
aws-s3 upload โ€ข ์ €์žฅ ์šฉ๋Ÿ‰์ด ๋ฌดํ•œ๋Œ€์ด๊ณ  ํŒŒ์ผ ์ €์žฅ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค. ์šฉ๋Ÿ‰์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ์ž‘์—…์ด ํ•„์š” ์—†์Œ
โ€ข ๋‹ค๋ฅธ ์„ค์น˜ ํŒŒ์ผ ์—†์ด HTTP ํ”„๋กœํ† ์ฝœ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
โ€ข ๋น„์šฉ์ด ์ €๋ ด
MySQL Full Text Search(MATCH ~ AGAINST) โ€ข LIKE ๊ฒ€์ƒ‰ ๊ฐœ์„ 
nGrinder / JMeter โ€ข ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ
Redis โ€ข Redis ์˜ Pub/Sub ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ๋„ Stomp ํ”„๋กœํ† ์ฝœ ํ™œ์šฉ์ด ๊ฐ€๋Šฅ
โ€ข ๋ฉ”์ธ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์กด ๊ฐ€๋Šฅ
Github Action โ€ข ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•˜๊ณ  ๋ฐฐํฌ ์‹œ์— ์ž ๊น ์„œ๋ฒ„๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์ƒํ™ฉ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•จ.
โ€ข Jenkins์™€ Github Action 2๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ–ˆ์ง€๋งŒ Jenkins ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋„์ปค์— ์„ค์น˜ํ•ด์•ผ ํ•จ. ๋”๋ถˆ์–ด, ์—ฌ๋Ÿฌ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”
โ€ข Github Action ์€ ์„ค์น˜ ์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ์— ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Github Action์„ ์„ ํƒํ•จ.

๐Ÿค—ย ์œ ์ € ํ…Œ์ŠคํŠธ & ํ”ผ๋“œ๋ฐฑ

๊ธ์ •ํ‰๊ฐ€ ๋ถ€์ •ํ‰๊ฐ€

๐Ÿค—ย ์œ ์ € ๋งŒ์กฑ๋„

๋งŒ์กฑ๋„1 ๋งŒ์กฑ๋„2

UT ํ”ผ๋“œ๋ฐฑ ์ดํ›„ ์ถ”๊ฐ€&๊ฐœ์„  ๊ธฐ๋Šฅ

์ฃผ์š” ํ”ผ๋“œ๋ฐฑ ์ฒ˜๋ฆฌ ๋‚ด์šฉ
์ถ”๊ฐ€ ์„œ๋น„์Šค ๋‚ด์šฉ์„ ๋กœ๊ทธ์ธํ•ด์•ผ์ง€๋งŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€ ์ถ”๊ฐ€
์ถ”๊ฐ€ ํ•˜๋ฃจ todo ์™„๋ฃŒ๋ฅผ 10๊ฐœ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ๋ ˆ๋ฒจ์—…์ด ๋˜์ง€ ์•Š์Œ ๋ ˆ๋ฒจ์—…์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งž์Œ. ์„œ๋น„์Šค ์„ค๋ช…์ฐฝ์— ์ ํ˜€์žˆ์ง€๋งŒ ํ™•์ธ์„ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์œ ์ €๊ฐ€ ์žˆ์—ˆ์Œ. ๋”ฐ๋ผ์„œ todo์™„๋ฃŒ 11๊ฐœ๋ถ€ํ„ฐ๋Š” ๋‹น์ผ์˜ ๊ฒฝํ—˜์น˜๋Š” ๋ชจ๋‘ ์Œ“์•˜๋‹ค๋Š” ์•ˆ๋‚ด ํŒ์—… ์ถ”๊ฐ€
์ถ”๊ฐ€ ํˆฌ๋‘๋ฅผ ์‹ค์ˆ˜๋กœ ์™„๋ฃŒํ–ˆ์„ ๋•Œ ์›๋ณต์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. ํˆฌ๋‘ ์™„๋ฃŒ ์‹œ ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”์ง€ ๋ฌป๋Š” ํŒ์—… ์ถ”๊ฐ€
์ถ”๊ฐ€ ์ „์ฒด/๋ฏธ์™„๋ฃŒ/์™„๋ฃŒ ํ•„ํ„ฐ๋งŒ ์žˆ์–ด์„œ ๋‹น์ผ์˜ ํˆฌ๋‘๋ฅผ ๋ฐ”๋กœ ๋ณด๊ธฐ ์–ด๋ ค์›€ ๋””ํดํŠธ ๊ฐ’์œผ๋กœ ๋‹น์ผ์˜ ํˆฌ๋‘ ํ•„ํ„ฐ ์ถ”๊ฐ€
์ถ”๊ฐ€ ์นœ๊ตฌ์˜ ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ์นœ๊ตฌ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์—†๊ณ  ์นœ๊ตฌ๋ชฉ๋ก ํŽ˜์ด์ง€์— ๋„˜์–ด์™€์„œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ์นœ๊ตฌ์˜ ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ๋ฐ”๋กœ ์นœ๊ตฌ ์ถ”๊ฐ€ํ•˜๋Š” ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€
๊ฐœ์„  ๋ธŒ๋ผ์šฐ์ € ๋ณ„ ํ˜ธํ™˜์„ฑ์ด ๋งž์ง€ ์•Š์•„ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋„ค์ด๋ฒ„์•ฑ, ์‚ผ์„ฑ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์บ๋ฆญํ„ฐ ๊ฒฝํ—˜์น˜ ๋ฐ” ํ™•์ธ ๋ถˆ๊ฐ€ ์œ ์ € ์ธ์ž… ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํŒŒ์•…ํ•œ ๋’ค ๋ฌธ์ œ ๋ธŒ๋ผ์šฐ์ € ์œ ์ž… ์‹œ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ ์œ ๋„
- App.tsx ์— ์ธ์ž… ๋ธŒ๋ผ์šฐ์ € ํ™•์ธ function ๋„์ž…
๊ฐœ์„  ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€์—์„œ ์Šคํฌ๋กค์„ ๋งŽ์ด ๋‚ด๋ฆฌ๋ฉด ์˜ฌ๋ผ์˜ค๊ธฐ ์‰ฝ์ง€ ์•Š๊ณ , ๊ฒŒ์‹œ๋ฌผ์„ ๋ณธ ๋’ค ๋’ค๋กœ ๊ฐ€๋ฉด ์Šคํฌ๋กค์ด ์˜ฌ๋ผ๊ฐ€์„œ ๋‹ค์‹œ ๋‚ด๋ ค๊ฐ€์•ผ ํ•จ ๊ฐ ํŽ˜์ด์ง€์— TOP ์ด๋™ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- div์— ref๋ฅผ ์ค˜์„œ Element.scrollTo ์†์„ฑ์œผ๋กœ ์ฒ˜๋ฆฌ
๊ฒŒ์‹œ๋ฌผ ํ™•์ธ ํ›„ ๋’ค๋กœ ๊ฐ”์„ ๋•Œ ํ™•์ธํ•œ ๋ถ€๋ถ„๊นŒ์ง€ ์Šคํฌ๋กค ์œ ์ง€
- ์ƒ์„ธ ํฌ์ŠคํŠธ๋ฅผ ํŒ์—…์ฒ˜๋Ÿผ ๋„์› ์Œ. ํฌ์ŠคํŠธ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ path๋Š” ๋ณ€๊ฒฝํ•˜๊ณ , ๋ชฉ๋ก ํŽ˜์ด์ง€์—์„œ useEffect์™€ useParam์œผ๋กœ ํฌ์ŠคํŠธ์˜ id๊ฐ€ ์žˆ์„ ๋•Œ ์ƒ์„ธ ํฌ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ์กฐ๊ฑด๋ถ€๋ Œ๋”๋ง ํ•จ.
๊ฐœ์„  ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ง„ ๋†’์ด๊ฐ€ ์งค๋ ค์„œ ๋‚˜์˜ด ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ง„ ๋น„์œจ ๊ฐœ์„ 
๊ฐœ์„  Todo ๋‹ฌ๋ ฅ์—์„œ ์›” ์ „์ฒด ์„ ํƒ์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ˆ„๋ฅด๋ฉด ์„ ํƒ์ด ์ทจ์†Œ๋˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ์ผ์ˆ˜๋งŒํผ ์ถ”๊ฐ€๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ ์ผ์ˆ˜ ์ถ”๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ, ๋ฒ„ํŠผ์„ ๋‹ค์‹œ ๋ˆŒ๋ €์„ ๋•Œ ์„ ํƒ์„ ์ทจ์†Œํ•˜๋Š” ๊ธฐ๋Šฅ ๋„์ž…
๊ฐœ์„  ์บ๋ฆญํ„ฐ ์„ค๋ช… ์•„์ด์ฝ˜์ด ์ž˜ ๋ณด์ด์ง€ ์•Š์Œ ์•„์ด์ฝ˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์ž˜ ๋ณด์ด๊ฒŒ ํ•จ
๊ฐœ์„  ํ™”๋ฉด ๊ธธ์ด๊ฐ€ ์งง์€ ์ผ๋ถ€ ๊ธฐ์ข…์—์„œ๋Š” ํ•˜๋‹จ ๋‚ด์šฉ์„ ๋ณผ ๋•Œ ๋ถˆํŽธํ•จ ๊ฐ ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ์—ฌ๋ฐฑ์„ ์ค˜์„œ ๋ฒ„ํŠผ์ด ์‰ฝ๊ฒŒ ๋ˆŒ๋ฆฌ๋„๋ก ํ•จ

Pinned Loading

  1. Front-end Front-end Public

    TODOWITH ํ”„๋ก ํŠธ์—”๋“œ : React, Typescript, Recoil, React Query

    TypeScript 5 6

Repositories

Showing 3 of 3 repositories
  • Back-end Public

    ๋ฐฑ์—”๋“œ ๋ ˆํฌ

    HanghaeE5/Back-endโ€™s past year of commit activity
    Java 6 2 18 0 Updated Sep 1, 2022
  • Front-end Public

    TODOWITH ํ”„๋ก ํŠธ์—”๋“œ : React, Typescript, Recoil, React Query

    HanghaeE5/Front-endโ€™s past year of commit activity
    TypeScript 5 6 0 0 Updated Aug 12, 2022
  • .github Public

    TODO WITH

    HanghaeE5/.githubโ€™s past year of commit activity
    0 0 0 0 Updated Aug 12, 2022

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ