/and07-MindSync

🧠 여러명이서 동시에 마인드맵을 그릴 수 있다고~? MindSync ...더보기

Primary LanguageKotlin

Mind Sync (Mind Synchronize)

마인드맵 실시간 공동 편집 어플리케이션


Hits

✨ 프로젝트 소개

  • 마인드맵을 사용하여 아이디어를 시각적으로 표현해보세요
  • 협업을 원하는 친구나 동료를 초대하는 것도 가능합니다
  • 간편하게 마인드맵을 생성하고, 다른 사용자들과 실시간으로 공동 편집을 진행할 수 있어요

👨‍👩‍👧‍👦 팀원 소개

김찬희(J035) 양선아(K023) 이상준(K027) 이용환(J110) 이재한(K029)

⚒️ 기능 소개

🚀 스페이스

  • 스페이스는 여러 사용자가 함께 협업하는 공간입니다.
  • 스페이스를 만들고, 초대코드를 공유해서 다른 사용자를 초대할 수 있습니다.
  • 스페이스에 함께 있는 사용자들은 스페이스에 저장된 보드들을 공유하게 됩니다.
  • 스페이스는 스페이스에 참여한 모든 사용자가 나가게 되면 삭제됩니다.
스페이스 추가 초대 코드 발급 스페이스 참가 스페이스 나가기

📃 보드

  • 보드는 마인드맵을 저장하는 공간입니다.
  • 스페이스 하나에 여러개의 보드가 저장되고, 각 보드에는 마인드맵이 하나씩 할당됩니다.
  • 보드를 삭제하면 보드는 휴지통으로 이동됩니다.
  • 보드를 영구 삭제할수는 없고, 삭제된 일자 기준으로 7일이 지나면 자동으로 삭제됩니다.
    • 여러명이 협업할 수 있는 환경이기 때문에 영구 삭제는 되지 않도록 했습니다.
보드 생성 보드 삭제 휴지통

🧠 마인드맵

  • 보드를 클릭하면 마인드맵 화면으로 이동하게 됩니다.
  • 핵심 기능인 마인드맵을 그리고, 편집할 수 있는 공간입니다.
  • 노드를 추가, 삭제, 편집, 이동할 수 있습니다.
  • socket.io와 CRDT 알고리즘을 이용해 실시간으로 통신이 되도록 했습니다.
노드 추가 노드 삭제 노드 편집
노드 이동 확대/축소/드래그 실시간동시편집

🎯 기술적 도전

저희는 다음과 같은 과제에 도전했습니다.

  1. 마인드맵을 그릴 수 있다.
  2. 마인드맵을 동시에 실시간 편집 할 수 있다.

그래서 해당 과제를 수행하기 위해 다음과 같은 과정을 거쳤습니다.

  1. 마인드맵을 그리기 위해

  2. 마인드맵을 동시에 실시간 편집 할 수 있도록 하기 위해

  3. 빠른 응답을 위한 캐싱을 직접 구현해 적용했습니다.

  4. 마인드맵을 서버에 저장하는 공간인 보드와 보드를 여러개 저장할 수 있는 공간인 스페이스를 설계해 사용자가 초대/가입 할 수 있도록 했습니다.

  5. 자주 소통하도록 노력하며 협업했습니다.

    • 페어프로그래밍을 자주 했습니다.
    • 안드로이드&백엔드 분야간의 소통도 매일 활발하게 이루어졌습니다.
      • 초반에는 매일 1시간의 티타임을 가지면서 매일 1시간씩 꼭 대화하는 시간을 가졌습니다.
      • api 적용, 소켓 통신을 개발하기 시작하고 나서부터는 더 많은 소통이 필요했고, 그래서 같은 회의실을 사용해서 서로의 이슈를 바로바로 공유할 수 있도록 했습니다.

🚀 문제 해결 과정

📚 기술스택

AOS

  • Kotlin Canvas Socket.IO Coil MVVM Retrofit Datastore Hilt Flow Jetpack Navigation DataBinding

BE

  • Typescript NestJS Naver Cloud Platform MySQL MongoDB CRDT OAuth

📑 문서

설계서 피그마 디자인 프로덕트 백로그 스프린트 백로그 그라운드 룰
📒설계서: 프로젝트를 시작하면서 목표와 어떤 기능을 구현할 지 설계한 내용 📕피그마 디자인 🧾프로젝트 백로그: 전체 기능에 대한 일정 설계 스프린트 백로그: 매주 작성하는 구체적인 일정 설계 ⛳MindSync 팀의 그라운드 룰