본문 바로가기
DEV/Web 개발

Web개발 :: 프로젝트 정리 및 회고 _TIL82

by 올커 2022. 12. 29.

■ JITHub 개발일지 82일차

□  TIL(Today I Learned) ::

가까?마까?(GaggaMagga) 프로젝트

가까?마까?(GaggaMagga) 프로젝트

 

📌 프로젝트 개요

기획 의도
 
  • 누구나 여행을 떠나서 음식점을 가거나, 점심 식사 메뉴를 정할 때 고민이 있었던 경험이 있을 것 입니다.
  • 본 서비스는 '제주도' 라는 특정 지역에서 먹고자 하는 음식의 종류나 장소를 선택하면 사용자에게 맛집을 추천하고 있습니다.
  • 추천 기능은 머신러닝 유저기반 추천 기능을 활용하여 사용자와 가장 유사한 경험을 갖고 있는 사용자의 데이터들를 통해 음식점을 추천합니다.
  • 방문한 맛집은 다른 사용자와 후기를 공유하고, 후기에는 별점을 넣어 장소별 평가점수를 관리할 수 있습니다.
  • 각 후기에는 댓글과 대댓글 기능으로 유저간 경험을 공유할 수 있는 플랫폼을 제공합니다.
  • 마음에 드는 장소는 북마크하여 저장하고, 성향이 잘 맞는 유저는 팔로우하여 해당 유저의 경험을 공유받을 수 있는 서비스를 구성하였습니다.
개발기간 : '22.11.30 ~ 12.29'

 

🥘 서비스 시연 영상

영상

 

기능 명세서

  • 사용자 환경(회원가입, 로그인, 회원정보 관리, 팔로우, 비활성화, 아이디/비밀번호 찾기 등등)
  • 맛집 후기(리뷰) 작성/수정/삭제, 조회수 카운트, 좋아요, 검색 기능
  • 후기 댓글 작성/수정/삭제
  • 후기 댓글의 대댓글 작성/수정/삭제 기능
  • 유저간 댓글 알림 기능

 

🔨 개발 포지션 구성

🛠 사재혁
 
  • 유저 관리, 프로필, 개인설정 및 추가 기능
  • user 테스트 코드
  • Docker, AWS 배포
  • CI/CD 구축
  • 코드 리팩토링/Swagger 적용
🛠 장진
 
  • 머신러닝 장소 추천 기능, 후기 조회수, 페이지네이션
  • place 테스트 코드
  • CI/CD 구축
🛠 나웅주
 
  • 리뷰 조회 페이지, Best 리뷰 페이지
🛠 이지영
 
  • 북마크 기능, 좋아요 기능, 댓글/대댓글 기능
  • review 테스트 코드
🛠 이금빈
 
  • 리뷰 생성 페이지, 팔로우 기능, 알림 기능, 검색 기능
  • notification 테스트 코드
  • Docker, AWS 배포

 

⛓ Tech Stack

Backend :

Server :

Management :

Database :

 

📚 Used API, Dataset

  • 소셜로그인 : KAKAO Oauth2 API
  • 계정 찾기 : NAVER Cloud SMS API
  • 지도 App : NAVER Web Dynamic Map API
  • 검색 App : ALGOLIA API
  • IP 정보 확인 : Whois API
  • 맛집 Data : NAVER Map v5.0 crawling Data

 

🧱 Project Architecture

🕸 Wireframe

🛢 Database ERD

🎯 Notion API | Swagger API Docs

USER API
PLACE API
REVIEW API
NOTIFICATION API

🤙 Test Code Case

USER TEST CODE

회원가입

  1. 회원가입 성공
  2. 회원가입 실패(이메일 빈칸)
  3. 회원가입 실패(이메일 형식)
  4. 회원가입 실패(이메일 중복)
  5. 회원가입 실패(아이디 빈칸)
  6. 회원가입 실패(아이디 유효성검사)
  7. 회원가입 실패(아이디 중복)
  8. 회원가입 실패(비밀번호 빈칸)
  9. 회원가입 실패(전화번호 중복)
  10. 회원가입 실패(비밀번호확인 빈칸)
  11. 회원가입 실패(비밀번호, 비밀번호 확인 일치 )
  12. 회원가입 실패(비밀번호 유효성 검사(simple))
  13. 회원가입 실패(비밀번호 유효성검사(동일))
  14. 회원가입 실패(약관동의)

