Git Product home page Git Product logo

querouter's Introduction

header

Millie's GitHub stats
Top Langs

My tech stacks

HTML5 CSS3 JavaScript TypeScript React SASS Webpack


I'm currently learning...

React Query Vite React Native


My life motto

while (doubt || worry) {
  exercise();
  if (tired) break;
  sweatItOut();
}

Hits

Footer

querouter's People

Contributors

jaypedia avatar

Watchers

 avatar

querouter's Issues

Compare `moment.js` and `day.js` library and apply the better one

Description

  • ์˜ค๋Š˜์˜ ๋‚ ์งœ, todo ์ƒ์„ฑ์ผ๊ณผ ์—…๋ฐ์ดํŠธ์ผ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ moment.js์™€ day.js๋ฅผ ๋น„๊ตํ•œ ํ›„, ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— ๋” ๋งž๋Š” ๊ฒƒ์„ ์„ ํƒ

๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ๋น„๊ต

  • Bundlephobia๋ผ๋Š” ์‚ฌ์ดํŠธ์—์„œ package๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋ฒˆ๋“ค๋ง ๋œ ์‚ฌ์ด์ฆˆ๋ฅผ ์•Œ๋ ค์คŒ

[email protected]

image

  • minified 290.4kB

[email protected]

image

  • minified 6.5kB

[email protected]

image

  • minified 89.4kB

My choice

  • ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ์˜ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ • ์‹œ๊ฐ„๋งŒ ๋ณด์—ฌ์ฃผ๋ฉด ๋˜๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๋“ค๋œ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ dayjs๋ฅผ ์„ ํƒ
  • day.js ์†Œ๊ฐœ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉด, I18n(Internationalization, ๊ตญ์ œํ™”)๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ์ฝ”๋“œ์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋นŒ๋“œํ•  ๋•Œ ํฌํ•จ๋˜์ง€ ์•Š์•„ ๋”์šฑ ์ข‹๋‹ค.
  • List of breakdown range
    image

Reference

Refactor Home component: remove prop drilling

Description

  • ๊ธฐ์กด Home ์ปดํฌ๋„ŒํŠธ์—์„œ todo data ์š”์ฒญ ๋กœ์ง์ด ์žˆ๊ณ , ์ด๊ฒƒ์„ prop drilling์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.
  • ์ด ๋ฐ์ดํ„ฐ๋Š” List ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, List ์ปดํฌ๋„ŒํŠธ์—์„œ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

Reflect `Second PR` reviews

1. #20 (comment)

image

  • localStorage์˜ property key์— ๊ณต๋ฐฑ์„ ๋„ฃ์–ด user token์ด๋ผ๊ณ  ์ •ํ–ˆ๋Š”๋ฐ, localStorage ์—ญ์‹œ object์ธ ๋งŒํผ camelCase naming convention์„ ๋”ฐ๋ผ userToken์œผ๋กœ ๋ช…๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

2. #20 (comment)

image

3. #20 (comment)

image

  • ์‚ญ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฐ”๋กœ ์‚ญ์ œ๋˜๋„๋ก ํ•˜์ง€ ์•Š๊ณ , confirm ์ฐฝ์„ ๋„์›Œ์„œ ํ™•์ธ๋  ๋•Œ์—๋งŒ ์‚ญ์ œ๋˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

Reflect `First PR` reviews

1.

  • #9 (comment)
  • image
  • setButton ํ•จ์ˆ˜๋ช… ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณ€๊ฒฝ

2.

  • #9 (comment)
  • image
  • Input ์ปดํฌ๋„ŒํŠธ ํƒ€์ž… ๋ณ€๊ฒฝ

3.

  • #9 (comment)
  • FC ์‚ฌ์šฉ ๊ด€๋ จ ์ด์Šˆ ํ™•์ธ

4.

  • #9 (comment)
  • Strict mode ํ•™์Šต & ์ ์šฉ

Refactor API functions using `axios`

Description

  • axios๋ฅผ ์‚ฌ์šฉํ•œ API ํ•จ์ˆ˜๋“ค ๋ฆฌํŒฉํ† ๋ง

