# 데일리 스크럼 2021.10.28
- 현식님: 7시간(모기🦟🦟 때문에 -1시간)
- 상진님: 오늘도 화이팅 벌써 목요일입니다.
- 수현님: 멘토링 이후 프로젝트에 대한 고민과 걱정이 어느정도 줄어들어서 컨디션 최고!!! 😆
- 기완님: 전날 두통이 심했지만 푹 자니 괜찮아졌다. 100%?
## 오늘 할 일
우선순위 선정기준: 당장 내일 발표를 할 때 필요한 내용을 기준으로 정리한다. (우선순위가 높은 순서대로 내림차순 정리)
- UI 확정 (figma)
- Me 화면 확정(우선순위 high)
- Home, Explore 화면 포함해서 Adobe XD에서 마무리 작업도 하기 (우선순위 low)
- 기술 스택 확정 ( 해당 기술 스택 선택한 이유 )
- 기획서 완성(for 금요일 기획공유 4시간 게더타운)
- Wiki에 code/pr 컨벤션 작성 (우선순위 low)
- Github 활용 (우선순위 low)
1. 이슈태그 만들기
2. 템플릿 작성
- pr, commit, issue
- 사용경험:
- 수현, 기완: 아직까지 커밋할 때 issue와 연동해서 닫는 것도 활용해본 적이 없다
- 기완: 주말에 issue 연동해서 닫는거 연습해보겠다
# 회의록
## UI설정
### Me화면의 방향
로그인 정보?
- me화면을 넣을 때 로그인 정보를 넣은 me화면으로 할건가?
- 구현해볼만 하지만 우선순위를 미루는게 좋을 것 같다.
- 로그인 기능을 추가하는 것이 쉽나?
- Yes. But DB필요
- FireBase를 이용하는 것이 좋겠다.
통계정보를 DB에 둘지 or 로컬에 둘지
- 일단 기술스택에서 논의하고 우선순위를 낮춘다.
### Me화면의 기능 툴바에서 쓸 명언 제조 관련
- 서버를 한다면?
- hash 요청해서 명언 favorite에 요청
- 서버를 하지않는다면?
- 우선적으로 서버는 미구현하다가 서버기능 확장한다면?
결론: Favorite 을 어디서 가져오는지 같은 것은 나중 문제. 우선은 핵심 Focus 기능에 집중, 나중에 확장하는 것을 염두에 두는 것으로. 확장을 고려한 설계를 해서 코드단을 잘 분리해두면 이것만으로도 어필할 요소가 된다고봄
1. 로그인 관련
- 우선 순위 low
3. 기능 툴바
- Favorite
- 나머지 기능들은 기존 로컬 구현 완료 후 서버 관련이 해결 된 다음 추가
5. 통계 화면
- 어떻게 보여줄 것인가?
- 직접 구현
- 외부 라이브러리 사용
- [CalendarHeatmap](https://github.com/Zacharysp/CalendarHeatmap)
- [Charts](https://github.com/danielgindi/Charts)
- 화면 구성: 커스텀 구성하기 vs 기존 앱 화면을 따라가기
- 상진: 커스텀 할 수 있는 부분은 수정하자
- 수현: 전반적으로 Tide와 비슷하게 가되, 커스텀할 부분에 대해서는 우선순위를 낮추어 진행하자
결론: 전체적인 틀은 가져가면서 커스텀할 수 있는 부분 하기
## 프로젝트 구조 설정
### 데이터 구조
#### DB 설계
##### Home 음원 데이터
- fileServer에 저장되어 있음
- 클라이언트에서 파일이 다운로드 되어있는지를 확인
- 다운로드된 파일이 있으면 그대로 사용
- 없으면 네트워크를 통해 파일을 다운로드
- 클라이언트에서 다운로드 후 재생
##### Home 모드별 목록
##### 기존 앱 정보 요약
- Explore에서 다운로드 한 음원들은 자동으로 Home 상단 음원 목록에 추가된다
수현:
```
FileServer: (firebase? 그 외?)
이미지, 배경 영상 및 음원 파일 보관 (streaming X, download O)
DBServer: (Firebase? 그 외?)
사용자 정보 저장 (`사용자의 선호곡 목록`, `사용자의 모드별 음원 목록`, `사용자의 선호 명언 목록`, `통계 자료`)
콘텐츠 정보 저장 (`전체 음원 목록`, `전체 명언 목록`, `음원 재생 기록`, ``)
```
1) 음원 재생은 filesever에서 다운로드 받아서 진행
- 로컬에 저장 (file? innerDB?)
- 모드별 목록에서 삭제 시, 로컬에 저장된 파일도 삭제
2) 배경 영상 또한 음원과 동일
현식:
1) 명언은 해당 날짜의 명언을 Firebase에 요청하여 보여줌.
2) 음원 관련 동영상 및 음원정보 리스트는 번들에 포함.
3) 처음 음원 재생시 Firebase에서 다운로드하여 재생.
4) 다운로드 된 음원은 로컬에서 관리(FileManager or CoreData)
5) 음원 삭제 기능을 적용한다면 로컬에 다운로드된 음원 삭제.
기완:
- 기본적인 다운로드/스트리밍 구조도 최우선 순위로 높여서 구현해야 한다.(로컬로 작동하는 부분이 우선적으로 개발되어야하지만 Firebase 관련 부분도 우선순위가 높아야 한다)
- 이유: 어떤 기능은 네트워크를 사용해서 다운 받는 형태의 구조여야 가능한 것이라고 판단함
- 생각하는 구조:
- Explore에서 검색되는 데이터(음원, 명언 등)들은 Firebase의 DB에 있는 데이터를 조회, 가져오는 형태
- 재생을 하면 로컬DB에 캐싱하며 그 이후부터는 캐싱된 데이터를 출력
상진:
이미지, 배경영상은 기본적인 asset으로 저장되어있는 파일이 있고 네트워크를 통해서 가져오는 파일이 있는 만큼 어떤 데이터소스든 상관없이 확장성있는 설계를 하는 것이 중요함.
예상 DB
FireStore: 배경이미지, 음원파일 저장, 명언 텍스트(?)
FireBaseDB
1. 사용자 정보 저장 (Favorite관련 로직은 굳이 DB에 저장해야할까? -> 그럼 로그인 기능이 이름 제공이외에는 없긴함)
2. 음원관련된 정보 저장 (음원별 재생기록 저장하기)