본문 바로가기

내일 배움 캠프/sansamPet

sansamPet 프로젝트 완성

728x90

 

0.  주요 링크

Github

PPT

S.A.

0-1.  튜터 님의 S.A. 피드백

- 와이어프레임 심플하게 잘 작성하셨어요.

> 감사합니다!
- 업무분담 내용은 누락되어있네요. 업무분담 내용도 작성해보아요.

> 조장 님께서 추가해 주실 것 같습니다~
- ERD 관련
- 컬럼 네이밍 컨벤션을 지켜주세요. cameCase/snake_case

> 팀 회의 하고 camelCase로 수정하였습니다!
- is_delete는 deleted_at 시간으로 판별이 가능하기에 불필요합니다.

> isDelete를 지웠습니다!
- date datetime이 혼합되어있는 이유가 있나요?

> 이유는 없고 바빠서 적다 보니 혼합되었습니다. 현재 date로 전부 수정하였습니다!
- api 명세서도 잘 작성하셨어요. 리뷰 전체조회는 reviews로 해야 다른 api주소와 맞게 통일성이 있겠네요.

> reviews로 수정하기로 하였습니다! 

1.  산삼 펫이란 

"산삼 펫" 사이트는 산삼을 전문적으로 키우는 분들을 위한 온라인 플랫폼입니다🌱

이 사이트는 전문 심마니들이 유저들의 소중한 산삼을 훌륭하게 키울 수 있도록 도와줍니다.

산삼 숙성 장인들에게 맡기고 싶은 유저들을 모집합니다🎈

 

2. 우리 팀 약속

  1. 다투지 않기
  2. 건강 유의하기
  3. 효율적으로 질문하고 친절하게 대답해주기
  4. 시간 약속 잘 지키기

 

3. 개발 일정

 

4. 역할 분담

성원 : 회원가입 / 로그인, 구글 로그인
민준 : 리뷰 CRUD, 발표
다영 : 예약 CRUD, 심마니 CRUD, 검색, 로그인 알림, 전체 공지 발송
한솔 : 리뷰 영구 삭제 프론트, 발표 자료 준비

 

5. 내가 구현한 주요 기능

 

예약 CRUD
Delete : API가 호출될 경우 deletedAt이라는 정보를 update하여 softdelete한다.

PermenantDelete : API가 호출될 경우 destroy를 이용하여 완전히 지운다. 이 API는 지정된 userId를 가진 관리자만 접근 가능하다. 

 

심마니 CRUD

예약과 기능은 거의 비슷하다.

 

검색

rawQuery를 이용하여 일치하는 정보를 찾아내고 필요한 정보를 제공한다. select문을 1번만 사용한다. 실행 속도를 높이고자 힘썼다. 

 

로그인 알림

관리자만 이용할 수 있으며 io.to(socketId)를 통해 관리자에게만 회원들의 로그인 정보가 알림으로 뜬다.

 

전체 공지 발송

관리자만 이용할 수 있으며 페이지에 접속한 모든 사용자에게 공지사항을 띄운다.

6. 사용하는 기술 

Java Script, Nodejs , MySQL , HTML , CSS , AWS

 

7. 와이어 프레임

8.  ERD

9.  API

API

10. 개발 과정 중 발생한 문제

10-1. is not a constructor

문제

constructor를 잘 작성한 것 같은데 아니라고 함.

시도

파일을 살펴 보았다.

해결

연결된 파일이 아닌 다른 곳에 ReservationService의 내용을 작성하였다.

알게된 것

연결된 파일에 constructor가 없는 경우 해당 constructor가 constructor가 아니라는 오류가 나올 수 있다. 

 

10-2. include 설정 시 Model 

문제

include를 설정해 둔 Model이 undefined 된다

시도

이전 파일을 살펴 보았다.

보니까 해당 모델을 가져오는 부분이 있었다.

해결

알게 된 점

include를 사용할 경우 해당 Model을 가져와야 한다.

 

10-3.  where 절을 작성하였으나 찾질 못한다

문제

where절을 분명히 적었는데 작동하지 않는다.

시도

프로퍼티의 value 축약하지 않기

해결

where절 위치 변경

알게된 것

sequelize에서는 문법의 위치도 중요하다.

 

10-4. emit 보안

문제

emit에 이름이 노출되면 모두가 볼 수 있다.

시도

response.json({})안에 키는 아무거나, 값으로 emit이름을 넣어준다.

해결

잘 작동하고 emit 이름도 숨길  수 있게 됨.

알게된 것

response.json({})안에 키는 아무거나, 값으로 emit이름을 넣어준다.

 

