-
Notifications
You must be signed in to change notification settings - Fork 4
1주차 회의록
J219_홍종우 edited this page Oct 29, 2021
·
15 revisions
- 참여자
- 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 전략(종우)
1. origin Repository : main / dev 브랜치 생성
2. 최초 1회 Local로 dev 브랜치 clone 후 directory 이동
- (local) git clone -b dev xxx.git
- cd REPO_NAME
3. 기능별 브랜치 생성(feat/{example})
4. 개인별 작업 브랜치로 이동
- git checkout feat/{example}
- git checkout -b {example}/#?
5. Local 작업 브랜치 코드 수정 및 commit 진행
- ({example/#??) git add && git commit
6. Local 기능 브랜치(feat/{example})에 단순 merge
- (feat/{example}) git merge {example}/#??
7. 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
8. origin feat/{example} -> origin dev으로 PR
- PR 리뷰 및 Squash and Merge
- Conflict 발생 시 - (Local feat/{example}) git pull --rebase origin dev (conflict 해소 후 다시 Push && PR)
- Conflict 미 발생 시 - (Local feat/{example} -> origin feat/{example}) git push feat/{example} && PR
9. 배포판 구성 시, origin dev -> origin main 으로 PR
- create and merge의 경우 origin main -> origin develop으로 fetch 해주어야 함
10. Local 작업 브랜치 fetch and rebase
- (Local dev branch) git pull --rebase origin dev
11. 신규 기능, 3번 부터 반복
- 참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우
- 시간
- 오전 10:00 ~ 오전 12:00 / 오후 01:30 ~ 오후 07:00
- 진행할 사항
- 금일 진행할 일 :
Git 전략 이해,Figma 그리기,기능 명세서 완성,기술 스택 완성,리더 정하기,기능 명세서 우선순위 선정 완료, ERD랑 인프라 구조 설계
- 금일 진행할 일 :
- 요약
- Git 전략 관련 오전 회의 진행 및 Wiki 페이지 완성
- 지도 geoJson 및 시군구(행정구역) 폴리곤 만드는 방법 확인 필요
- 로그인 로직 관련 회의 진행
- Figma 작업 진행
- App 메인 색상 :
- 현재 figma 색상 무시하고 아래 색상 기준으로 개발
- 로고 만들기
- 대회 : 로고 각자 만들어와서 투표를 통해 꼴찌가 1등에게 오프라인 모임 때 커피 사기!!
- 링크
- 기능 명세서(백로그) 핵심 기능 수정 완료
- 중요도 설정 완료 : 메인 기능들은 High, 애니메이션 등 Front 관련 내용 Middle, 기타 Low로 설정
- ERD 설정
- 테이블
- User : 사용자 정보 저장
- Column: id(PK), oauth_platform_email(NN), 거주지(NN)
- Rate : 지역 평점 정보 저장 테이블
- Column: id(PK), user_id(FK), safety_rate(NN), traffic_rate(NN), food_rate(NN), enter_rate(NN), 거주지(동 단위)(NN), postscript
- Article: 게시글 정보 테이블
- Column: id(PK), user_id(FK), content(NN)
- Image: 게시글 이미지 테이블
- Column: id(PK), Article_id(FK), url(NN)
- Category: 게시글 카테고리 테이블
- Column: id(PK), Article_id(FK), category(NN)
- User : 사용자 정보 저장
- 기능 명세
- User는 oauth 기반 로그인을 할 수 있다.
- User는 거주지에 대한 평점을 매길 수 있다.(6개월 1회)
- User는 거주지에 대한 N개의 게시글을 남길 수 있다.
- 게시글에는 관련 이미지를 3개까지 첨부할 수 있다.
- 게시글은 관련 카테고리를 최대 3개까지 설정할 수 있다.
- Associations
- User - Rate (1:N)
- User - Article (1:N)
- Article - Image (1:N)
- Article - Category (1:N)
- 테이블
- 인프라 설계 구조
- 초기에는 1개 인스턴스에 Front / Back 서버 모두 구축, DB 서버는 별도 구축
- DB - MySQL 의 경우 replication 설정 직접 진행하여 Master - slave 구축하기
- 이미지의 경우 Object 스토리지 사용하여 통신
- 기술 스택
- FE
- React - Recoil vs Redux - TypeScript - styled component - CRA - HTML Geolocation API (사용자 위치 정보 받기) - 참고 - http://dev.youngkyu.kr/31 - https://lcw126.tistory.com/191 - 지도 API 네이버 / 카카오 - 행정구역 Clustering, geoJSON 설정 - 마커 표시, 마커 클릭 이벤트
- BE
- Express - TypeScript - HTTPS - NCloud - MySQL
- Test
- Frontend : jest - Backend : postman
- CI/CD
- github action
- Infra
- nCloud - Frontend Server : nginx - Backend Server : express - Object Storage
- FE