# 데일리 스크럼 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. 음원관련된 정보 저장 (음원별 재생기록 저장하기)