커리큘럼
home
React
home

[무인냥품] 우리 동네 위치 기반, 고양이 돌봄 품앗이 서비스

Specialty
Node.js
FE Github
Specialty
날짜

무인냥품

우리 동네 위치 기반, 고양이 돌봄 품앗이 서비스

무인냥품은 반려인이 긴 시간 외출을 할 때
집에 혼자 있을 우리 고양이를 위한 플랫폼입니다.
동네 위치를 기반으로 동네 집사들끼리 돌봄 품앗이를 할 수 있는 서비스를 비롯해,
무료 나눔과 반려묘 정보들을 나눌 수 있는 고양이 집사들을 위한 커뮤니티 서비스입니다
서비스 둘러보기: 무인냥품 홈페이지
Github Repository: 무인냥품 팀 깃허브

서비스 아키텍처

인포메이션 아키텍처

기술적 의사결정

사용 기술
도입 이유
Nest.JS
TypeScript 기반의 웹 프레임 워크로, JavaScript보다 엄격한 타입 체크를 하여 예외 상황을 사전에 방지
TypeORM
기본적인 ORM으로서의 역할에 충실 TypeScript를 지원하고 Nest.JS와 연계가 좋음 더 직관적이고 유연한 query builder 사용 가능 공식 문서 정리가 잘 되어 있어 선택
JWT
로그인 유저를 인가함에 있어 쿠키 사용으로 얻는 보안 취약점을 Access와 Refresh token 개념을 도입해 보완
Bcrypt 및 Salt
Bcrypt로 비밀번호 hash 처리 후 레인보우 테이블 해킹을 막기 위해 salt로 추가 암호화하여 DB에 저장
HTTPS 프로토콜
사용자의 위치 정보를 받는 Geolocation Web API 사용을 위해 HTTPS 프로토콜로 배포를 선택 이를 통해 사용자의 위치 인증 유무에 따라 다른 접근 권한을 가지게 함.
Redis
페이지 로드 속도 향상을 위해 품앗이 모집글과 나눔글을 캐싱 처리
Node Mailer
회원가입시 이메일 인증을 위해 도입
AWS S3
편리하고 저렴하게(무료로) 이용이 가능하며 저장 공간이 무제한인 서비스를 이용하여 이미지 업로드 처리

UT (유저 테스트) 결과

‘무엇이 불편하였나요’ 항목에 위치 인증을 진행하였으나 진행되지 않아 이상하였다 항목이 전체 (26개) 응답 중 38.1%로 비교적 높았다. 그래서 트러블 슈팅 진행
‘무엇이 불편하였나요’ 항목에 사이트 로딩이 느리다고 응답한 비율이 전체 (26개) 응답 중 11.9%로 두 번째로 높았다. 그래서 트러블 슈팅 진행함.

트러블슈팅

페이지 로딩 시 렌더링이 세 번씩 되는 현상
메인 페이지 로딩 속도 개선
Redis - 오래된 캐시 히트 문제 개선
로컬 환경과 배포 환경에서 나타나는 Date 타입의 시간 차
웹으로 사용자 위치 인증 시 실제 위치와 다른 IP로 떠 불가한 경우
페이지네이션

주요 기능

위치 기반 고양이 돌봄 품앗이
가입시 작성한 주소와 접속 위치를 기반으로 한 동네 인증
동네 인증한 사용자는 품앗이 신청이 가능 (신뢰할 수 있는 ‘우리 동네’ 집사님들)
자신의 동네에 등록된 품앗이 신청 목록 열람 가능
동네 미인증 시
동네 인증 시
쪽지로 유저 간 대화
쪽지의 상태 별로 확인할 수 있습니다.
위치 기반 나눔 게시판
나눔을 원하는 장소(동네) 등록
내 위치 기반으로 나눔 게시 목록 조회
자유 게시판
냥집사들을 위한 정보 공유 커뮤니티로써의 역할
예) 잘하는 병원 및 투명한 영수증 공개 공유
첫 화면 : 7개의 게시글만 불러오기
더보기 클릭 : 마지막 글을 기준으로 이후 7개씩 추가로 불러오기