1. 팀 소개
팀 이름은 G-Team으로 팀원은 Project Manager 1명과 Team Member 3명으로 총 4명과 이번 프로젝트를 진행하게 되었습니다.
2. 프로젝트 소개
01. 프로젝트 목적
이번 프로젝트에 목적은 2주의 Foundation 기간 동안 Wecode에서 배운 Express등을 활용해 여러 팀원과 공동의 목표를
이루는 경험을 하며 기간은 일주일 동안 SNS 중 하나인 Threads와 동일한 서비스를 구축하는 미니 프로젝트를 진행했습니다.
Threads의 가장 핵심적인 기능을 추려 MVP(Minimum Viable Product , 최소 기능 제품)를 선정하여
기능 단위로 개발 범위를 나누며 미리 정의된 기능 정의서를 바탕으로 개발 프로세스를 경험하는 것이 목적이었습니다.
■ Threads란?
텍스트 업데이트를 공유하며 공개 대화에 참여할 수 있도록 Instagram에서 만든 새로운 앱 입니다.
Instagram계정을 사용해 로그인하여 최대 500자의 텍스트로 게시물을 작성하며 링크, 사진, 동영상(최대 5분까지)을 포함할 수 있다고 합니다.
Threads 내에서는 언급할 수 있는 사람, 답글을 달 수 있는 사람을 스스로 관리할 수 있으며 Instagram에서 만든 앱인 만큼 Instagram 내에서 차단된 계정은 Threads에서도 자동으로 차단이 된다고 합니다.
원하는 사람들과 소통할 수 있는 더 많은 기능을 제공하며 계정이 없어도 Threads 이용자들과 팔로우 및 소통을 하고 그 반대인 경우도 가능하게 만들려고 Instagram이 노력하고 있는 앱이라고 합니다.
02. 프로젝트 목표
Threads의 회원가입API, 로그인 API, 게시글 CRUD(Create, Read, Update, Delete) API를 개발하는 것이 목표입니다.
3. 기술 스택
- RDBMS : MySQL
- 언어 : JavaScript, Node.js
- Node.js에서 사용한 프레임 워크 및 패키지 : npm(nodemon, express, nodemon, bcrypt, cors, dbmate, dotenv, jsonwebtoken, mysql2, typeorm, morgan)
- 버전 관리 : Git & GitHub
4. 구현 기능
필수 구현 기능
- User의 회원가입(서비스를 이용하기 위한 회원 가입 절차)
- User의 로그인(email과 password를 이용하여 서비스 가입자 여부를 확인하고 서비스를 이용할 수 있는 Token 발급)
- Thread 목록 확인(다른 사람들이 남긴 Thread들을 최신순으로 확인)
- Thread 남기기(로그인한 사용자가 Thread upload 가능하게 하기)
추가 구현 기능
- Thread 수정하기(로그인한 사용자가 본인이 남긴 쓰레드를 수정할 수 있게 해주는 기능)
- Thread 삭제하기(로그인한 사용자가 본인이 남김 쓰레드를 삭제할 수 있게 해주는 기능)
- Thread, User (좋아요 추가 & 삭제하기 기능)
- Thread 펼쳐보기 (작성된 게시글을 눌렀을때 상세 내용을 펼쳐 볼 수 있는 기능)
- Thread 댓글기능 ( 로그인 한 사용자가 쓰레드 상세 페이지에서 댓글을 추가할 수 있는 기능)
5. 담당 역할(담당 티켓)
• 초기 환경 세팅
01. ) 초기 환경에 필요한
npm(nodemon, express, nodemon, bcrypt, cors, dbmate, dotenv, jsonwebtoken, mysql2, typeorm, morgan) 패키지들 설치
02. ) 초기 환경에 필요한 .env, .env.sample, .gitignore, package.json 작성
03. ) 팀원과 의논해 결정한 ERD 바탕으로 Dbmate를 통해 DB 생성 및 TABLE 생성
• 로그인, 회원가입 API & Layered Pattern 적용
01. ) 로그인 & 회원가입 API 기능 구현
02.) 단일파일로 되어 있던 코드들을 Layered Pattern 적용을 통해 모듈화 구현
• Thread 남기기, 수정하기, 삭제하기 API 기능 구현
01. ) Thread 남기기, 수정하기, 삭제하는 API 기능 구현
5. 아쉬운 점과 좋았던 점
👍 좋았던 점
- 서로 다 하나하나 다 연결되어 있는 파일들과 변수명들로 팀원들과 하나하나 다 상의하여 내용을 변경하고 적용시켜
각자 다른 파일이지만 하나의 파일인 것처럼 내용들을 통일하여 서로 소통하는 법과 협력하는 과정을 배울 수 있어 좋았습니다.
- 하나의 서비스와 제품을 구현하기까지는 단 한명의 노력만 필요한 것이 아닌 모두의 노력과 합이 중요하다는 것을 이번 프로젝트를 팀원들과 함께 진행하면서 너무 깊이 깨달았습니다. 팀원들의 소통과 서로의 맞춰가기 위한 노력 그리고 한 사람도 빠짐없이 같이 이끌고 나갈 수 있는 단합도 그 서비스와 제품을 나오게 하는 데 필요한 요소라는 걸 알게 되었습니다.
- 다양한 오류들 뿐 아닌 단순한 오류들을 마주하면서 어떤 부분에서 내가 더 봐야 하고 수정해야 할지 오류들을 통해
그 오류들을 두려워하지 않고 해결해 나아갈 수 있는 힘을 기를 거 같습니다.
오류내역
- 단순한 오류들 중에서는 잘못된 End point를 입력하여 404 err가 발생했고 end point 수정 후 재시도했을 때 정상작동
- Post, Put 보내는 방식을 잘못 설정하여 (ex. [PUT] /thread/putMod → [POST] /thread/putMod로 잘못 보냄 ) err발생하여 형식 올바르게 선택 후 재전송하니 정상작동
- user 회원가입하는 코드에서 nickname, profile_image에 대해 만약 값이 없다면 defalut 값으로 넣어주는 코드에서 err가 발생하여 찾아보니 아직 회원가입하지 않은 유저라 DB에 들어갈 수 없는 값을 변수로 선언하여 undefined로 나온 것을 확인 -> 해당 변수를 삭제 후 if, else문에 nickname값과 profile_image 값을 재할당하니 정상 작동
- 쿼리문에서 user 정보를 가져오는 값이 없어 err 발생하여 확인해보니 user가 입력한 email 정보로 users table에서 user의 정보를 가져오는 select 쿼리 문에서 user의 id, nickname, profile_image값을 제외하여 가져와 제외된 값을 가지 오지 못해 오류 -> 제외된 값을 가져올 수 있게 해당 컬럼명 추가해 쿼리문 재작성하니 정상 작동
-> 찾기 힘든 오류들도 있었지만 이런 사소한 한 부분에 대해 오류를 경험하고 알게되어 해당 오류에 대해 빠르게 대처가 가능하며
이후 발생하는 오류들에 대해서도 금방 적응하여 찾을 수 있게 되었습니다.
🙃 아쉬운 점
- git merge 시간이 조금 지체 되어 git에서 merge를 하지 못하고 slack에서 파일들을 공유하여 내용들을 합쳤을 때 정상적으로 작동하는지 매번 체크하면서 프로젝트를 진행했습니다. 그래서 git branch 별로 코드 분리가 되어 있지 않아 버전 관리가 되기 힘들어 해당 내용이 조금 아쉬웠습니다.
- 제가 구현한 Thread 수정하기에서는 user가 수정할 content 입력하면 바로 수정이 되어 DB에 저장되게 했지만 이후 멘토님들의 코드를 보면서 user가 수정하기 이전 content 내역을 불러다 보여주는 것을 확인하고 해당 부분이 구현하지 못해 이런 사소한 부분까지 생각하지 못해 구현하지 못해 아쉬웠습니다.
'BackEnd' 카테고리의 다른 글
Wecode 3st Project 회고록 (0) | 2023.09.24 |
---|---|
Wecode 2st Project 회고록 (0) | 2023.09.03 |
Database (0) | 2023.08.15 |
Linux & Terminal (0) | 2023.08.02 |
API에 대해 알아보기 (0) | 2023.08.02 |
댓글