회원정보 수정/비활성화

  1. 회원정보 수정 성공
  2. 회원정보 수정 실패(이메일 빈칸)
  3. 회원정보 수정 실패(이메일 중복)
  4. 회원정보 수정 실패(이메일 형식)
  5. 회원정보 수정 실패(휴대폰번호 중복)
  6. 회원 비활성화

로그인

  1. (access token)로그인 성공
  2. (access token)로그인 실패
  3. (access token 여러번 시도)로그인 실패
  4. (refresh_token)로그인 성공
  5. (refresh_token)로그인 실패(refresh 입력안했을 때)
  6. (refresh_token)로그인 실패(access 토큰 넣었을 때)

로그아웃

  1. (refresh_token)로그아웃 성공
  2. (refresh_token)로그아웃 실패(refresh 입력안했을 때)
  3. (refresh_token)로그아웃 실패(access 토큰 넣었을 때)
  4. 일괄 로그아웃 성공

토큰 유효 확인

  1. access 토큰 유효 (성공)
  2. refresh 토큰 유효 (성공)
  3. 토큰 유효하지 않음 (실패)

이메일 인증 확인

  1. 이메일 인증 확인 성공
  2. 이메일 인증 확인 실패

이메일 재인증

  1. 이메일 재인증 성공
  2. 이메일 재인증 실패

아이디 찾기(인증번호)

  1. 인증번호 보내기 성공
  2. 인증번호 보내기 실패
  3. 인증번호 확인 성공
  4. 인증번호 확인 실패

프로필

  1. 개인 프로필 조회
  2. 개인 프로필 수정 성공
  3. 개인 프로필 수정 실패(닉네임 유효성검사)
  4. 개인 프로필 수정 실패(닉네임 중복)
  5. 공개 프로필 조회
  6. 로그인 기록
  7. IP 국가코드 차단 읽기 성공
  8. IP 국가코드 차단 성공
  9. IP 국가코드 차단 실패 (국가 코드 중복)
  10. IP 국가코드 차단 실패 (국가 코드 빈칸)
  11. IP 국가코드 차단 삭제

비밀번호 변경

  1. 비밀번호 변경 성공
  2. 비밀번호 변경 실패(현재 비밀번호 빈칸)
  3. 비밀번호 변경 실패(현재 비밀번호 불일치)
  4. 비밀번호 변경 실패(비밀번호 빈칸)
  5. 비밀번호 변경 실패(비밀번호 확인 빈칸)
  6. 비밀번호 변경 실패(비밀번호 현재비밀번호와 동일시)
  7. 비밀번호 변경 실패(비밀번호 유효성검사(simple))
  8. 비밀번호 변경 실패(비밀번호 유효성검사(동일))
  9. 비밀번호 변경 실패(비밀번호, 비밀번호 확인 일치)

비밀번호 찾기

  1. 비밀번호 찾기 실패(존재하지 않는 이메일전송)
  2. 비밀번호 찾기 실패(형식에 맞지 않는 이메일 전송)
  3. 비밀번호 찾기 실패(이메일 빈칸일 때 이메일 전송)

비밀번호 토큰 인증

  1. 비밀번호 토큰 인증 성공
  2. 비밀번호 토큰 인증 실패비밀번호 분실시 재설정
  3. 비밀번호 분실시 재설정 성공
  4. 비밀번호 분실시 재설정 실패(비밀번호 빈칸)
  5. 비밀번호 분실시 재설정 실패(비밀번호 확인 빈칸)
  6. 비밀번호 분실시 재설정 실패(비밀번호 유효성검사(simple))
  7. 비밀번호 분실시 재설정 실패(비밀번호 유효성검사(동일))
  8. 비밀번호 분실시 재설정 실패(비밀번호, 비밀번호 확인 일치)
  9. 토큰이 다를 경우

비밀번호 만료

  1. 비밀번호 만료시 확인
  2. 비밀번호 만료시 다음에 변경
  3. 비밀번호 만료시 변경 성공
  4. 비밀번호 만료시 변경 실패(현재 비밀번호 빈칸)
  5. 비밀번호 만료시 변경 실패(현재 비밀번호 불일치)
  6. 비밀번호 만료시 변경 실패(비밀번호 빈칸)
  7. 비밀번호 만료시 변경 실패(비밀번호 확인 빈칸)
  8. 비밀번호 만료시 변경 실패(비밀번호 유효성검사(simple))
  9. 비밀번호 만료시 변경 실패(비밀번호 유효성검사(동일))
  10. 비밀번호 만료시 변경 실패(비밀번호, 비밀번호 확인 일치)

