2021.11.24 백엔드팀 최종프로젝트회의
- 기술명세서
- 개발 환경
- 운영체제
- Windows, MacOS
- IDE
- IntelliJ
- 언어
- JAVA 17
- 프레임워크
- Spring Boot 2.5.3
- Spring Data JPA
- DB
- MySQL 8 → 실제 빌드 docker
- H2 → test
- 서버 (내년 2월까지 제공)
- AWS EC2
- DB 설계 (데이터 타입이랑 필드명 작성은 회의 끝내고 하겠습니다)
- 엔터티
- User (사용자)
- ID(Long id)
- 이름(String name, Varchar(10))
- 비밀번호(String password, Varchar(20))
- 별명(String nickname, Varchar(10))
- 이미지(String url, Varchar(40))
- 칵테일 북마크(Stirng bookmark, Varchar(40))
- 재료 (List<Ingredient> ingredient)
- 성별(Boolean gender)
- 나이(int age)
- MBTI(String mbti, Varchar(10))
- Cocktail (칵테일)
- 이름(String name, Varchar(20))
- 재료(재료 (List<Ingredient> ingredient))
- 만드는 방법(String recipe, Varchar(50))
- 이미지(String url, Varchar(40))
- 상세 유튜브 링크(Stirng youtubeLink, Varchar(40))
- 좋아요(int likes)
- 종합 별점(float totalRating)
- 테마
- MBTI(String mbti, Varchar(10))
- 날씨(String weather, Varchar(10))
- 색깔(String color, Varchar(10))
- 음악(String music, Varchar(20))
- 분위기(String mood, Varchar(20))
- 인기순(int popular)
- Review(평가)
- ID(Long id)
- 별점(int rating)
- 내용(String description, Varchar(30))
- 이미지(String url, Varchar(40))
- Refrigerator(냉장고)
- ID(Long id)
- 보유하고 있는 술(String liquor, Varchar(40))
- Ingredient(재료)
- ID(Long id)
- 이름(String name, Varchar(10))
- 이미지(String imageUrl, Varchar(40))
- 구매 링크 URL (String buyingUrl, Varchar(40))
- Image(사진)
- ID(Long id)
- 이미지를 저장하는 방식
- 이미지 엔터티 하나로 통합해서 URL을 저장하는 방식
- 이미지를 추상 클래스로 만들고 각 도메인마다 이미지 클래스를 상속받아서 URL을 저장하는 방식
- 예를 들어, abstract class Image를 UserImage, RecipeImage가 상속받고 엔터티로 생성
- 패키지 전략
- 프로젝트 전체 구조
- 인증 전략
- OAuth 2.0을 통해 카카오 or 구글을 통해서 인증하기
- 좀더 상세하게 쓰고싶으시면 작성하셔도 됩니다 (아직 인증 못 들은 1인...)
- 오프라인 규칙
- 서울대입구역 1시까지 모이기 (월, 수 예정, 화/목은 프로그래머스 본진)
- API 동작
- 회원 가입 저장 (post) request - nickName, MBTI 등 개인 정보 OAuth 인증 / response - message, nickName
- 칵테일 검색 (get) request - name / response - List<recipe>
- 칵테일 정보 저장 (post) request - recipe_id / response - message
- 사용자가 레시피대로 만든 칵테일 이미지 업로드
- 유저들이 뽐낼 수 있는 란 -대신 SNS가 아니라, '후기'의 개념으로. 레시피 별 [별점/좋아요, 후기/한 줄 코멘트]
- 술장고에 술 종류 저장 (post) request - List<ingredient> / response - message
- 평가 작성 (post) request - text_content, image, 별점 / response - message
- 칵테일의 등록 히스토리 조회 (get) request - user_id / response - List<Cocktail>
- 사용자가 보유한 재료로 만들 수 있는 칵테일 레시피 추천 (get) request - refrigerator_id / response - List<Cocktail>
- A 사용자의 술장고 기반으로 제작할 수 있는 레시피를 검색하여 사용자에게 제시해주는 기능
- 로그인 하자마자 팝업창으로 '내 술장고'를 띄워주고, 변경없으면 OK 추천, 변경하게 하고 나서 추천.
- 재료(Inger 구매 중개 (post) request - ingredient_id / reponse - url
- 특정 칵테일을 제작하고자 할 때, 사용자가 추가로 구매해야 하는 재료들의 가격 정보를 알 수 있는 링크 제공하는 기능
- 검색/ 추천 결과로 제시된 칵테일 레시피는 칵테일 이미지 카드 형식으로 사용자에게 제공된다
- 사용자가 레시피의 '재료' 중, 자신이 구매하고자 하는 재료를 클릭하면 해당 재료를 판매하는 외부 링크로 연결이 된다
- 테마별 칵테일 추천 (get) request - theme category화 / response - List<Cocktail>
- (만약 당신의 술장고에 재료가 없더라도, 또는 비회원이라도) 당신의 취향을 저격하는 칵테일을 추천받을 수 있다. ⇒ 기념일, 기분, mbti, 취미, 날씨 등등 다양한 테마에 따른 추천 기능
- 테마 목록을 같이 정하고, key 값을 붙여 user 컬럼에 추가하면 되지 않을까?
- 즐겨찾기 히스토리 (get) request - user_ id, history_id / response - List<Cocktail>
- 사용자가 언제 봤는지 날짜 명시
- 실시간 대시보드 (get) resquest - 특정 url / reponse - infomation
- → '어떤 칵테일이 일정 기간으로 핫하다' /'~테마가 일정 기간 핫하다'라는 실시간 대쉬보드로 합치면 안될까? (네이버 실시간 검색어처럼)
├─docs
│ └─asciidoc
├─main
├─java
└─com
└─ 칵테일
├─config
├─global
├─cocktail
├─image
├─ingredient
├─refrigerator
├─review
├─user
- 깃허브 브랜치
- 📌 git branch 관리 전략
- release : 배포 stage
prgrms-be-devcourse/BEDV1_Ddaangn
의main
브랜치,develop
브랜치에서 배포를 위해 소스코드를 저장하는 브랜치- develop : 테스트/개발 stage
prgrms-be-devcourse/BEDV1_Ddaangn
의develop
브랜치,feature/도메인
의 소스코드를 Pull Request을 통해 리뷰어 2명 이상의 허락을 받아야 하는 저장되는 브랜치- hotfix : 배포 진행 후 발생한 버그를 수정해야 할 때 사용
prgrms-be-devcourse/BEDV1_Ddaangn
의hotfix
브랜치, main에 올라온 소스코드를 배포한 이후에 생기는 문제를 해결하기 위한 브랜치- feature : 기능 추가 브랜치
prgrms-be-devcourse/BEDV1_Ddaangn
의feature/user
,feature/post
처럼 자신이 담당하는 도메인으로 브랜치를 생성하고, 개인 로컬 환경에서 개발한 소스코드를 저장하기 위한 브랜치- FEAT : 새로운 기능의 추가
- FIX: 버그 수정
- DOCS: 문서 수정
- STYLE: 스타일 관련 기능(코드 포맷팅, 세미콜론 누락, 코드 자체의 변경이 없는 경우)
- REFACTOR: 코드 리펙토링
- TEST: 테스트 코트, 리펙토링 테스트 코드 추가
- CHORE: 빌드 업무 수정, 패키지 매니저 수정(ex .gitignore 수정 같은 경우)
참고 링크 - 우아한 형제들 기술 블로그
📌 Git Commit Message Type
참고 링크 - [Git] 깃 커밋 메시지 작성법(git commit message)
- 협업툴
- Jira
- Notion
- 커뮤니케이션 툴
- 개더타운을 이용한 실시간 소통
- 슬랙을 이용한 비동기 소통