-
Notifications
You must be signed in to change notification settings - Fork 4
1주차 회의록
- 참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우
- 시간
- 오전 10:00 ~ 오전 12:00 / 오후 02:30 ~ 오후 07:00
- 그라운드 룰 / 팀 목표 정하기
- 각자 프로젝트를 임하는 목표를 정했습니다.🙆♂️
- git, pr, issue convention을 정했습니다.
- git 전략을 정하는데 애를 먹었습니다... merge방식, main/dev/feat브랜치를 효율적으로 사용하는 법을 찾고 있습니다.
- 아이디어 브레인 스토밍 진행
- 각자 아이디어를 생각하고 그에 대한 의견을 나누었습니다.
- 기본 개발 규칙 정하기
- 파일/변수 이름 짓는 방식, 코드 작성 규칙(eslint, prettier)를 정했습니다.(수정 가능!)
- API 명세서 만들기
- Swagger 서비스를 이용해서 만들기로 정했습니다.
-
참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우
- 성지현 멘토님
-
시간
- 오전 10:00 ~ 오후 12:00 / 오후 01:30 ~ 오후 07:00
-
안건
- 브랜치 전략, 주제 정하기, 기능 토의, 기능 명세서 구조
-
주제 정하기
- 아이디어 피칭 이후 부스트캠프 교육 내용을 얼마나 반영하는지, 프론트엔드와 백엔드를 모두 적정한 수준으로 포함하는지, 어느정도부터(e.g. 맨바닥에서부터) 시작해야 하는지 등을 고려하여 구루미 클론 VS 내 지역 후기로 의견을 좁혔습니다.
- 이후에 리뷰어님과의 이야기를 통해서 내 지역 후기를 선택하였고, 위치 정보를 효과적으로 처리하기 위한 기술을 찾아보기로 했습니다.
-
멘토님 미팅 회의록
- 동네 거주 후기 -> 위, 경도 최적화 db가 있으니 찾아보자, 지도 api, 위치 기반 데이터 헨들링(퍼포먼스), 위치를 어떻게 가져올것이냐, 데이터가 많이 쌓여있을 때 성능을 향상시킬 수 있는 단계적인 방법
- 지라 VS 깃허브 -> 깃허브를 주로 쓰는게 좋은것같다. 지라는 wiki를 많이 사용한다.
- 리뷰 -> 피처가 완성되면 한번씩 진행하는게 좋을것 같다.
- 경쟁력 -> 기본은 코딩테스트(많이 갈림), 면바면(cs우선? / 프로젝트(경험)우선? /)하지만, 제일 중요한건 깊은 기술적 고민 -> 기술적 고민이 제일 중요하다!
-
git branch 전략
- 1,2,3 전략 중 첫번째 전략으로 현업에서 멘토님꼐서 하고 계심
-
주제 관련 주요 기능
- 지역에 대한 전반적인 평점을 매겨보자
- 지도 축척 변경에 따라 시 - 군 - 구 레벨로 지도에서 색상 기반 구분 및 마커 표시(평점, 워드 클라우드 내용)
- 지도 위의 마커를 클릭하면 해당 후기들과 그 지역에 대한 사용자들의 반응 통계(텍스트, 평점 등)가 나옴
-
넣고싶은 기능 브레인스토밍
- 후기의 카테고리를 나누자
- 맛집, 여행, 카페, 공원 등
- 동네 랭킹
- 포함 관계를 생각하여 평점을 합산 -> 평점을 매기는 방식은? 가중치는?
- 랭킹 기준은 텍스트+평점
- 랭킹 카테고리가 있어서 맛집, 여행, 카페, 공원 등 적용
- 몇 명, 연령대 인구 공공 API
- 지역의 정보 표시
- 평점을 매기는 방식
- 시, 구, 동 단위로 세 번 매기는 것?
- 평점을 합산하는 방식?
- 치안점수, 교통점수, 문화점수, 공원점수, 교육점수 등으로 세분화해서 점수 매기는 방식이 재미있을 것 같다
- 소모임 채팅
- 동네는 내 위치 인증(중고나라처럼)
- 관심 리스트
- 장소 선정
- 후기를 내 관심 리스트 CRUD
- 번개 이벤트
- 내 근처 사람들에게 푸시알림 보내기
- 사용자 랭킹제
- 후기 많이 올리면 일반자 -> 백작 -> 공작 -> 왕 -> 태양신
- DM
- 중고거래처럼 개인 채팅 방을 개설할 수 있도록 만들기
- 영어버전 만들기
- 외국인을 위한 언어 변경
- 후기 적으면 바로 번역도 가능
- light, dark 버전 만들기
- 색상 변경하기
- 후기의 카테고리를 나누자
-
참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우
-
시간
- 오전 10:00 ~ 오전 11:00 / 오후 02:30 ~ 오후 07:00
-
요약
- git 전략을 최종적으로 결정
- upstream을 제거하고 origin만 존재하는 형태로 다시 git 명령어 정리
- 기술 스택 정하기
- 간단히 정할 수 있는 기술 스택을 생각해서 나누기
- Backend / Frontend / Infra / CI/CD 등으로 나누어서 생각하기
- 기능 구체화
- 기술 스택을 세부적으로 진행하려고 해 보니, 기능을 좀 더 구체화하지 않으면 어려울 것 같으므로, 기능을 우선 구체화하자.
- 메인 기능 작성(사용자 거주지 작성 vs 사용자 위치 인증)
- 거주지 작성으로 하자. 임의로 위치에 따라 거주지 후기를 작성하는 것을 좀 더 번잡하게 적용
- 후기는 어떤식으로 작성할까?
- 잡플래닛에 나오는 것처럼 분야별로 평점을 매기고, 태그를 보여주는 형식이 좋을 것 같다.
- 이외 맛집, 여행 좋은 곳, 공공 시설 등에 대한 자연어 후기를 게시글 부분으로 빼자
- 기본 기능에 대한 의견
- Word cloud는 데이터가 많아야 하기 때문에 카테고리를 보여주는 것이 더 나을 것 같다.
- 유저 접속 시, 거주지는 무조건 입력하도록 하는 것이 편리할 것으로 보임
- 백로그 작성
- 핵심 기능(로그인, 맵, 동네 후기, 동네 게시글)에 대한 백로그 작성
- 추가적인 기능은 내일 더 작성하도록 하자
- git 전략을 최종적으로 결정
-
기술 스택
-
frontend
- TypeScript
- React
- Recoil vs Redux
- Recoil 1표
- App 상태 봐서 1표
- styled component vs module CSS -> Styled Component
- CRA vs webpack -> CRA
- 사용자 위치 정보 받아오기 HTML5 Geolocation API http://dev.youngkyu.kr/31 https://lcw126.tistory.com/191
- 지도 API 카카오 VS 네이버
-
backend
- nginx
- https
- TypeScript
- Node.js, Express
- jwt
- 위도, 경도 MySQL 저장 데이터 타입 https://blog.hajs.me/82
-
Infra
- nCloud
- Frontend Server : nginx
- Backend Server : express
- docker
-
CI/CD
- jest
- github action
-
-
핵심 기능 구체화
-
회원가입 / 로그인
- OAuth 및 프로필 수정 기능
- 최초 OAuth 인증 후 회원등록시 프로필 정보(주소 등) 입력
- OAuth 및 프로필 수정 기능
-
맵 기능
- 웹 페이지 UI 컨셉 : 직방
- 지도 컨셉
- 지도 API 기반의 축척 변경 및 동네 구분, Marker 삽입(총 평점)
- Marker Mouse over 시, 잡플래닛과 유사한 항목 별 평점 표시
- 여유 만들어서 추가(Word cloud 또는 카테고리)
- Marker 클릭 시, 후기 내용 우측 화면 표시
- 400자 이내 후기 글(+사진 -> 쿠팡 처럼)
- 사용자 위치 획득 / 인증
- 사용자 로그인 무관 현재 사용자 위치 기반 지도 보여주기
- 사용자는 프로필에 등록한 주소(동) 기반으로 글 작성 가능
- 후기 동네 클러스터링
- 최소 단위 : 동
- 최대 단위 : 도(광역시 포함)
- 평점 매기는 방식? 평균
-
동네 후기 CRUD
- 동네에 대한 평점 매기기 (카테고리별 세부평점 매기기)
- 동네에 대한 후기 남기기 (평점 부여시 선택, 400자 제한)
- 프로필 작성 기준 글 권한 부여
- 최신순으로 보여주기
-
동네 관련 게시글 CRUD
- 맛집, 동네에 여행하기 좋은 곳, 공공시설 등
- 사진 업로드(object storage 사용)
- 분류 설정(맛집인지, 공공시설인지 등)
- 글 적는 부분
-
DB 설계
- User
- 이름, email(oauth), 거주지,
- User
-
-
git 전략(혜현)
- 레포지토리 클론하기
git clone https://github.com/boostcampwm-2021/WEB11-Boostmee.git
(git clone -b dev, feat/{example})
git checkout develop
- 작업할 기능 브랜치 만들기
git checkout -b Feat/login
- 작업할 기능 브랜치의 하위 이슈 브랜치 만들기
git checkout -b Feat/login/#1
- Local 작업 브랜치 코드 수정 및 commit 진행
git add .
git commit -m "컨밴션"
- Feat/login/#1 작업완료한 뒤 Local의 Feat/login에 합침
git checkout Feat/login
git merge Feat/login/#1
- Feat/Login의 기능이 완료가 안되어도 하루 한 개씩 origin에 푸시(최소 동작은 될 때) 또는 Feat/Login의 기능이 모두 완료되면 origin에 push
git checkout Feat/login
git push origin Feat/login
(Faet/login의 기능이 완료가 안된 경우에는 다시 3번부터 작업하면 됨)
(Feat/login의 기능이 모두 완료된 상태이면 7번으로 나아가기)
- origin feat/{example} -> origin dev으로 PR
- PR 리뷰 및 Squash and Merge
- 배포판 구성 시, origin dev -> origin main 으로 PR
- create and merge
- origin main → origin dev로 fetch and rebase
(Local) git checkout origin/dev
(Local) git pull --rebase origin main
(Local) git push origin dev
- origin dev → Local dev로 fetch and rebase
// Local의 dev까지 하는 이유는 항상 dev을 최신으로 만들어서 Feat/기능을 새로 팔 때 이전 dev에서 가지가 내려지지 않도록 하기 위해서
(Local) git checkout dev
(Local) git pull --rebase origin dev
- 다시 2번으로 돌아가서 작업하면 된다.
- 다른 사람이 Feat/Login을 병합하기 전의 develop 브랜치에서 Feat/abc를 파서 작업을 하고 있었다고 가정하자. Feat/abc의 작업을 local에서 완료했다. 이제 어떻게 해야 할까?
git checkout Feat/abc
git pull —rebase origin dev
(git rebase dev도 가능, local의 dev이 origin의 dev과 최신상태로 맞추어졌다면)
git push origin Feat/abc
- 이 때, Conflict 발생 시, conflict 해소 이후 다시 push
- conflict이 나는 이유는 같은 파일을 수정했을 때이다. 같은 파일을 수정하지 않았으면 conflict가 나지 않는다. 그러므로 conflict은 매우 자연스러운 현상!
- 7번부터 이어서 하면 된다.
- A가 병합한 Feat/login의 기능이 B의 Feat/abc의 작업 중 필요할 때가 있다. 이런 경우, Feat/abc의 작업이 완료될 때까지 기다린 뒤 git pull —rebase 하는 게 아니라 필요한 즉시 git pull —rebase를 사용하면 된다.
git checkout Feat/abc
git pull —rebase origin dev (or git rebase dev)
(필요한 경우, git checkout Feat/abc/#1, git rebase Feat/abc)
-
모든 작업이 완료된 이후에는 11번 동작을 하면 된다.
-
git 전략(종우)
- origin Repository : main / dev / feat/{example} 브랜치 생성
- 최초 1회 Local로 dev 브랜치 clone 후 directory 이동
- (local) git clone -b dev xxx.git
- cd REPO_NAME
- 개인별 작업 브랜치로 이동
- git checkout feat/{example}
- git checkout -b {example}/#?
- Local 작업 브랜치 코드 수정 및 commit 진행
- ({example/#??) git add && git commit
- Local 기능 브랜치(feat/{example})에 단순 merge
- (feat/{example}) git merge {example}/#??
- Local 작업 브랜치를 origin 대상 기능 브랜치에 push
- (feat/{example}) git push origin feat/{example}
- 이 때, Conflict 발생 시, rebase 후 conflict 해소 이후 push
- (feat/{example}) git pull --rebase origin feat/{example} 진행 후 conflict 해소, commit, rebase --continue
- origin feat/{example} -> origin dev으로 PR
- PR 리뷰 및 Squash and Merge
- 배포판 구성 시, origin dev -> origin main 으로 PR
- create and merge의 경우 origin main -> origin develop으로 fetch 해주어야 함
- Local 작업 브랜치 fetch and rebase
- (Local dev branch) git pull --rebase origin dev
- feat/{example2} 작업 완료된 후 origin에 올릴 때
- Conflict 발생 시 - (Local feat/{example2}) git pull --rebase origin dev (conflict 해소 후 다시 Push && PR)
- Conflict 미 발생 시 - (Local feat/{example2} -> origin feat/{example2}) git push feat/{example2} && PR
- 신규 기능 시, 기능 branch 생성 후, 3번 부터 반복