Skip to content

๐Ÿ”จ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋์žฅ๋‚ด๊ธฐ ์ œ 1ํƒ„, TypeScript Crash! ๐Ÿ”จ

License

Notifications You must be signed in to change notification settings

pagers-org/TypeScriptCrash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

FrontEnd Crash - TypeScript!๐Ÿ”จ

ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฟŒ์…”๋ด…์‹œ๋‹ค!๐Ÿ˜‰


packages/ : ํ”„๋กœ์ ํŠธ ํด๋” homework/_workspace : ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋‹จ๋ฐœ์„ฑ ๊ณผ์ œ ํด๋”


๐Ÿ™‡๐ŸปINTRO๐Ÿ™‡๐Ÿปโ€โ™€๏ธ

ํ•ด๋‹น ์ €์žฅ์†Œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜์ง€๋งŒ, ์ตœ๋Œ€ํ•œ ์ ์‘ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ† ์ด ํ”„๋กœ์ ํŠธ ํ˜•์‹์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

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

ํ˜„์žฌ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ผ๋ถ€๋Ÿฌ ๊ตฌ์กฐํ™”, ์ฑ…์ž„ ๋ถ„๋ฆฌ, ํด๋ฆฐ ์ฝ”๋“œ๋‚˜ ๋ฆฌํŒฉํ† ๋ง์˜ ๊ฐœ๋…์„ ์™„์ „ ๋ฐฐ์ œํ•˜๊ณ  ๋Ÿฌํ”„ํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ•˜๋ฉฐ ํ‹€์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์™„์„ฑํ•ด๋ณด์ฃ !


๐Ÿ’ชUSAGE๐Ÿ’ช

  • ๊ฐ์ž ์ €์žฅ์†Œ๋ฅผ forkํ•ฉ๋‹ˆ๋‹ค.
  • packages/{์ž์‹ ์˜ ๋‹‰๋„ค์ž„}์œผ๋กœ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋งŒ์•ฝ ์ƒˆ๋กœ ํ•˜๋Š” ๋ถ„์ด๋ผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์„ธ์š”!).
    • ๋ฐ˜๋“œ์‹œ ์ž์‹ ์˜ ํด๋”์—์„œ๋งŒ ์ž‘์—…ํ•ด์ฃผ์„ธ์š”.
  • ์ž‘์—… ํ›„ PR์„ ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ main์— ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค๐Ÿ˜Š

๐Ÿ’ปINSTALL & RUN๐Ÿ’ป

  • Install
    npm install # or npm i

  • Run

    โ›”๏ธ์ฐธ๊ณ โ›”๏ธ

    • ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ๋ฐฑ์—”๋“œ๋ž‘ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐ™์ด ๋ชป ๋Œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜ฅ ํ„ฐ๋ฏธ๋„์„ ๋‚˜๋ˆ ์„œ ๋ฐฑ์—”๋“œ/ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐ™์ด ์‹คํ–‰์‹œ์ผœ์ฃผ์„ธ์š”... ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜ญ

    npm run start:api     # backend: server
    npm run start:{๋‹‰๋„ค์ž„} # frontend: client
    • ex) npm run start:parang

  • Build
    npm run build

๐Ÿ‹๏ธโ€โ™‚๏ธREQUIREMENTS๐Ÿ‹๏ธโ€โ™€๏ธ

โ˜‘๏ธ Necessary

  • *.jsํŒŒ์ผ์„ *.ts๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • any ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • type๊ณผ interface์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์ž์‹ ๋งŒ์˜ ์ปจ๋ฒค์…˜์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • UI์™€ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌ(MVC ์ ์šฉ์ด๋‚˜ ํด๋” ๊ตฌ์กฐํ™” ๋“ฑ)ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸฉ Additional

  • ์ด๋ฉ”์ผ ์ค‘๋ณต ํ™•์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(API ์ค€๋น„ X: 2022-03-15 ์ผ์ž).
  • ๋ถ๋งˆํฌ ์ค‘๋ณต ํ™•์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(API ์ค€๋น„ X: 2022-03-15 ์ผ์ž).
  • ๋ถ๋งˆํฌ ์ œ๊ฑฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • API ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœํ•„ ํƒญ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŸจ Do more

  • ํ”„๋ ˆ์ž„์›Œํฌ(React, Vue, Svelt)๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ› TECH STACK๐Ÿ› 

๐Ÿ’ Frontend


๐Ÿ’ Backend


๐Ÿ’ DevOps


๐Ÿ“API๐Ÿ“

baseUrl

http://localhost:3000


Create User

method uri
POST /api/user
{
  requestBody: {
    "email": "string",
    "password": "string"
  },
  response: {
    "_id": "string",
    "email": "string",
    "password": "boolean",
    "bookmark": [
      {
        "_id": "string",
        "url": "string",
      },
    ]
  }
}

Login User

method uri
POST /api/user/login
{
  requestBody: {
   "email": "string",
   "password": "string"
  },
  response: {
   "_id": "string",
   "email": "string",
   "password": "boolean",
   "bookmark": [
     {
       "_id": "string",
       "url": "string",
     },
    ]
  }
}

Find Bookmark List

method uri
POST /api/user/bookmark
{
  requestBody: {
    "_id": "string",
  },
  response: [
    {
      "_id": "string",
      "url": "string",
    },
  ]
}

Add Bookmark

method uri
POST /api/user/bookmark/:bookmarkId
{
  requestBody: {
    "_id": "string",
  },
  response: {
    "_id": "string",
    "email": "string",
    "password": "boolean",
    "bookmark": [
      {
        "_id": "string",
        "url": "string",
      },
    ]
  }
}

Remove Bookmark

method uri
DELETE /api/user/bookmark/:bookmarkId
{
  requestBody: {
    "_id": "string",
  },
  response: "number"
}

๐Ÿ‘ฉโ€๐Ÿ’ปCONTRIBUTORS๐Ÿ‘จโ€๐Ÿ’ป


ํŒŒ๋ž‘ ๐Ÿ’ป

์กฐ์ด ๐Ÿ’ป

Seal ๐Ÿ’ป

๋‚˜๋ฌด ๐Ÿ’ป

์˜ˆ์ธ„ ๐Ÿ’ป

์ฝ˜์†” ๐Ÿ’ป

โœ๏ธCONVENTIONโœ๏ธ

ํƒœ๊ทธ ์„ค๋ช…
โœ’๏ธFeat: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ
๐Ÿ› Fix: ๋ฒ„๊ทธ๋ฅผ ๊ณ ์นœ ๊ฒฝ์šฐ
โœ๏ธDesign: CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
โ—๏ธโ™ป๏ธBREAKING CHANGE: ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
โ—๏ธโœ”๏ธHOTFIX: ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผํ•˜๋Š” ๊ฒฝ์šฐ
๐ŸŽ†Style: ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ์„ธ๋ฏธ ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ˆ˜์ •์ด ์—†๋Š” ๊ฒฝ์šฐ
๐Ÿ—ƒRefactor: ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
๐Ÿ’ฌComment: ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
๐Ÿ“Docs: ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ
๐ŸงชTest: ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X)
๐Ÿ”ฌChore: ๋นŒ๋“œ ํƒœ์ŠคํŠธ ์—…๋ฐ์ดํŠธ, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X)
โœ‚๏ธRename: ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ
๐ŸงบRemove: ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ

๐Ÿ“œLICENSE๐Ÿ“œ


About

๐Ÿ”จ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋์žฅ๋‚ด๊ธฐ ์ œ 1ํƒ„, TypeScript Crash! ๐Ÿ”จ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published