Progress

  • timeout ์ ์šฉ
  • AxiosRequestConfig ํƒ€์ž… ์ ์šฉ

Apply Contextual Error to delete action

Description

  • destroy action ์ˆ˜ํ–‰ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ข€ ๋” ์ ํ•ฉํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋„์ž…

Progress

  • destroy ๊ฒฝ๋กœ์— errorElement ์ถ”๊ฐ€

ESLint import/no-unresolved Error

Description

image

  • TypeScript alias path ์„ค์ • ํ›„ import ์‹œ, ESLint์—์„œ ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜์—ฌ ์—๋Ÿฌ ๋ฐœ์ƒ

Progress

  • eslint-import-resolver-typescript ์„ค์น˜
    $ npm i -D eslint-import-resolver-typescript
    
  • eslintrc ์ˆ˜์ •
    {
      "settings": {
        "import/resolver": {
          "typescript": {}
        }
      }
    }
    

Update item deletion mechanism by leveraging `action="destroy"`

Description

  • React Roter์˜ <Form> ์†์„ฑ์ธ action="destroy"๋ฅผ ์ ์šฉํ•˜์—ฌ ์•„์ดํ…œ ์‚ญ์ œ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

๊ธฐ์กด ๋ฐฉ์‹

<Button size="xSmall" background="black" text="Delete" onClick={handleDeleteClick} />

Progress

  • ๊ธฐ์กด Button์œผ๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ Form ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณ€๊ฒฝ
  • Form ์ปดํฌ๋„ŒํŠธ์— action="destory" ์ ์šฉ
  • onSubmit handler์— ์ปจํŽŒ์ด ์•„๋‹ ์‹œ event.preventDefault() ์ ์šฉ
  • action ํ•จ์ˆ˜์—์„œ deleteTodo API ํ˜ธ์ถœ, invalidateQueries ํ˜ธ์ถœ, redirect ๋“ฑ ๋กœ์ง ์ถ”๊ฐ€
  • router์— destroy ๊ฒฝ๋กœ path ์ถ”๊ฐ€ ๋ฐ action ์„ค์ •

Ref

Implement Login & Sign up Feature

  • /auth ๊ฒฝ๋กœ์— ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ (๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…์„ ๋ณ„๋„์˜ ๊ฒฝ๋กœ๋กœ ๋ถ„๋ฆฌํ•ด๋„ ๋ฌด๋ฐฉ)
  • #5
    • ์ด๋ฉ”์ผ ์กฐ๊ฑด : @, . ํฌํ•จ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์กฐ๊ฑด : 8์ž ์ด์ƒ ์ž…๋ ฅ
    • ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ชจ๋‘ ์ž…๋ ฅ๋˜์–ด ์žˆ๊ณ  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ์ œ์ถœ ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™”๋จ
  • #6
    • ๋กœ๊ทธ์ธ API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅธ ์‘๋‹ต์„ ๋ฐ›์•˜์„ ๋•Œ ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ์ด๋™์‹œํ‚ด
    • ์‘๋‹ต์œผ๋กœ ๋ฐ›์€ ํ† ํฐ์€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ
    • ๋‹ค์Œ ๋ฒˆ์— ๋กœ๊ทธ์ธ ์‹œ ํ† ํฐ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
    • ์–ด๋–ค ๊ฒฝ์šฐ๋“  ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

Implement Todo List CRUD Features

C: Todo ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ•  ์ผ์ด ์ถ”๊ฐ€๋จ
R: ํ•œ ํ™”๋ฉด ๋‚ด์—์„œ Todo List์™€ ๊ฐœ๋ณ„ Todo์˜ ์ƒ์„ธ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„
U: Todo ์ˆ˜์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ˆ˜์ • ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ , ์ˆ˜์ • ๋‚ด์šฉ์„ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Œ
D: Todo ์‚ญ์ œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น Todo๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ

Check bundle size using `webpack-bundle-analyzer`

Description

  • webpack-bundle-analyzer ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ์ฒดํฌ

Progress

  • ํ•ด๋‹น ํŒจํ‚ค์ง€ devdependency๋กœ ์„ค์น˜
  • ํŒจํ‚ค์ง€ ๋ณ„ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ํ™•์ธ