팔로우 성공

  1. 팔로우 기능 성공
  2. 팔로우 기능 실패(본인 팔로우 했을 때)
PLACE TEST CODE

맛집 카테고리 선택

  1. 카테고리 선택(음식 선택 - 비로그인 계정)
  2. 카테고리 선택(장소 선택 - 비로그인 계정)

맛집 리스트 추천

  1. 맛집 리스트 불러오기(음식 선택 - 비로그인 계정)
  2. 맛집 리스트 불러오기(장소 선택 - 비로그인 계정)
  3. 맛집 리스트 불러오기(음식 선택 - 로그인 계정)
  4. 맛집 리스트 불러오기(장소 선택 - 로그인 계정)

맛집 상세페이지

  1. 맛집 상세페이지 조회
  2. 맛집 삭제(관리자 계정)
  3. 맛집 삭제 실패(비관리자 계정)
  4. 맛집 북마크(유저일 때)
  5. 맛집 검색
REVIEW TEST CODE

비로그인 계정, 로그인 계정(리뷰X), 카카오계정(리뷰X)

  1. 리뷰 전체 조회(Best리뷰)
  2. 맛집 리뷰 조회

리뷰 작성

  1. 리뷰 작성(이미지X)
  2. 리뷰 작성(이미지O)
  3. 리뷰 작성 실패(비로그인 유저)
  4. 리뷰 작성 실패(리뷰 내용이 빈칸)
  5. 리뷰 작성 실패(리뷰 평점이 빈칸)

리뷰 수정

  1. 리뷰 수정 내용 조회
  2. 리뷰 수정(이미지X)
  3. 리뷰 수정(이미지O)
  4. 리뷰 수정 실패(비로그인 유저)
  5. 리뷰 수정 실패(리뷰 내용이 빈칸)
  6. 리뷰 수정 실패(리뷰 평점이 빈칸)
  7. 리뷰 수정 실패(리뷰 작성자 불일치(작성자 user1))

리뷰 삭제

  1. 리뷰 삭제 실패(비로그인 유저)
  2. 리뷰 삭제 실패(리뷰 작성자 불일치(작성자 user1))

리뷰 신고

  1. 리뷰 신고
  2. 리뷰 신고 실패(비로그인 유저)
  3. 리뷰 신고 실패(작성자가 신고)
  4. 리뷰 신고 실패(중복 데이터)
  5. 리뷰 신고 실패(신고 내용 빈칸)
  6. 리뷰 신고 실패(신고 카테고리 빈칸)

리뷰 좋아요

  1. 리뷰 좋아요
  2. 리뷰 좋아요 실패(비로그인 유저)

댓글 조회/작성

  1. 해당 리뷰의 댓글 조회 성공
  2. 댓글 작성 성공
  3. 로그인 안된 유저가 시도했을때 에러나오는지
  4. 댓글 작성 실패(댓글 내용이 빈칸)

댓글 수정

  1. 댓글 수정 성공
  2. 댓글 수정 실패(비로그인 유저)
  3. 댓글 수정 실패(댓글 수정 내용이 빈칸)
  4. 댓글 수정 실패(리뷰 작성자 불일치(작성자 user1))

댓글 삭제

  1. 댓글 삭제
  2. 댓글 삭제 실패(비로그인 유저)
  3. 댓글 삭제 실패(댓글 작성자(user1)와 삭제 유저(user2)불일치)

댓글 신고

  1. 댓글 신고
  2. 댓글 신고 실패(비로그인 계정)
  3. 댓글 신고 실패(작성자가 신고)
  4. 댓글 신고 실패(중복 데이터)
  5. 댓글 신고 실패(신고 내용 빈칸)
  6. 댓글 신고 실패(신고 카테고리 빈칸)

댓글 좋아요

  1. 댓글 좋아요
  2. 댓글 좋아요 실패(비로그인 계정)

대댓글 조회/작성

  1. 해당 댓글의 대댓글 조회 성공
  2. 대댓글 작성 성공
  3. 로그인 안된 유저가 시도했을때 에러나오는지
  4. 대댓글 작성 실패(대댓글 내용이 빈칸)

대댓글 수정

  1. 대댓글 수정
  2. 대댓글 수정 실패(비로그인 유저)
  3. 대댓글 수정 실패(댓글 수정내용이 빈칸)
  4. 대댓글 수정 실패(리뷰 작성자 불일치(작성자 user1))