11. 나의 소감

완성하기 힘들 것이라고 생각했는데 다같이 도우며 협업의 결과를 이뤄내서 기쁘다.

구글 로그인 부분이 굉장히 어려워 보였는데 성공하신 게 너무 멋지다고 생각한다.

캘린더에 예약 내용을 표현하는 것도 생각지도 못한 기능인데 구현되어서 너무 좋다.

내가 구현한 소켓 보안에 관련하여 조금 더 공부해 봐야겠다.

개발에서 참여를 많이 하지 못한 한솔님도 발표 자료 준비를 통해 역할을 채워 나갈 수 있어서 좋았다. 

다음에는 조금 더 둥글고 기분 좋게 말하는 방법을 사용하고 싶다.

발표 자료 준비 및 발표자 선정에 있어서 강한 의견을 냈는데 그게 조금 불편할 수도 있겠다고 생각했다.

강한 의견은 지금 짚고 넘어가지 않으면 조금 더 좋지 않은 결과가 나올 것 같아서

실례를 무릎쓰고 의견을 평소보다 강하고 솔직하게 내었다. 

 

마지막에 금요일 저녁까지 마감기한을 늘리고 구현이 안 된 리뷰 영구 삭제 프론트를 한솔 님과 내가 함께 작성하기로 하였다. 

한솔 님께서 정말 함께 좋은 마음으로 협업해 주셨고 진행이 잘 되어서 너무 기뻤다. 

함께 완성한 기능을 테스트 해 보는데 삭제가 잘 되는 것이 신기했는지 삭제 버튼을 너무 많이 누르셔서 그만하라고 할 정도였다. 

너무 즐거웠다. 진작 이렇게 같이 해 볼걸 그랬다는 생각도 들었다. 

예의 있게 말하는 것이 협업에 도움이 되었다. 앞으로 조금 더 상대방을 배려하고 온기 있는 말투와 어조로 건네야겠다. 

 

12. 조호영 튜터 님 프로젝트 피드백

ERD 필요한 것만 외래키 연결

response class를 전역으로 사용

.env 한 번에 사용할 수 있는 방법

13.  나에 대한 피드백

 

성원 : 다영님이 많이 캐리하셨다. 원래 잘하시는 것은 알았지만 전체적인 에러나 흐름을 다영 님이 관리하셨다. 

다급해보일 때가 있는 데 조금 더 여유를 가지면 좋을 것 같다.

 

한솔 : 계획이 처음에는 틀에 잡힌 방식이라고 생각했지만 과정과 결과를 보고 나니 좋았다.

 

민준 : 주도적으로 끌어나가고 다른 팀원들하고 정보교류 것들이 좋았다. 너무 앞서가는 부분을 줄이면 좋다. 

 

14. 조호영 튜터 님의 프로젝트 피드백

  1. ERD가 너무 복잡합니다. 외래키가 많을 수록 데이터가 꼬이게 되고 그로인해 데이터관리가 힘들어집니다.
  2. return시 class를 사용하였는데 전역으로 처리하여 전체 코드의 양을 줄이도록 합시다.
  3. 환경변수를 사용해서 보안에도 신경을 쓴 모습이 보입니다. 하지만 이곳저곳에 나뉘어서 사용중이라 유지보수, 관리가 힘들어질 가능성이 있습니다. 좀 더 효과적으로 관리하는 방법이 있을 것 같은데 방법을 모색해봅시다.
  4. ORM보다는 raw query를 많이 사용하셨습니다. 잘하셨다고 생각은 하지만 ORM의 활용도 중요하니 적절히 사용해주세요.
  5. 의외의 실력입니다. 솔직히 발표할 때 깜짝놀랐습니다. 생각보다 너무 잘하셨고 개발 속도도 가장 빨랐습니다. 가장 실력이 빨리 늘어가는 조라고 생각합니다.

[ 해결방법 ]

  • ENV
    process.env 자체를 환경 변수에 넣기
    파일 자체를 import 해서 사용하기
  • limit 1
    limit 1을 사용하면 쿼리가 돌아가다가 원하는 데이터를 만나면 멈추기 때문에 시간을 단축할 수 있다.
  • return class
    파일 하나를 만들어 전역 클래스로 선언하고 import해서 쓰기

'내일 배움 캠프 > sansamPet' 카테고리의 다른 글

sansamPet 프로젝트 4일차  (0) 2023.07.20
sansamPet 프로젝트 3일차  (0) 2023.07.19
sansamPet 프로젝트 2일차  (0) 2023.07.18
sansamPet 프로젝트 1일차  (0) 2023.07.18