2 Week Project Diary Day 1.

Javascript를 배우고 있습니다.
현재는 슬랙과 디스코드를 클론하는 2주 프로젝트 중입니다.


1. Project Idea

1. 프로젝트에 들어가기에 앞서

  • 드디어 부트캠프의 프로젝트 기간이 시작되었다. 앞으로 각 2주와 4주 프로젝트를 진행할텐데 이번에는 2주 프로젝트를 맞이했다. 어떤 주제로 프로젝트를 진행할까 자료도 만들고 발표도 하면서 나 외의 3명 팀원들과 한 팀으로 모였다.
  • 프로젝트 아이디어에는 우여곡절이 많았는데, 처음에는 버킷 리스트 관리 서비스를 생각했었다. 나는 버킷 리스트를 네이버 메모에 저장해서 사용하는데 예전에 써 놓은 버킷 리스트 읽는 재미만 있지, 이미 이룬 것과 앞으로 이루고 싶은 것들을 관리하는 기능은 없어서 불편했던 경험을 떠올리며 프로젝트 아이디어를 제안했었다.
  • 물론... 이미 그런 서비스는 존재했다. '여러 관광 상품을 내놓고 당신의 버킷리스트가 이 중에 있으니 골라서 좋은 시간을 보내라'는 식의 서비스들이길래 나는 거꾸로 '내 버킷 리스트는 이것인데, 그 버킷 리스트와 관련된 체험 프로그램들은 이런 이런 것들이 있다'로 구성해 관광 상품 판매자 중심이 아니라 사용자 중심으로 서비스를 꾸려보려 했다. 클래스 101이나 프립 등 몇 가지 체험 서비스 제공 사이트에서 키워드 중심으로 크롤링을 해와서 "체험 가능한" 버킷 리스트를 표시해주려고 했다.
  • 위의 설명이 모두 과거형인 이유는 이 아이디어로 프로젝트를 실행하지 않았기 때문.

2. 그래서 내가 선택한 프로젝트

  • 다른 수강생들의 아이디어 중 메신저형 서비스 Slack + 게임 커뮤니티 기반 음성 채팅 서비스 Discord를 접목한 서비스를 만들어 보고자 한다는 의견이 있어서 이 아이디어에 한 표를 던지며 합류하게 되었다.

  • Why Slack + Discord?

    • 일단 Slack 하나만 구현해도 성공이라고 생각하기 때문, 가장 기본인 클로닝에 도전해 그간 익혔던 내용들을 복습하려는 의도가 있어서
    • 데스크탑 어플리케이션에 관심이 많았는데, 이번 기회로 1)웹앱 구현 후 2)일렉트론으로 데스크탑 어플리케이션 구현까지 할 수 있다면 좋겠다는 야망?을 펼쳐보고 싶기 때문
    • 음성형 서비스에 대해 알아보고 싶어서: 작년에 청각장애인들을 위한 실시간 자막 서비스 '소보로(소리를 보는 통로)'를 알게 되었는데 대표 분이 직접 서비스를 짰다고 해서 아주 아주 신기했었던 기억이 있다. 구현은 둘째 치고 일단 관련되어서 알아보기만 해도 좋겠다는 생각이 있었다.
  • 아무튼 그래서 최종적으로 이번 2주 프로젝트는 메시지 채팅 기반 웹앱 서비스로 결정

2. Project Set up

1. 팀 룰 선정

  • 팀 프로젝트여서 팀원들끼리 지킬 lint, prettier, commit, code review rule을 정했다.
  • 무엇보다도 이번 프로젝트를 진행하면서 git flow를 제대로 경험해보지 않을까 싶다.

2. 역할 분담과 Stack

  • 나는 Back-end가 아주 살짝 더 마음이 갔지만, 정신 차리고 아직 미숙한 Front-end를 맡아서 연습을 더 해보기로 했다.
  • 이번 프로젝트는 지난 9주 간 배웠던 내용들을 복습하는 것에 집중하기로 팀원들과 합의 했기 때문에 이제 막 익숙해진 도구들을 중점적으로 사용하되 도전이 되는(challenging) 기술도 프론트/백엔드에 넣기로 했다.
구분 기본 stack 도전 stack
Front-End React Redux, Ant-design
Back-End NodeJS, Express, MySQL, Sequelize SocketIO, Passport
기타 음성 채팅 api 구글 캘린더/드라이브 api 등

3. 프로젝트 난이도 설정

  • 이 프로젝트는 학습을 위한 것이므로 프로젝트의 난이도를 3개로 구분하고 단계별로 도전해보고자 했다.
  • 2주 프로젝트 난이도 3단계
    • 1단계: 기본적으로 구현할 내용(이 부분만 달성해도 정상 서비스 가능): Slack에서 제공하는 기본 서비스_워크스페이스/채널 사용, 텍스트 기반 채팅 구현
    • 2단계: 도전의식을 가지고 구현할 내용: 디스코드 음성 채팅(음성 메시지 전송과 보이스 채팅) 기능 구현
    • 3단계: 악몽과 같지만 이룰 수만 있다면 큰 배움이 될 내용: 외부 api 연동, 일렉트론으로 데스크탑 구현
  • 이렇게 적어두긴 했지만 실제적인 작업일자는 9-10일 남짓이므로 1.5단계 구현을 목표로 1단계는 무조건 구현할 수 있게 달려 봐야겠다.

4. Data schema

  • 나는 프론트엔드이긴 하지만 전체 서비스의 DB 구조를 숙지하고 각 파트에서 일하는 것이 필요해 모든 팀원이 모여서 스키마를 짰다.
  • 고민했던 구간: 사실상 DM이나 채널이나 메시지를 contain하고 작성하는 기능이라서 테이블을 꼭 구분해야 할까 고민했다.
  • 해결책: 일단은 comment 테이블에서 type을 DM 혹 Channel로 나누는 것으로 설정해두고 추후 문제가 없을지 리뷰해보기로 했다.image.png [1차 data schema]

5. API 구상

  • 마찬가지로 팀원들이 함께 client와 server 간 통신을 정의했다.
  • 표로 정리했는데... 내일 리뷰가 끝나면 첨부할 예정

6. 향후 계획

  • 위에 언급한 것 외에도 2주간 3개의 스프린트를 나누어 스프린트 당 task를 쪼개는 등의 작업도 했다.
  • 내일은 이런 모든 내용을 엔지니어분과 검토하면서 보완하고 킥오프 준비가 되었는지 확인할 예정이다. Task 부분은 내일 많은 변경이 있을 것으로 예상되어 나중에 포스팅 하는 것으로.

-2주 프로젝트 첫 날 Dev Log 끝-