Remove `NewTodo` page and change the way to create a new todo

Description

  • new todo ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๊ธฐ์กด New todo ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํˆฌ๋‘๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ
  • new todo ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋””ํดํŠธ ์ œ๋ชฉ์ธ 'New todo'๋กœ ์ƒˆ๋กœ์šด ํˆฌ๋‘๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์œ ์ €๋Š” ์ถ”ํ›„ edit ๋ฒ„ํŠผ์œผ๋กœ ๋‚ด์šฉ์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค.

Upgrade Error Handling Page

Description

  • ๊ธฐ์กด์˜ Error Handling Page๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์ข€ ๋” ์„ธ์‹ฌํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝ
    • ๊ธฐ์กด ๋ฐฉ์‹ : React Router์˜ useRouteError hook์„ ํ™œ์šฉ
    • ErrorPage๋ฅผ Route ์ปดํฌ๋„ŒํŠธ์˜ errorElement์— ๋†“๊ฒŒ ๋˜๋ฉด, ์ด hook์ด action, loader, rendering ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ๋˜์ ธ ์คŒ
    • isRouteErrorResponse : route error๊ฐ€ route error response์ผ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•จ

Progress

  • isRouteErrorResponse๋ฅผ ํ™œ์šฉํ•˜์—ฌ route์™€ ๊ด€๋ จ๋œ ์—๋Ÿฌ์ผ ๋•Œ์™€, ๊ทธ ์™ธ ์—๋Ÿฌ์ผ ๋•Œ๋ฅผ ๊ตฌ๋ถ„

Refactor routing

Description

  • react-router-dom ์—…๋ฐ์ดํŠธ ๋œ ๋ฐฉ์‹์œผ๋กœ ๋ผ์šฐํŒ… ๋ฐฉ์‹ ์ˆ˜์ •
  • ๋กœ๊ทธ์ธ ์‹œ loader ์ ์šฉํ•˜๊ณ  useEffect ์‚ญ์ œ

Utilize `useNavigation` to apply global pending UI

Description

  • global pending UI๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด React Router์˜useNavigation์ด ๋ฐ˜ํ™˜ํ•˜๋Š” state๋ฅผ ํ™œ์šฉ

Progress

  • useNavigation ํ™œ์šฉ
  • state === loading์ผ ๋•Œ ์Šคํƒ€์ผ ์ ์šฉ

Update packages

Description

  • ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ

Progress

2022.11.17

  • axios: 0.27.2 โ†’ 1.1.3
  • react-router-dom: 6.3.0 โ†’ 6.4.3
  • react-query: 3.39.1 โ†’ @tanstack/react-query: 4.16.1

2023.5.5

  • @tanstack/react-query : ^4.16.1 โ†’ ^4.29.5
  • @tanstack/react-query-devtools : ^4.16.1 โ†’ ^4.29.6
  • react-router-dom: ^6.4.3 โ†’ ^6.11.1

Apply pending style to List Component

Description

  • React Router์˜ NavLink์—์„œ className ๋ถ€์—ฌ ์‹œ isPending์„ ํ™œ์šฉํ•˜์—ฌ UX ํ–ฅ์ƒ

Progress

  • List ์ปดํฌ๋„ŒํŠธ์˜ NavLink ์ปดํฌ๋„ŒํŠธ์— isPending ์ถ”๊ฐ€
  • pending์ผ ์‹œ ์Šคํƒ€์ผ๋ง

Add `formData` type

Description

image

  • ๊ธฐ์กด formData์˜ ํƒ€์ž…์ด ๋ช…์‹œ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋˜ ์—๋Ÿฌ ํ•ด๊ฒฐ
  • Property 'email' does not exist on type 'EventTarget'.ts(2339)

Adjust the position of form button in the header

Description

  • ํ—ค๋”์— ์žˆ๋Š” Form Button์˜ ์œ„์น˜ ์กฐ์ •
    • react-router-dom์˜ Form ์ปดํฌ๋„ŒํŠธ๋ฅผ ์“ฐ๋ฉด์„œ, ๋ฒ„ํŠผ์˜ ์œ„์น˜๊ฐ€ ์•ฝ๊ฐ„ ์•ˆ ๋งž๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•จ.

