-
Notifications
You must be signed in to change notification settings - Fork 3
๐จ Skill Spec
Jongeun Kim edited this page Mar 15, 2021
·
4 revisions
- NodeJS Web Framework: express
- ์ ์ ์ด์ : ํ์ต ๊ธฐ๊ฐ ์ค์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํด๋ณธ ์น ํ๋ ์์ํฌ๋ก ์ด๋ฒ ๋ฏธ์ ์์ ์๋กญ๊ฒ ์ฌ์ฉํด๋ณด๋ ๊ธฐ์ ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์น ํ๋ ์์ํฌ๋ ๋ชจ๋๊ฐ ์ต์ํ ํ๋ ์์ํฌ๋ก ์งํํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ํ๋จํจ
- Graphql Server: Apollo Server
- Database: MongoDB (ODM: mongoose)
- ์ ์ ์ด์ : ํ๋ก์ ํธ ํน์ฑ์ ์ง๋ ์ปดํฌ๋ํธ๋ฅผ ํตํ ์ค์๊ฐ ์์น๊ณต์ ๊ฐ ํ๋ฐํ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆฐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค๋ NOSQL์ธ ๋ชฝ๊ณ ๋๋น๊ฐ ์ ํฉํ๋ค๊ณ ํ๋จํจ(?)
- Auth: passport
- Node Process Manager: PM2
- Language: TypeScript
- Testing: Postman
- React Framework : CRA(Create React App)
- ์ ์ ์ด์ : ์ด๊ธฐ์ ์นํฉ์ ์ง์ ์ค์ ํด ํ๋ํ๋ ๊ตฌ์ฑํ๋ ๊ฒ๊ณผ nestjs, cra ์ ์ค์ ๊ณ ๋ฏผํ๋๋ฐ ๋ฐ๋๋ผ์ธ์ด ์๋ ๊ณผ์ ์ด๋ ๋งํผ ๋น ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์๋ cra, nest ์ค์ ๊ณ ๋ฏผํ๊ฒ ๋์๋ค. ๊ทธ ์ค ssr์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ์ค์ (css-in-js, apollo ๋ฑ)์ด ํ์ํ๊ธฐ ๋๋ฌธ์ cra๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋์ ๊ฒ ๊ฐ๋ค๊ณ ํ๋จํจ
- State Management Library: Redux
- ์ ์ ์ด์ : redux์ recoil์ค ๊ณ ๋ฏผํ๋๋ฐ fluxํจํด์ ์ดํดํ๋ ๊ฒ๊ณผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถํฐ ์ฌ์ฉํด๋ณด๋๊ฒ ์ข๋ค๊ณ ํ๋จํจ
- Map : Google Map
- UI Component Library: Ant Design Mobile
- ์ ์ ์ด์ : css๋ฅผ ์ง์ ์์ฑํด ๋ชจ๋ UI๋ฅผ ๊ตฌํํ๋ ๊ฒ ๋ณด๋ค๋ ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ์์ฑํ๋ ๊ฒ์ด ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ํ๋จํด UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์๊ณ ๊ฒฐ์ ํ๋๋ฐ ๊ทธ ๊ณผ์ ์์ ๋ค์ด๋ฒ ๋น์ฆ๋์ค ํ์์ ์ค์ ์ฌ์ฉ์ค์ธ Ant Design Mobile์ ๊ฒฝํํด ๋ณด๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋จํจ
- Graphql Client : Apollo Client
- Language: TypeScript
- Testing Tool: jest, msw, cypress(option)
- ์ ์ ์ด์ :
-
Testing tool
- jest
- cypress
-
eslint, prettier
- eslint
- code ์ปจ๋ฒค์ ๋ฐ ๊ท์น ์ค์
- prettier
- code ์ปจ๋ฒค์ ๋ฐ ์คํ์ผ ์ค์
- eslint
-
react (CRA-typescript)
- react-route-dom
-
styled-components
- javascript ํ์ผ ๋ด์์ ์คํ์ผ์ ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (CSS-in-JS)
- CSS์ props๋ฅผ ์ ์ฉ์ํฌ ์ ์๋ค๋ ์ฅ์
- CSS๋ฅผ ์ปดํฌ๋ํธํ ํ ์ ์์ด ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ CSS๊ฐ ๋ณต์กํด์ง๋ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐ
-
apollo-client
- apollo-server์ query, mutation, subscription์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
-
Redux
- ๋ฆฌ์ํธ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
-
Google Map
- google maps places api (Place Search)
- ์ฅ์ ๊ฒ์ (์๋๊ฒฝ๋๋ก ๋ณํ)
- google maps places api (Place Autocomplete)
- ๊ฒ์ ์๋ ์์ฑ
- google-maps-react
- ๋ฆฌ์กํธ์์ ๊ตฌ๊ธ ์ง๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ชจ๋
- ์ง๋ ํ์, ๋ง์ปค
- naver-direction-api 5
- ๊ฒฝ๋ก ๊ณ์ฐ, ๊ฒฝ์ ์ง, ํ์์๊ธ
- google maps places api (Place Search)
-
Antd Mobile
- UI Components ๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ๋์์ค ์ ์๋ UI ํ๋ ์์ํฌ
-
testing tool
- msw
- ์ฌ์ฉํ ์๋ฒ๋ฅผ mockingํด์ ๊ฐ์์ ์๋ฒ๋ฅผ ๋ง๋ค์ดํด์ ๊ฐ์์ ์๋ฒ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- msw
-
express & middlewares
- express
- nodejs web framework
- NodeJS๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋ง๋ ํด๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์งํฉ์ฒด
- compression
- express ์์ถ ๋ฏธ๋ค์จ์ด
- ๋ฏธ๋ค์จ์ด๋ฅผ ํต๊ณผํ๋ ๋ชจ๋ ์์ฒญ์ ๋ํด gzip์์ถ์ ์ฌ์ฉํด ์๋ต์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์
- hpp
- express ๋ณด์ ๋ชจ๋
- morgan
- ๋ก๊ทธ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ฏธ๋ค์จ์ด
- ํ๊ฒฝ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ์ค์ ์ผ๋ก ๋ก๊ทธ ๊ด๋ฆฌ๋ฅผ ์ปค์คํ ํ ์ ์์
- helmet
- express ๋ณด์ ๋ชจ๋
- HTTP ํค๋๋ฅผ ์ค์ ํ์ฌ Express ์ฑ์ ๋ณดํธํ๋๋ฐ ๋์์ ์ค๋ค
- ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ์ ์ค์ํ ์ ๋ณด๊ฐ ์ค์๋ก ์ ๋ฌ๋์ง ์๋๋ก HTTP header๋ฅผ ์๋์ผ๋ก ์ค์ ํด์ค๋ค (์ฝํ ์ธ ๋ณด์ ์ ์ฑ , XSS ํํฐ๋ง, HTTP ์๊ฒฉํ ์ ์ก ๋ณด์ ๋ฑ)
- dotenv
- ํ๊ฒฝ ๋ณ์ ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ ์ญ์ผ๋ก ํ์ํ ๋ณ์๋ค, ์ธ๋ถ์ ๊ณต๊ฐํ์ง ๋ง์์ผํ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ ๊ด๋ฆฌํ๊ธฐ์ํด ์ฌ์ฉ
- cors
- cors ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ์ฌ ๋๋ฉ์ธ๊ณผ ๋ค๋ฅธ ๋๋ฉ์ธ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ธฐ์ํด ์ฌ์ฉ
- express
-
apollo-server
- apollo-server-express
- apollo-server์ express๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋ชจ๋
- graphql-subscriptions
- graphql์ subscription์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋
- graphql
- graphql ๋ชจ๋
- graphql-tools
- graphql ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ํด ๋ชจ๋
- graphql type, resolvers ๋ฑ์ ๋ถ๊ธฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ
- apollo-server-express
-
auth
- jwt
- ์ธ์ฆ์ ์ฌ์ฉํ๋ ํ ํฐ
- refresh token, access token์ผ๋ก ๋๋ ์ ๊ด๋ฆฌ
- passport
- Node.js์์ ๋ค์ํ ์ ๋ต์ ํตํด Authentication์ ์ ์ฉ์ํค๊ธฐ ์ํด ์ฌ์ฉ
- ๋ค์ํ ์ ๋ต์ ํตํด ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฆ์ ์ํํ ์ ์์
- jwt
-
mongoose
- MongoDB ODM
-
typescript
- ts-node
- typescript๋ฅผ node์์ ์คํ์์ผ์ฃผ๋ ๋ชจ๋
- tsconfig-paths
- typescript ์ ๋๊ฒฝ๋ก ์ถ๊ฐ ๋ชจ๋
- ts-node
-
@graphql-codegen
- graphql์์ ์ฌ์ฉํ๋ ์คํค๋ง์ ๋ฆฌ์กธ๋ฒ์ ๋ํ ํ์ ์ ์์ฑํด์ฃผ๋ ์ ๋๋ ์ดํฐ ํด
-
nodemon
- ํ๋ก์ ํธ ํด๋์ ํ์ผ๋ค์ ๋ชจ๋ํฐ๋ง, ํ์ผ์ด ์์ ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์๋ฒ๋ฅผ ์ฌ์์ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- NCP
- Boostcamp ํ์์ฌ๋ก NCP์์ ์ ๊ณตํ ํฌ๋ ๋ง์ ์ฌ์ฉํด ์๋ฒ ๊ตฌ์ถ
์ธ๋ถ์ ๋ณด๋ ์ฌ์ด๋๋ฐ๋ฅผ ์ด์ฉํด์ฃผ์ธ์๐ โก๏ธโก๏ธ
Daily Scrum
- 201116-scrum
- 201117-scrum
- 201118-scrum
- 201119-scrum
- 201120-scrum
- 201123-scrum
- 201124-scrum
- 201125-scrum
- 201126-scrum
- 201127-scrum
- 201130-scrum
- 201201-scrum
- 201202-scrum
- 201203-scrum
- 201204-scrum
- 201207-scrum
- 201208-scrum
- 201209-scrum
- 201210-scrum
- 201211-scrum
- 201214-scrum
- 201215-scrum
- 201216-scrum
- 201217-scrum
์ฃผ์ฐจ๋ณ ํ๊ณ
์ฃผ์ฐจ๋ณ ํผ์ด์ธ์
๊ธฐ์ ๊ด๋ จ ๋ด์ฉ ๋ ผ์
- JWT Token์ด๋
- GraphQL ์ด๋?
- Apollo Server ํ๊ฒฝ ์ค์
- PR ๋จธ์ง์ ๋ฆฌ๋ทฐ ํ์ ์ค์
- apollo server์์ ์ฌ์ฉ์ ์ธ์ฆ ๊ด๋ฆฌ
- Mongoose ์์ TypeScript ์ฌ์ฉ
- graphql ์ธ์ฆ ๊ณผ์
- IKEYTAX ํ ํฐ์ธ์ฆ ์ ๋ต
- Custom Hook์ ์ด์ฉํ ํ ํฐ ์ฌ๋ฐ๊ธ โณ
- Cypress ์ Jest ๋ฅผ ํ์ฉํ ํ ์คํธ ๐งช
- Subscription์ ํตํ ์ค์๊ฐ ํต์ โก