-
Notifications
You must be signed in to change notification settings - Fork 1
22.11.08.
Nayoung Kwon edited this page Nov 8, 2022
·
1 revision
역할은 권한의 집합이다.
도입한다면
- 채널마다 역할을 만들 수 있게 할까? → 채널마다 하는 건 굳이 그럴 이유가 있을까. 내가 A, B, C 채널에서 개발자 역할이고 싶은데 그러면 채널마다 개발자 역할로 해줘야함.
- 커뮤니티마다 역할을 만들 수 있게 할까?
- 커스텀 역할 현재 단계에서는 어려운 거 같다.
- 어떻게 채널마다 역할을 저장해줄 것인지 어렵다.
- 따라서 역할은 커뮤니티/채널을 생성한 `관리자`와 커뮤니티/채널에 참여한 `사용자`로 나눈다.
→ 앞으로의 과제는 관리자
와 사용자
라는 역할이 어떤 권한의 집합인지 정의하는 것이다.
- 디폴트 커뮤니티 / 디폴트 채널의 의미
- 마지막으로 접속한 커뮤니티/채널
- 이름에 의해 정렬했을 때 첫번째 커뮤니티/채널
- 사용자가 설정한 커뮤니티/채널
- 애플리케이션 접속 시 디폴트 커뮤니티를 보여줄까? → DM 목록 보여주기로 한다.
- 커뮤니티 접속시 디폴트 채널 보여줄까? → 그러자.
- 디폴트 커뮤니티는 없고, 로그인시 DM 화면 렌더링
- 이후 커뮤니티 선택 가능.
- UX 고려사항
- 마지막으로 접속한 채널 화면을 보여줌 (DB에 저장하기)
- UX 고려사항
안 읽었다는 걸 표시해주는 게 UX에서 좋다.
- 채널별로 타임스탬프 기록
- 채널 입장시
- 채널 퇴장시 (다른 채널로 이동 or 다른 커뮤니티로 이동)
- 어플리케이션 종료시
- 타임스탬프랑 채팅의 createAt이랑 비교하기 (타임스탬프 이후의 채팅 개수를 렌더링)
- 채널별로 안 읽은 채팅 개수 보여주기 (max값 정하기)
- 커뮤니티별로 안 읽은 채팅이 있다면 N표시만
- 클라이언트 상태 관리 도구: Redux, Zustand, Recoil, Jotai 등등… 뭘 쓸까?
- 서버 상태 관리 도구: @tanstack/react-query, SWR
- 클라이언트 상태 관리: Zustand
- 선택 이유(민종)
- Reducer 정의하는 코드 블럭이 너무 큼. (대신 데브 툴이 잘 되어있음.)
- 서로 영향을 주는 상태를 응집시켜서 store에서 관리하고자 함. (중앙 저장소)
- 리덕스는 useReducer + Context API를 이용한 상태 관리와 문법이 유사함. 그래서 store로 관리하는 컨셉의 새로운 라이브러리를 선택하고 싶었음.
- Zustand는 리덕스와 비슷한 패턴으로 리듀서 역할을 하는 Setter를 정의할 수 있는데, 간략해서 러닝커브가 더 낮을것이라고 생각했음.
- Zustand 데브툴도 지원한다고 함.
- 선택 이유(준영)
- useReducer hook을 좋아하지 않았음.
- action type-magic string의 관리가 어렵다. 따로 정의하고 다른 파일로 분리해야한다.
- typescript 작성시 reducer에 대한 type 정의(action type이나 payload 등) 귀찮음
- redux 도입을 고민했으나, zustand에 대해 조사해보고 사용하기 쉬워보여서 도입하는데 동의함.
- store이지만 코드가 redux reducer에 비해 상당히 짧고 읽기 쉬움
- get, set 메서드로 state를 조작할 수 있는 메서드를 정의하는게 recoil을 경험해본 입장에서는 이해하기 쉬웠음
- useReducer hook을 좋아하지 않았음.
- 선택 이유(민종)
- 서버 상태 관리: @tanstack/react-query
- 사용 이유
- 서버 상태 / 클라이언트 상태를 분리하는 컨셉
- 비동기 데이터의 상태 관리를 위임.
- 다양한 API 지원
- 사용 이유
[DB 설계](https://www.notion.so/DB-790e3113e3b84e699131418d315de4b2)
- 클라이언트와 서버가 공유해야하는 소스가 있다.
- 타입 정의들
- eslint, prettier 등
- 혹은 공유할 수 있는 라이브러리들
- 사실상 멀티 레포처럼 해야할까?
- 아니면 yarn workspace, npm workspace 같은 도구를 사용할까?
- main(배포 브랜치)에서 파생된 dev
- dev에서 파생된 dev-fe와 dev-be
- dev-fe나 dev-be에서 파생된 feature
- dev에서 main으로 머지할 때는 : merge commit 남는 merge
- dev-fe나 dev-be에서 dev로 머지할 때는: merge commit 남는 merge
- feature에서 dev-fe나 dev-be로 머지할 때는 rebase (혹은 커밋 너무 많아서 하나로 합치려면 squash)
- 기획서
- Figma
- Architecture
- Skill Spec
- API
- Database ERD
-
Tech discussion and sharing