대댓글 삭제

  1. 대댓글 삭제
  2. 대댓글 삭제 실패(비로그인 유저)
  3. 대댓글 삭제 실패(대댓글작성자(user1)와 삭제유저(user2)불일치)

대댓글 신고

  1. 대댓글 신고
  2. 대댓글 신고 실패(비로그인 유저)
  3. 대댓글 신고 실패(작성자가 신고)
  4. 대댓글 신고 실패(중복 데이터)
  5. 대댓글 신고 실패(신고 내용 빈칸)
  6. 대댓글 신고 실패(신고 카테고리 빈칸)

대댓글 좋아요

  1. 대댓글 좋아요
  2. 대댓글 좋아요 실패(비로그인 유저)
NOTIFICATION TEST CODE

알람 기능

  1. 알람 리스트 조회
  2. 알람 읽음 처리

 

🔗 Link

Front-end Repository

Notion 현황판 & 트러블 슈팅

배포 사이트

 

가까? 마까?

제주도 맛집 추천이 필요하신가요? 장소 및 음식을 선택해서 간단하게 추천을 받아보세요!

gaggamagga.shop

 


 

프로젝트 회고

 

Keep:
 - Test코드를 모든 케이스가 포함될 수 있도록 세심하게 작성한 점
 - 팀원들과 깃 컨벤션, 파이썬 코드 컨벤션을 지키며 작성하려 노력한 점
 - 깃허브 이슈를 활용하려 노력했던 점
 - 현황판을 활용하여 진행한 작업일정을 관리했던 점
 - CI/CD를 구현하기 위해 진행하려 했던 점


Problem:
 - 배포나 다른 팀원들의 코드를 아직 100%이해하지 못한 부분이 남아있다.
 - 처음에 코드를 작성할 때 발생하는 문제점을 예상하지 못하여 나중에 문제가 발생한 후 코드를 고치는데 부담이 되어 개선하지 못한 문제가 남아있다. (사용자 추천서비스에서 GET으로 페이지네이션을 가져올 때 마다 머신러닝을 진행하는 코드를 수정하지 못한 점)
 - 한 달간의 프로젝트를 마무리하였지만 아직 서비스는 보완할 점이 남아있다. 실제로 시중에 서비스되는 서비스들도 계속 보수/보완/개선작업이 이루어지기 때문에 100%완벽한 서비스는 거의 없을 것이라고 생각된다.


Try:
 - 프로젝트가 완료되었지만 아직 부족한 부분이 많다. 코드를 다시보며 내재화하는 것이 필요하다.
 - TIL을 살펴보며 지금껏 해왔던 프로젝트들을 다시 회고하고 내 것이 되도록 해야겠다.


Feel:
 - 지나왔던 프로젝트들과 이번 프로젝트를 통해 회고해보면 정말 단기간에 많은 것을 해 볼 수 있었다고 생각된다. 책으로 혼자 익히기보다는 프로젝트를 통해 고민하고 찾아보면서 내재화할 수 있었던 면이 많았다. 또, 같이 진행해던 팀원들로부터 긍정적인 영향도 많이 받을 수 있었다.
 - 이번 프로젝트에서 Django, DRF, Javascript 그리고 노력을 가장 많이 쏟았던 머신러닝과 웹 크롤링 부문에서 조금 더 성장할 수 있었던 것 같다. 아직 부족한 것은 사실이나, 앞으로의 허들을 넘기 위해 디딤돌이 되지 않았을까 싶다.

 - TIL들을 하나씩 돌아보았는데 그 순간은 작성하는게 쉽지 않았지만, 지금 보면 정말 재미있는 일기장이 되어있다. 아쉬운 점, 부족한 점들을 지금은 되돌아볼 수 있는 시간이 되었다. 자주 들여다보고, 새로운 TIL들을 앞으로 써나가야 겠다. 

 - 앞으로도 프로젝트는 계속해나가야 한다. 정해진 시간 내에서 시간안배를 어떻게 계획하고 해나갈지 고민해봐야하지만, 지금 이제 연말이니 가장 적기이지 않을까 싶다. 
 - 마지막으로 프로젝트를 마무리하는데 도움을 준 모든 분들에게 정말 솔직한 감사의 말을 전달드리고 싶다. 한 분 한 분 서로를 배려하고 맡은 일에 성실히 진행해주셔서 프로젝트가 잘 마무리되었다고 생각한다.

 

반응형

댓글