Skip to content

5️⃣ 5주차 발표 준비

Summer Min edited this page Nov 29, 2024 · 3 revisions

발표 자료

image

image

구현 현황

1. 실시간 에디터 구현

  • 사용자들은 문서를 작성하고 편집할 수 있습니다.
  • 모든 변경 사항은 실시간으로 캔버스와 동기화됩니다.

2. 실시간 노드 연결

  • 문서들은 노드로 연결되며, 위치 이동이나 연결 상태 변경을 다른 사용자와 실시간으로 공유할 수 있습니다.

3. 웹소켓과 Yjs 활용

  • 웹소켓 연결을 통해 실시간 협업 환경을 구축했습니다.
  • Yjs로 데이터 변경 사항을 백엔드와 동기화하며, 모든 연결 정보를 데이터베이스에 저장합니다.

4. 사용자별 노드 커스터마이징

  • 노드에 이모티콘을 추가하여 문서별로 시각적인 구분을 지원합니다.

배포 현황

3주차 배포

image

4주차 배포

image

사용자 피드백

지난 발표에서 사용자들로부터 받은 주요 피드백은 다음과 같습니다:

  1. 노드 연결 버튼 크기 확대 요청.
  2. 에디터와 캔버스 배경색 구분 부족으로 인한 가독성 문제.
  3. 다른 사용자 커서 크기가 너무 커서 불편하다는 의견.
  4. 노트 창 크기 조절 기능 추가 요청.
  5. 특정 노드의 커스터마이징 가능성 요구(구분하기 쉽게).
  6. 사용자의 커서, 프로필 변경을 더 쉽게.

이번 주 목표

FE

  • 그룹화

    • 단순 : GroupNode 위치, 크기만 저장.
    • 고도 : Group : Node → 에디터 안에서 메타데이터 - 어떤 그룹에 속해 있는지를 보여줄 수 있다.
  • 사용자들로부터의 피드백 반영

BE

  • 도메인과 배포 관련 작업
    • 서버 안정화, Postgres 연결
    • 자동 배포 안정화
    • https 구현
  • 캐시, 쿼리 안정화, 최적화

BE + FE

  • 회원가입, 로그인 구현
  • 로그인과 개인 워크스페이스
    • 단순 : 공유 링크로 동시 편집 가능한 형태, 생성은 로그인을 해야지 가능하게
    • 고도화 : 유저를 초대
    • 권한 관련 : read / read & edit

1. FE

로그인

  • OAuth, 로그인 상태 저장

워크스페이스 생성

워크스페이스 분리

  • 워크 스페이스별 소켓 룸, Y.Doc 분리
    • tanstack router 사용, 워크스페이스별 라우트 분리
    • 워크스페이스별 다른 소켓 룸과 Y.Doc 이름으로 다른 환경 제공
  • 초대 및 권한 설정
    • 토큰을 파라미터로 갖는 join/${token} 라우트에서 워크스페이스 입장 요청 후 워크스페이스로 redirect

연결 관계 관련 기능

  • 그룹화
    • 일반 노드를 담을 수 있는 그룹 노드 생성, 실시간 싱크

피드백

  • 노드 포커스

  • 커서 커스텀

2. BE

ERD 개선 작업

  • 사용자 관련 기능
  • 워크스페이스 관련 기능
  • 문서 메타데이터 추가
  • 특정 문서와 연결된 문서들

쿼리 최적화

  • update query 수 줄이기
  • 캐시 시스템 개선해보기
    • 실시간 변경 사항은 인 메모리 redis 데이터베이스에 저장하고 스케줄러를 통해 주기적으로 데이터베이스에 반영
    • redis의 모든 사항은 bulk update를 통해 한 번의 쿼리로 모두 데이터베이스에 저장

워크스페이스, 역할 단위 추가

  • 엔티티, 서비스, 컨트롤러 기본 구성
  • DB 구성, 레포지토리와 연결
  • 기본 API 구성: 워크스페이스 생성, 삭제, 권한 부여

권한 관리 (워크스페이스)

A. 워크스페이스 종류, 역할(Role) 종류

  • 역할(Role)

    • (1) 소유자인 owner (workspace 삭제, 게스트 초대 기능)
    • (2) 초대받은 사람인 guest (workspace 안 문서, edge, node등 편집, 삭제, 생성 가능)

    → 이렇게 두가지 role만 만들어놓고

  • workspace 자체는

    • (1) public (모두에게 공개)
    • (2) private (자신 + 초대받은 guest들에게만 공개)

B. private workspace에서 owner가 guest를 초대하는 로직

  1. 워크스페이스 소유자가 링크 만들기 ⇒ 암호화된 링크 생성
  2. 해당 링크로 초대받은 사람이 접근
  3. 서버에서 해당 링크 검증
  4. DB에 초대받은 사람 Guest로 Role 업데이트
  5. 업데이트 후 클라이언트는 해당 워크스페이스의 현재 브라우저에 접속하고 있는 사용자의 권한을 알 수 있다

배포

  • 도메인 연결 및 https 구현

개발 문서

⚓️ 사용자 피드백과 버그 기록
👷🏻 기술적 도전
📖 위키와 학습정리
🚧 트러블슈팅

팀 문화

🧸 팀원 소개
⛺️ 그라운드 룰
🍞 커밋 컨벤션
🧈 이슈, PR 컨벤션
🥞 브랜치 전략

그룹 기록

📢 발표 자료
🌤️ 데일리 스크럼
📑 회의록
🏖️ 그룹 회고
🚸 멘토링 일지
Clone this wiki locally