Progress

  • Form ์ปดํฌ๋„ŒํŠธ์— line-height: 0์„ ์ฃผ์–ด ํ•ด๊ฒฐ

Change UI & Routing

Description

  • ์œ ์ €์˜ ์‚ฌ์šฉ์„ฑ ๊ณ ๋ คํ•˜์—ฌ UI์™€ Routing ๋ณ€๊ฒฝ

Before

image

UI

  • Header์— Logout ๋ฒ„ํŠผ์ด ์žˆ๊ณ , New Todo ๋ฒ„ํŠผ์ด Todo container์˜ ์šฐ์ธก ์ƒ๋‹จ์— ์žˆ์Œ
  • ์กฐ๊ธˆ ๋” ์‚ฌ์šฉ์„ฑ์ด ์ข‹๋„๋ก ์œ„์น˜ ๋ณ€๊ฒฝ

Routing

  • edit Form์œผ๋กœ ๊ฐ”์„ ๋•Œ๋„ ๋ผ์šฐํŒ…์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ

Apply `Pop-up`(Dialog)/`Snackbar`/`Toast`

Description

  • ๊ฐ ์ƒํ™ฉ์— ๋งž๊ฒŒ Pop-up, Snackbar, Toast ์ ์šฉํ•˜๊ธฐ

Toast

๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘, npm ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ react-toastify๋กœ ๊ฒฐ์ •

  • dark theme, light theme ์ ์šฉ
  • prevent duplicate ์ ์šฉ (๋กœ๊ทธ์ธ ์‹คํŒจ ์‹œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ค‘๋ณตํ•˜์—ฌ ์Œ“์ด๋Š” ๊ฒƒ ๋ฐฉ์ง€)

React-toastify documentation ์‚ฌ์ดํŠธ ์ฐธ๊ณ ํ•˜์—ฌ ์‚ฌ์šฉ

  • Login ์„ฑ๊ณต ์‹œ
  • Logout ์„ฑ๊ณต ์‹œ
  • todo ์‚ญ์ œ ์™„๋ฃŒ ์‹œ
  • ๋กœ๊ทธ์ธ ํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ Home ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ์‹œ
  • ๋กœ๊ทธ์ธ ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์‹œ

Apply Routing to Todo List individually

Description

  • ๊ฐœ๋ณ„ ํˆฌ๋‘ ๋ชฉ๋ก๋งˆ๋‹ค ๋ผ์šฐํŒ…์„ ์ ์šฉํ•˜์—ฌ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ธฐ
  • ๊ฐœ๋ณ„ ํˆฌ๋‘ ๋ชฉ๋ก ํด๋ฆญ ์‹œ ํ˜„์žฌ ์„ ํƒ๋œ ํˆฌ๋‘๊ฐ€ ํ•˜์ด๋ผ์ดํŒ… ๋˜๋„๋ก ๊ตฌํ˜„

Implement Todo List

  • #8
    • C: Todo ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ•  ์ผ์ด ์ถ”๊ฐ€๋จ
    • R: ํ•œ ํ™”๋ฉด ๋‚ด์—์„œ Todo List์™€ ๊ฐœ๋ณ„ Todo์˜ ์ƒ์„ธ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„
    • U: Todo ์ˆ˜์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ˆ˜์ • ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ , ์ˆ˜์ • ๋‚ด์šฉ์„ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Œ
    • D: Todo ์‚ญ์ œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น Todo๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ
  • #16
    • ๊ฐœ๋ณ„ Todo๋ฅผ ์กฐํšŒ ์ˆœ์„œ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ํ†ตํ•˜์—ฌ ์กฐํšŒ ๊ฐ€๋Šฅ
  • ํ•œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ•ฉ์„ฑ์„ ๊ฐ–์ถ”๋„๋ก ๊ตฌํ˜„
    • ์ˆ˜์ •๋˜๋Š” Todo์˜ ๋‚ด์šฉ์ด ๋ชฉ๋ก์—์„œ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋จ
  • ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ์„ ๋•Œ ํ˜„์žฌ ์ƒํƒœ ์œ ์ง€

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.