[ Project ] "되어봐요 숲잘알! 프로젝트 정리

Shin·2022년 5월 25일
1

Project

목록 보기
1/1

👨‍🎓 프로젝트 진행 과정

프로젝트는 시리즈에 정리한 것 처럼 매일 아침 스크럼을 통해 개발 일정을 조율해가고, 추가할 기능에 대해 토론을 하며 진행했다.
나는 Express와 MongoDB를 활용하여 백엔드 파트를 맡았다.
Gitlab을 통해 협업을 진행하였고, 자신의 개발 정도와 목표 등에 대해 이슈와 마일스톤으로 관리를 했었다.
또한 매주 현직자 분에게 코드리뷰를 신청하여 코드 상태와 사용한 라이브러리들을 확인한 후 리팩토링하였다.


✨ 구현 기능

🎉 오늘의 주인공 기능


Front에서 오늘 생일자에 대한 Get 요청이 오면 오늘 날짜에 생일인 주민을 반환해줍니다.
이때 생일인 주민을 개별적으로 클릭하여 한명 한명에게 생일 축하 메세지를 남길 수 있도록 했습니다.

생일 축하 메세지는 Commnet DB에 주민 이름과 location을 입력받아 생일인 곳이면 Birthday 라는 location 값과 주민 이름을 포함하여 Front에서 Post 요청을 보내주면 MongoDB에 보관해두었다가 Query를 통해 주민의 이름과 location 값을 보내주면 해당하는 주민의 댓글 위치에 해당하는 댓글을 반환해주게 하여 구현하였습니다.

📙 주민 도감 기능


주민 도감 기능은 처음 들어왔을 땐 현재 존재하는 모든 주민을 보여주고, 여러 검색조건에 따라 필터링이 가능하게 만들었습니다.

각 조건을 누르고 검색을 하게 되면 Query를 통해 Front에서 반환받고 싶은 Field 값, 필터링 조건, 검색한 값을 넣어서 보내주게 되고, Back에서 위의 필터링을 처리하여 값을 반환해줍니다.

📱 주민 통계 기능


각 주민의 데이터를 Pandas를 통해 데이터를 분석하여 통계를 낸 후, 그 데이터를 사용하여 Front에서 recharts 라이브러리를 통해 시각화를 해주었습니다.

🏹 주민 매칭 기능


주민 매칭 기능은 위 같은 질문을 5개를 만들어두어, 각 질문에 대한 대답을 유저가 선택하면 데이터분석을 통해 주민들과의 연관성을 비교하여 가장 비슷한 값을 가진 주민과 가장 비슷하지 않은 주민을 반환해주어 나와 잘 맞는 주민, 잘 맞지 않는 주민에 대해 값을 반환하도록 만들었다.



이때 가장 많은 유형은 주민 매칭에 참여해주신 유저분들의 총 수와 선택받은 주민들의 수를 가지고 MongoDB Aggregation을 통해 [여러 document들을 grouping하여 연산을 수행한 후 하나의 result를 반환하는 연산] 구현하였습니다.

또한 매칭된 각 주민에 대해서도 메세지를 남길 수 있도록 만들었습니다.
Comment부분은 위에 생일 주민 댓글 부분과 동일하게 작동합니다.

또한 공유하기 기능을 통해 링크를 복사할 수 있고, 복사한 링크로 들어가게 되면 해당하는 유저가 나온 주민, 그 주민과 잘 어울리는 주민에 대한 정보를 알려주게 됩니다.

🎮 미니게임 기능


미니 게임 같은 경우엔 카드 뒤집기 게임을 구현하였습니다.
주민의 이름과 사진이 랜덤으로 뒤집혀 있으며, 주민의 이미지와 맞는 이름을 선택하면 뒤집히는 게임입니다.
총 5개의 라운드로 구성되어 있으며 한 라운드당 1분의 제한시간을 두었습니다.
이때 라운드를 클리어한 시간과 클리어한 라운드 수를 통해 점수를 계산하게 됩니다.
라운드가 높아질수록 동물의 숲 마을 주민 랭킹이 낮은 [ 유명하지 않은 ] 주민이 나오도록 셋팅을 해두었습니다.


📑방명록과 게시판!



방명록은 위 처럼 닉네임을 입력받지 않고 익명으로 글을 남길 수 있는 기능으로, 글을 남기면 동물의 숲 아이콘으로 보이도록 구현하였습니다.

게시판 기능은 위 처럼 제목, 닉네임, 글을 작성하고 아래 업로드 버튼을 통해 사진을 업로드 할 수 있도록 만들었습니다.
사진은 Multer 라이브러리를 통해 미들웨어로 구현하였으며 limits를 통해 파일사이즈를 10mb로 제한을 두었습니다.


코드 확인하러 가기!

Github 링크

profile
누군가의 선택지가 될 수 있는 사람이 되자

0개의 댓글