-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
프론트엔드 코드 리뷰 #11
Open
dev-owen
wants to merge
20
commits into
connectfoundation:review
Choose a base branch
from
dev-owen:review
base: review
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
프론트엔드 코드 리뷰 #11
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
4f52d28
Update README.md
connectfoundation adbf62c
Update README.md
connectfoundation 172d937
Add files via upload
connectfoundation a005751
Update README.md
connectfoundation 5795ec0
Update README.md
connectfoundation fa69842
Update README.md
connectfoundation 7c49622
Update README.md
connectfoundation d639dbe
Update README.md
connectfoundation 5c292a3
Update README.md
connectfoundation a6e7674
Update README.md
connectfoundation e85ccb0
Update README.md
connectfoundation 27d7cb0
Update README.md
connectfoundation b7f7d55
Update README.md
connectfoundation 289922f
Update README.md
connectfoundation afdf95f
Update README.md
connectfoundation 3228e23
Update README.md
connectfoundation 3306cad
Update README.md
connectfoundation 346cb9b
Update README.md
connectfoundation 0627e2f
Update README.md
connectfoundation 0905019
Update README.md
connectfoundation File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,101 @@ | ||
# review_webmobile6 | ||
# 부스트캠프 웹·모바일 6기 코드 리뷰어 모집(~8/25) | ||
안녕하세요, 네이버 커넥트재단이 운영하는 부스트캠프 웹·모바일 6기에서 예비 웹,모바일 개발자의 조력자가 되어줄 선배 개발자를 찾습니다. | ||
|
||
## 부스트캠프가 뭔가요?! | ||
|
||
부스트캠프 공식 홈페이지: https://boostcamp.connect.or.kr | ||
|
||
부스트캠프는 네이버 커넥트재단이 주최/주관하는 우수 개발자 양성을 위한 교육 프로그램으로, 2016년에 시작하여 올해 6번째 기수를 운영하고 있습니다. **개발자의 지속 가능한 성장**을 목표로, 올해는 올해는 웹 풀스택, 모바일 iOS, 모바일 Android 세 개 분야를 운영하고 있습니다. | ||
강도 높은 문제 해결, 반복적인 협업 경험을 지향하며 이를 위한 동료 학습을 적극 권장하고 있습니다. 개발자가 현업에서 매순간 마주하게 될 상황에서 이를 어떻게 해쳐 나갈지 동료와 함께 토의하고 실행하는 과정을 반복합니다. 이 과정에서 학생들은 자연스럽게 필요한 지식과 스킬셋을 획득합니다. | ||
|
||
|
||
|
||
#### (정말)바쁘신 분들을 위한 세 줄 요약 | ||
```markdown | ||
1. 부스트캠프에서 총 6주간 코드 리뷰어로 활동할 웹 프론트엔드, 웹 백엔드(node.js)/iOS(Swift)/Android(Kotlin) 개발자를 찾습니다. (최소 경력 2년 이상) | ||
2. 활동 기간은 9/6(월)~10/22(금)이며 웹 프론트엔드, 백엔드는 격주로 활동하고 iOS와 Android는 매주 활동합니다. | ||
활동 중에는 교육생 6명(최대)의 코드를 관찰합니다. | ||
3. 참여시 소정의 활동비를 드립니다. (웹 리뷰어 50만원, iOS/Andoird 리뷰어 100만원) | ||
``` | ||
|
||
### 어떤 활동인가요?! | ||
부스트캠퍼(부스트캠프의 교육생을 이렇게 칭하고 있습니다)의 코드를 관찰, 리뷰하는 활동입니다. 캠퍼가 작성한 코드를 “평가”하기 위한 목적만으로 수행하는 것은 아닙니다. **_미래의 내 후배, 동료라는 생각으로 개선했으면 하는 부분은 분명하게 지정해주고, 잘한 부분은 아낌없이 칭찬_** 해주면 됩니다. | ||
|
||
코드 리뷰 경험이 적더라도 걱정하지 마세요. 매주 어떤 요소들을 중점적으로 봐줘야 하는지 리뷰어 회고 모임을 통해 가이드라인을 드립니다. 부스트캠프 설계진이자 마스터로 참여하는 [코드스쿼드](https://codesquad.kr)에서 여러분의 리뷰 활동을 도와드립니다. 코드스쿼드는 부스트캠프 외에도 우아한테크캠프, 마스터즈코스 등 고품질 소프트웨어 교육을 설계 및 운영하고 있습니다. 부스트캠프는 리뷰어에게도 ‘성장'의 경험이 되기를 바랍니다. | ||
|
||
|
||
### 활동 기간이 궁금해요! | ||
2021년 9월 6일(월) 시작, 2021년 10월 22일(금) 종료 입니다. | ||
|
||
### 모집하는 분야는요? | ||
웹 프론트엔드, 웹 백엔드(node.js), iOS(Swift), Android(Kotlin)를 모집합니다. 지원시 4개 분야 중 하나를 선택해야 합니다. | ||
|
||
### 구체적으로 무엇을 하게 되나요?! | ||
온라인 코드리뷰와 리뷰어 회고 모임을 수행합니다. 100% 온라인으로 진행하고 오프라인 참여는 없습니다. | ||
|
||
`온라인 코드 리뷰 @GitHub` | ||
- 1명의 리뷰어에게는 최대 6명의 부스트캠퍼가 배정되며 주 2회 코드 리뷰를 수행합니다. | ||
- 리뷰는 화/목요일 혹은 수/금요일에 수행합니다. | ||
- 1회의 코드 리뷰시 전체 시간은 2시간을 권장합니다. | ||
- 웹 분야는 프론트엔드와 백엔드를 번갈아 가며 개발합니다. 따라서, 웹 분야 리뷰어는 2주마다 리뷰를 수행합니다. | ||
- 모바일 분야 리뷰어는 매주 리뷰를 수행합니다. | ||
- 리뷰할 코드의 수준이 궁금하다면 [작년 예시](https://github.com/boostcamp-2020)를 참고해주세요. (JavaScript 기준) | ||
|
||
`리뷰어 정기 회고 @zoom` | ||
- 매주 월요일 저녁, 한 주간의 리뷰 활동을 다 같이 회고해봅니다. | ||
- 1회의 회고 모임은 1~1.5시간 동안 진행합니다. | ||
|
||
### 지원 자격이 어떻게 되나요? | ||
후배 개발자를 위한 마음이 가장 중요하겠죠?! 원활한 리뷰 활동을 위해 다음의 조건을 확인해주세요. | ||
```markdown | ||
- 언어 종류에 무관하게 프로그래밍 실무 경력 2년 이상인 분 | ||
- 다양한 환경(현업, 오픈소스 등)에서 코드 리뷰를 경험해본 분(reviewer, reviewee 무관) | ||
- JavaScript ES2015 이상, Swift5, Kotlin 15 으로 작성한 코드의 코드 리뷰가 가능한 분 | ||
- 개발자의 성장을 위한 조언과 커뮤니케이션에 진심인 분 | ||
``` | ||
웹 분야에서는 JavaScript를 활용할 수 있고, 이런 것들에 익숙한 분을 찾고 있습니다. | ||
```markdown | ||
비동기, 데이터 통신, 객체지향과 함수형 프로그래밍, 렌더링 처리 | ||
``` | ||
iOS 분야에서는 Swift를 활용할 수 있고, 이런 것들에 익숙한 분을 찾고 있습니다. | ||
```markdown | ||
CollectionView 활용, 오토레이아웃, 확장 가능한 앱 아키텍처, 네트워크 비동기 프로그래밍 | ||
``` | ||
Android 분야에서는 Kotlin를 활용할 수 있고, 이런 것들에 익숙한 분을 찾고 있습니다. | ||
```markdown | ||
RecyclerView 활용, 메모리 최적화, ConstraintLayout, MVVM 구조, 네트워크 비동기 프로그래밍 | ||
``` | ||
|
||
감사하게도 이런 경험이 있으시다면 더욱 환영합니다 :) | ||
```markdown | ||
- MAU 50만 이상의 서비스를 개발해본적 있는 분 | ||
- 웹, 모바일 분야에서 full-stack 개발 경험이 있는 분 | ||
- 현업에서 node.js를 사용하고 있는 분 | ||
``` | ||
|
||
### 활동비가 있나요? | ||
네, 많은 금액은 아니지만 감사의 마음을 담아 활동비를 드립니다. 활동 기간 동안 정상적으로 소화하신다면 웹 리뷰어는 500,000원, 모바일 리뷰어는 1,000,000원의 활동비를 수령합니다. 비용은 활동 기간 종료 후 최대 2주 이내에 지급 예정입니다. | ||
|
||
### 주요 일정이 어떻게 되나요? | ||
※ 운영 상황에 따라 일부 일정이 변경될 수 있습니다 | ||
- 모집 기간: 2021년 08월 12일(목) ~ 2021년 08월 25일(수) 23:59 | ||
- 결과 안내 : 2021년 8월 30일(월) 예정, 선정 결과는 개별적으로 안내 드립니다. | ||
- 오리엔테이션 : 2021년 9월 6일(월) 19:30~20:15 | ||
- 활동 기간: 2021년 09월 06일(월) ~ 2021년 10월 22일(금) | ||
|
||
### 지원 방법은요? | ||
1. 다음 링크로 이동하여 지원서를 작성해주세요. [지원서 작성](http://naver.me/Ft8Sb02k) | ||
2. 다음 코드에 직접 리뷰 의견을 남깁니다. [Web](https://github.com/connectfoundation/review_webmobile6/tree/main/review_practice) / [iOS](https://github.com/boostcamp-2020/Project18-B-iOS-BoostRunClub) / [Android](https://github.com/boostcamp-3rd/android_teamC) | ||
|
||
`리뷰 작성시 유의 사항` | ||
- 리뷰할 코드의 저장소를 fork합니다. | ||
- 저장소의 `master`(웹, iOS 해당), `dev`(Android 해당) 브랜치를 review 브랜치로 merge합니다. | ||
- (iOS)review 브랜치에서 다음 명령으로 master 브랜치 코드를 모두 반영합니다. <br/> | ||
` git pull origin master --allow-unrelated-histories` | ||
- (Android)review 브랜치에서 다음 명령으로 develop 브랜치 코드를 모두 반영합니다. <br/> | ||
` git pull origin dev --allow-unrelated-histories` | ||
- 리뷰를 작성하기 위해 저장소의 `review` 브랜치로 Pull Request 합니다. | ||
- 내가 오픈한 PR에 코드 리뷰 코멘트를 남깁니다. | ||
- PR 로그가 없는 경우 미지원으로 간주합니다. | ||
|
||
### 많은 관심과 성원 부탁드립니다. 감사합니다. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<h1 align="center">Boost bnb 👋</h1> | ||
<p> | ||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" /> | ||
<a href="https://github.com/YukJiSoo/umchan-server"> | ||
<img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" target="_blank" /> | ||
</a> | ||
</p> | ||
|
||
## Server Architecture | ||
|
||
![DB 구조](./readme-images/server-architecture.png) | ||
|
||
- 3개의 server 생성 | ||
- 사용자는 NginX server로만 요청 가능 | ||
|
||
### NginX | ||
|
||
- react app을 build한 정적파일 serving | ||
- reverse proxy | ||
- docker | ||
|
||
### GraphQL API Server | ||
|
||
- Apollo library 사용 | ||
- docker | ||
|
||
### DB Server | ||
|
||
- MySQL | ||
|
||
## Deploy | ||
|
||
http://101.101.162.177 | ||
|
||
## Insatll | ||
|
||
1. React + NginX server docker image 생성 후 실행 | ||
|
||
``` | ||
cd react-app | ||
docker build -t react-nginx-server . | ||
docker run -it -d -p 80:80 react-nginx-server | ||
``` | ||
|
||
2. GraphQL API server docker image 생성 후 실행 | ||
|
||
``` | ||
cd api-server | ||
docker build -t graphql-api-server . | ||
docker run -it -d -p 4000:4000 graphql-api-server | ||
``` | ||
|
||
## Design | ||
|
||
### DB table 구조 | ||
|
||
![DB 구조](./readme-images/db-schema.png) | ||
[Link](https://dbdiagram.io/d/5da49c13ff5115114db53be8) | ||
|
||
## Author | ||
|
||
👤 **Yuk Jisu** | ||
|
||
- Github: [@YukJiSoo](https://github.com/YukJiSoo) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
FROM node:11.11.0 | ||
|
||
# 앱 디렉터리 생성 | ||
WORKDIR /usr/src/app | ||
|
||
# 앱 의존성 설치 | ||
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해 | ||
# 와일드카드를 사용 | ||
COPY package*.json ./ | ||
|
||
RUN npm install | ||
# 프로덕션을 위한 코드를 빌드하는 경우 | ||
# RUN npm ci --only=production | ||
|
||
# 앱 소스 추가 | ||
COPY . . | ||
|
||
EXPOSE 4000 | ||
CMD [ "npm", "start" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import { ApolloServer } from 'apollo-server'; | ||
|
||
import typeDefs from './typeDefs'; | ||
import resolvers from './resolvers'; | ||
|
||
import model from './database/models'; | ||
import * as jwtManager from './util/jwt-manager'; | ||
|
||
// Set GraphQL Apollo server | ||
const context = ({ req }) => { | ||
const authorizationHeader = req.headers.authorization || ''; | ||
const token = authorizationHeader.split(' ')[1]; | ||
const user = jwtManager.isTokenValid(token); | ||
|
||
return { user, model }; | ||
}; | ||
|
||
const formatError = err => { | ||
console.error('--- GraphQL Error ---'); | ||
console.error('Path:', err.path); | ||
console.error('Message:', err.message); | ||
console.error('Code:', err.extensions.code); | ||
console.error('Original Error', err.originalError); | ||
return err; | ||
}; | ||
|
||
const server = new ApolloServer({ | ||
typeDefs, | ||
resolvers, | ||
context, | ||
formatError, | ||
debug: false, | ||
}); | ||
|
||
server.listen().then(({ url }) => { | ||
console.log(`🚀 Server ready at ${url}`); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# convert csv to json | ||
cd init-data | ||
node ../util/csv-converter.js room_data.csv . | ||
node ../util/csv-converter.js room_option_data.csv . | ||
|
||
# sequelize cli seed all | ||
cd .. | ||
npx sequelize-cli db:seed:all |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
// import dotenv from 'dotenv'; | ||
const dotenv = require('dotenv'); | ||
dotenv.config(); | ||
|
||
const { | ||
DB_DEV_USER, | ||
DB_DEV_PASSWORD, | ||
DB_DEV_DATABASE, | ||
DB_DEV_HOST, | ||
DB_PRODUCTION_USER, | ||
DB_PRODUCTION_PASSWORD, | ||
DB_PRODUCTION_DATABASE, | ||
DB_PRODUCTION_HOST, | ||
} = process.env; | ||
|
||
module.exports = { | ||
development: { | ||
username: DB_DEV_USER, | ||
password: DB_DEV_PASSWORD, | ||
database: DB_DEV_DATABASE, | ||
host: DB_DEV_HOST, | ||
dialect: 'mysql', | ||
}, | ||
test: { | ||
username: DB_DEV_USER, | ||
password: DB_DEV_PASSWORD, | ||
database: DB_DEV_DATABASE, | ||
host: DB_DEV_HOST, | ||
dialect: 'mysql', | ||
}, | ||
production: { | ||
username: DB_PRODUCTION_USER, | ||
password: DB_PRODUCTION_PASSWORD, | ||
database: DB_PRODUCTION_DATABASE, | ||
host: DB_PRODUCTION_HOST, | ||
dialect: 'mysql', | ||
}, | ||
}; |
31 changes: 31 additions & 0 deletions
31
review_practice/api-server/database/migrations/20191017014402-create-user.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
'use strict'; | ||
module.exports = { | ||
up: (queryInterface, Sequelize) => { | ||
return queryInterface.createTable('users', { | ||
id: { | ||
allowNull: false, | ||
autoIncrement: true, | ||
primaryKey: true, | ||
type: Sequelize.INTEGER, | ||
}, | ||
name: { | ||
type: Sequelize.STRING, | ||
}, | ||
email: { | ||
type: Sequelize.STRING, | ||
}, | ||
password: { | ||
type: Sequelize.STRING, | ||
}, | ||
salt: { | ||
type: Sequelize.STRING, | ||
}, | ||
is_super_host: { | ||
type: Sequelize.BOOLEAN, | ||
}, | ||
}); | ||
}, | ||
down: (queryInterface, Sequelize) => { | ||
return queryInterface.dropTable('users'); | ||
}, | ||
}; |
19 changes: 19 additions & 0 deletions
19
review_practice/api-server/database/migrations/20191017014403-create-room-type.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
'use strict'; | ||
module.exports = { | ||
up: (queryInterface, Sequelize) => { | ||
return queryInterface.createTable('room_types', { | ||
id: { | ||
allowNull: false, | ||
autoIncrement: true, | ||
primaryKey: true, | ||
type: Sequelize.INTEGER, | ||
}, | ||
name: { | ||
type: Sequelize.STRING, | ||
}, | ||
}); | ||
}, | ||
down: (queryInterface, Sequelize) => { | ||
return queryInterface.dropTable('room_types'); | ||
}, | ||
}; |
34 changes: 34 additions & 0 deletions
34
review_practice/api-server/database/migrations/20191017014403-create-room.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
'use strict'; | ||
module.exports = { | ||
up: (queryInterface, Sequelize) => { | ||
return queryInterface.createTable('rooms', { | ||
id: { | ||
allowNull: false, | ||
autoIncrement: true, | ||
primaryKey: true, | ||
type: Sequelize.INTEGER, | ||
}, | ||
name: { | ||
type: Sequelize.STRING, | ||
}, | ||
price: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
max_guest: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
star_rating: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
review_num: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
image_path: { | ||
type: Sequelize.STRING, | ||
}, | ||
}); | ||
}, | ||
down: (queryInterface, Sequelize) => { | ||
return queryInterface.dropTable('rooms'); | ||
}, | ||
}; |
31 changes: 31 additions & 0 deletions
31
review_practice/api-server/database/migrations/20191017014404-create-room-option.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
'use strict'; | ||
module.exports = { | ||
up: (queryInterface, Sequelize) => { | ||
return queryInterface.createTable('room_options', { | ||
bed: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
bedroom: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
bathroom: { | ||
type: Sequelize.INTEGER, | ||
}, | ||
free_parking: { | ||
type: Sequelize.BOOLEAN, | ||
}, | ||
wifi: { | ||
type: Sequelize.BOOLEAN, | ||
}, | ||
kitchen: { | ||
type: Sequelize.BOOLEAN, | ||
}, | ||
washer: { | ||
type: Sequelize.BOOLEAN, | ||
}, | ||
}); | ||
}, | ||
down: (queryInterface, Sequelize) => { | ||
return queryInterface.dropTable('room_options'); | ||
}, | ||
}; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
중복되는 코드는 가능하면 줄이는 것이 좋습니다. 왜냐하면 지금은 코드가 많지 않아서 문제가 없다고 느낄 수도 있지만, 이후 복잡도가 증가하면 코드를 수정할 때 유지보수의 측면에서 버그가 발생할 수 있는 가능성이 높아지기 때문입니다.
DRY(Don't Repeat Yourself)
원칙은 이후로도 항상 기억하고 코드를 작성하는 것이 바람직할 것 같습니다.