[Flutter] - 교회 앱 - 02 전체 구조
이번에 교회에서 새로운 토이 프로젝트를 하게 되었다.
교회 중보기도를 나누고 간단히 공지 및 예배 시간을 알려주는 앱이다.
이번에 공부하기로 한 GetX와 Firebase를 사용해서 만들어보려고 한다.
먼저 요구사항과 Model을 정리해보자.
요구사항
- 공지 사항
- 관리자만 작성 가능 (추후 Web으로)
- 댓글, 좋아요 ⇒ 삭제만 가능 (수정없이 )
- 이미지 여러개 (당근마켓 처럼 글과 이미지 따로 구분)
- 텍스트
- 기도편지
- 공개 중보
- 모두에게 보이는 중보 기도 작성
- 텍스트만
- 목사님 중보 (비공개)
- 추후 목사님 Web으로만 확인 가능
- Web에서 목사님만 답장 가능
- 공개 중보
- 중보 기도 목록
- 공개 중보기도 올라온 내용들 리스트로 표시
- 댓글, 좋아요 ⇒ 삭제만 가능 (수정없이)
- 기도 일기 (모두에게 비공개)
- 텍스트만
- 프로필
- 로그아웃, 회원 탈퇴
- 나의 프로필 이미지 변경 및 닉네임 변경
- 나의 기도 목록
- 답장 목록
DB
FirebaseFireStore(NoSQL)로 구현하고자 한다.
core (모든 모델 공통 적용)
- createdAt ⇒ 생성 시간
- updatedAt ⇒ 수정 시간
- notice
- id
⇒ Document ID - userId
⇒ 유저 식별 - content
- ImageList
⇒ FireStorage URL - commentCount
⇒ 내부 Collection 존재 - favoriteUserList
⇒ userId 리스트로 표현 - DocumentReference ⇒ FireStore documentReference
- id
Comment
- id
⇒ Document ID - userId
⇒ 유저 식별 - content
- favoriteUserList
⇒ userId 리스트로 표현 - replyIndex
⇒ 내부 배열 번호 - replyList<List
> ⇒ 자체 모델 리스트
replyList는 내부 collection이 아닌 내부 배열로 처리 하였다. 댓글을 가져오면 어차피 답글도 모두 가져와야 하기에 하나의 document에 모두 처리 하기로 하였다
- id
- Reply
- id
⇒ replyIndex - userId
⇒ 유저 식별 - content
- favoriteUserList
⇒ userId 리스트로 표현
- id
Pray (공개 중보)
- id
⇒ Document ID - userId
- title
- content
- prayUserList
⇒ userId 리스트로 표현 - commentCount
⇒ comment 내부 컬렉션 - DocumentReference ⇒ FireStore documentReference
Pray에 달리는 댓글과 답글은 notice 댓글과 답글 모델을 똑같이 활용한다.
- id
다음에는 직접 GetX를 사용해 하나씩 구현해보자.