Skip to content

kreimben/Xlack-Backend

 
 

Repository files navigation

Xlack

슬랙 클론 코딩 프로젝트

워크스페이스 및 소통 용도로 많이 쓰이는 슬랙을 클론 코딩 하였습니다. 백엔드는 django, django rest framework, django channels로 구현하였고, 프론트엔드는 restapi 및 websocket을 이용하여 react.js로 구현됐습니다.

팀 구성

  • 프론트엔드: 3명
  • 백엔드: 2명

역할 및 담당

  • 팀장
  • 백엔드 담당
    • 워크스페이스별 채널 관리 (CRUD)
    • 프로필 수정
    • 채널info 수정
    • 채널별 멤버 권한편집 및 수정
    • 실시간 채팅
    • 채팅 북마크
    • 파일 업로드/다운로드
    • 유저 실시간 상태 설정
  • 배포 담당

기능 구현 중 어려웠던 사항

백엔드 구현 중 어려웠던 것으로 실시간 채팅 및 알림, 파일 업로드&다운로드 관리가 있었습니다. 실시간 채팅 자체는 웹소켓으로 구현하면 되지만 채팅을 쳤을 때 실시간으로 알림을 보내주는 시스템 구현에 어려움이 있었고, 이용자들이 플랫폼에 파일을 업로드 했을 때 그 파일을 어디서 어떻게 관리 할 것인지, 다운로드까지의 API 설계에 있어서 고민을 많이 했습니다.

전체 기능

  • 워크스페이스별 채널 관리 (CRUD)
  • 프로필 수정
  • 채널info 수정
  • 채널별 멤버 권한편집 및 수정
  • 멘션 닉네임 자동완성
  • History
  • 실시간 채팅
  • 채팅 북마크
  • 실시간 알림(on off)
  • 실시간 채팅 리액션
  • 파일 드래그 앤 드롭 & 업로드/다운로드
  • 유저 실시간 상태 설정

사용 라이브러리

  • django
  • mysqlclient
  • djangorestframework
  • drf-yasg[validation]
  • channels
  • channels_redis
  • djangorestframework-simplejwt[crypto]
  • dj-rest-auth[with_social]
  • django-allauth
  • django-storages
  • django-silk

로그인 하는 방법

깃헙 계정으로 로그인 합니다.

워크스페이스 추가하기

채널

워크스페이스에 채널을 추가하는 법

채널에 멤버를 추가하는 법

채널 정보를 수정하는 법

채널을 삭제하는 법

채팅

리얼타임 채팅

기능 설명

  • 채팅 북마크 (즐겨찾기)
  • 북마크 확인하기
  • 리액션 추가
  • 파일 업로드 & 다운로드

파일 업로드 & 다운로드

알림

실시간 채팅 알림

기능 설명

  • 팝업 알림
  • 읽지않은 채팅 기능
  • 알림 클릭 시 채널로 이동
  • 알림 중지 기능

프로필

기능 설명

  • 모달 액션으로 구현
  • 자신의 정보 (이름, 전화번호, 이메일 등등)
  • 지금 상태
  • 수정 기능
  • 알림 중지 기능 설정을 프로필에서 설정 가능함

프로필 수정하는 방법

상태

기능 설명

  • 더블 모달 액션으로 구현
  • 상태 아이콘, 메세지, 알림 중지 기간 설정 가능

상태 수정하는 방법

About

Xlack Backend Repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 92.5%
  • JavaScript 6.6%
  • Other 0.9%