무인냥품
우리 동네 위치 기반, 고양이 돌봄 품앗이 서비스
무인냥품은 반려인이 긴 시간 외출을 할 때
집에 혼자 있을 우리 고양이를 위한 플랫폼입니다.
동네 위치를 기반으로 동네 집사들끼리 돌봄 품앗이를 할 수 있는 서비스를 비롯해,
무료 나눔과 반려묘 정보들을 나눌 수 있는 고양이 집사들을 위한 커뮤니티 서비스입니다
•
서비스 둘러보기: 무인냥품 홈페이지
•
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개씩 추가로 불러오기