/HanZipSa

도움이 필요한 어르신이 계신 곳에 믿을 수 있는 이웃을 소개하는 서비스

Primary LanguageJava

🤵 한집사

동네 근처 람 만나기

우리 동네 어르신을 위한 동네 친구 만들기

✔️ 2024년 기준 우리나라의 중위연령은 46세이고 2040년이 되면 54.6세에 이를 것으로 예상됩니다. 전체 노인 인구 중 혼자서 생활하는 독거노인의 비율은 이미 2021년도에 약 20%를 달성했으며 1인 가구의 증가, 핵가족화로 인해 지속적으로 증가할 것으로 보입니다.
✔️ 더 오랜 시간을 더 외롭게 보내야 하는 어르신들을 위해, 돌봄의 책임을 개인이나 가정에 지우는 것이 아니라 사회가 함께 책임지는 지역사회통합돌봄 은 많은 선진국에서 이미 성공적으로 정착을 마쳤습니다. 그렇다면 우리 사회는 얼마나 준비되어 있을까요?
✔️ 저희는 도움이 필요한 어르신이 계신 곳에 믿을 수 있는 이웃을 소개하는 서비스를 만들고자 합니다.

🔍 Stacks

Backend

Java Spring Boot Hibernate JWT Querydsl MariaDB Redis nurigo

Frontend

HTML5 CSS3 JavaScript React React Dom zustand React Query React Router Dom axios Styled Components NodeJS

Infra

EC2 S3 Nginx Docker Ubuntu

IDE

Visual Studio Code IntelliJ IDEA

Management Tool

Jira Mattermost Discord Notion GitLab Figma

서비스 화면

회원가입

회원가입_1 회원가입_2
  • 이름, 성별, 생년월일, 거주지, 이메일, 비밀번호를 설정하여 서비스에 이용합니다.
  • 특히, 거주지를 입력받아 지도 매칭 서비스에서 내 위치 기반으로 주변 집사 정보를 검색할 수 있습니다.

홈페이지

홈페이지

저희 서비스는 세 가지 성격의 사용자가 존재합니다.

  1. 집사 등록 이전 상태의 사용자
    • 회원가입만 한 상태의 사용자입니다.
  2. 집사 등록 완료 상태의 사용자
    • 서비스를 받을 수 있고, 또한 제공할 수 있는 사용자입니다.
    • 서비스를 제공하지 않는 오프라인 상태입니다.
  3. 집사 활동 상태의 사용자
    • 서비스를 제공할 수 있는 온라인 상태입니다.

서비스 가입자는 누구나 사용자 혹은 집사가 될 수 있고, 동네 기반 커뮤니티에 참여할 수 있습니다.


  • 저희 서비스는 집사와 세 가지 방법을 통해 매칭이 가능합니다.
    • 실시간 매칭이 가능한 지도 기반 매칭
    • 원하는 세부 조건 설정을 통한 필터링 매칭
    • 원하는 구체적 서비스를 명시하는 공개방 생성을 통한 매칭
  • 매칭 서비스는 useFunnel(사용자 정의 훅) 기반으로 구현되었습니다.
    • funnel : 일반적으로 웹 어플리케이션에서 회원가입과 같이 복잡한 절차를 거칠 때 한 페이지 안에서 form을 모두 작성하고 한 번 submit하지만 이는 사용자에게 매우 큰 부담입니다. 이 부담을 덜기 위해 여러 페이지에서 절차를 진행하고 데이터를 효율적으로 관리할 수 있습니다.

지도 기반 매칭

지도_1 지도_2 지도_3
  • 회원가입 시 입력한 주소 기반으로 2km 반경의 활동상태의 집사를 보여줍니다.
  • 클러스터링 된 원을 지도에서 누르게 되면 해당 범위의 집사 목록을 볼 수 있고, 해당 집사 정보를 확인하여 매칭을 신청할 수 있습니다.

필터링 기반 매칭

필터링_1 필터링_2 필터링_3
  • 내가 받고자 하는 서비스를 대분류, 소분류 태그를 선택하여 설정하고, 집사 세부 조건을 필터링하여 해당 조건에 맞는 집사를 보여줍니다.
  • 조건에 맞는 집사 목록 중 자신이 원하는 집사를 선택하여 서비스를 신청할 수 있습니다.
  • 연동 계정이 등록됐을 경우, 해당 연동 계정에 등록된 사용자 중 서비스 이용자를 선택해서 필터링 매칭을 진행할 수 있습니다.

공개 방 매칭

공개방_1 공개방_2
  • 지도 기반 매칭, 필터링 기반 매칭으로도 원하는 집사를 찾을 수 없을 경우, 자신이 원하는 서비스를 공개방에 등록하여 집사의 요청을 받을 수 있습니다.

게시판 조회

게시판조회_1 게시판조회_2
  • 태그를 선택하여 게시물 목록의 검색 조건을 설정할 수 있습니다.
  • 태그의 구성은 맛집 추천, 동네 소식, 집사 후기, 동네 모임, 생활 꿀팁, 일상 공유로 구성이 되어있습니다.

게시물 댓글 조회, 작성, 삭제

게시판댓글_1
  • 게시물에 댓글을 작성하여 사용자들과 소통할 수 있습니다.

게시물 작성

게시물작성
  • 태그를 선택하여 게시물을 등록할 수 있습니다.

게시물 수정

게시물수정
  • 게시물 수정이 가능합니다.

게시물 삭제

게시물삭제
  • 게시물 삭제가 가능합니다.

마이 페이지 사용 내역, 게시글, 결제 수단

내역_게시글_결제수단
  • 집사에게 의뢰했던 내용들을 목록으로 볼 수 있습니다. 주요 내용으로는 의뢰를 수행한 집사의 이름, 업무를 수행한 날짜, 맡긴 일, 지불한 금액 이 있습니다.
  • 사용자가 작성한 게시물을 한 눈에 볼 수 있도록 목록으로 보여줍니다.
  • 해당 목록의 내용을 클릭 하면 게시물의 상세한 내용 조회하는 페이지로 이동을 합니다.
  • 현재 등록된 간편 결제 수단을 보여줍니다.

마이 페이지 연동 계정 참가

연동계정참가
  • 연동 계정을 생성 하거나 구성원으로 참여할 수 있도록 버튼을 보여줍니다.
  • 연동 계정 참가 코드를 입력할 수 있는 페이지를 보여주고 알맞은 참가 코드를 입력시 연동 계정 정보가 추가됩니다.

마이 페이지 연동 계정 생성

연동계정대표
  • 연동 계정을 생성 하거나 구성원으로 참여할 수 있도록 버튼을 보여줍니다.
  • 대표로 등록을 하기 위해 약관에 동의를 받은 후 가입하기 버튼이 활성화 됩니다.
  • 이미 연동 계정에 등록이 된 사용자인 경우에 연동 계정에 포함된 사용자의 목록을 보여줍니다.
  • 그리고 현재 사용자가 해당 연동 계정의 대표인 경우 멤버 추가하기 버튼이 있습니다.
  • 연동 계정 참가 코드를 생성한 후 사용자에게 보여줍니다.
  • 이미 참가 코드가 발급이 되었고 유효 기간이 지나지 않은 경우에 새로 생성하지 않고 기존에 발급한 코드를 보여줍니다.

집사 신청

집사신청_1 집사신청_2
  • 집사 되기를 클릭 시 집사의 이득과 지원 절차를 보여줍니다.
  • 집사 활동에 필요한 집사의 정보를 입력 받습니다.
  • 집사가 하고 싶은 일의 분류를 최대 5개 까지 선택이 가능합니다.
  • 이런 일을 잘해요는 사용자가 집사를 봤을 때 한 눈에 볼 수 있는 간단한 정보를 입력 할 수 있습니다.

집사 마이페이지

집사마이페이지
  • 집사인 상태로 마이 페이지를 클릭 하는 경우 현재 집사의 이름과 프로필 이미지, 등급 정보, 다이아 점수, 활동 내역 보기를 제공합니다.
  • 집사로 활동한 내역들의 목록을 볼 수 있습니다.
  • 주요 정보로는 의뢰를 맡긴 사용자의 이름, 맡은 일, 업무 시작 시간, 업무 종료 시간, 받은 금액입니다.

비밀번호 수정

비밀번호수정
  • 사용자의 비밀번호를 변경하는 페이지로 비밀번호를 변경할 때 확인 작업도 같이 합니다.

사용자 예약 내역

사용자예약내역_1
  • 사용자가 예약한 업무의 목록을 나타냅니다.
  • 예정된 업무의 간단한 정보를 보여주고 우측에 있는 화살표 버튼을 클릭 시 해당 업무의 상세 정보를 조회 할 수 있습니다.

집사 예약 내역

집사예약내역_1
  • 집사가 예약한 업무의 목록을 나타냅니다.
  • 예정된 업무의 간단한 정보를 보여주고 우측에 있는 화살표 버튼을 클릭 시 해당 업무의 상세 정보를 조회 할 수 있습니다.
  • 예상 시작 시간, 종료 시간이 1시간 내로 된다면 업무 시작, 종료 버튼이 활성화됩니다.
  • 시작, 종료 버튼을 누르게 되면 정기 보고서 작성 페이지로 이동합니다.

집사 정기 보고서 작성

정기보고_1
  • 활동 사진과 해당 서비스 진행상황을 보고합니다.
  • 보고서 작성을 완료하면 완료 페이지로 이동합니다.

사용자 알림

사용자_1
  • 집사가 정기 보고서를 작성하면 사용자에게 알림이 발송됩니다.
  • 우측에 있는 화살표를 클릭하면 작성된 정기 보고서를 확인할 수 있습니다.

집사 알림

집사_1
  • 사용자가 집사에게 제안을 보내면 알림이 발송됩니다.
  • 우측에 있는 화살표를 클릭하면 제안의 상세 정보를 조회와 동시에 수락, 거절 버튼이 나타납니다.
  • 수락 클릭 시 해당 사용자와 매칭이 되어 예약 내역으로 이동합니다.
  • 거절 클릭 시 해당 제안은 거절됩니다.

주요 기능

기능 설명
필터링 매칭 성별, 나이, 집사 등급, 평균 점수 등 다양한 조건을 설정한 후 조건에 부합하는 집사들의 목록중 원하는 집사에게 업무 제안하여 사용자가 원하는 집사를 선택 하여 업무를 제안 합니다.
지도 기반 매칭 현재 사용자 근처에서 활동중인 집사들을 찾아서 빠르게 집사에게 업무를 제안을 합니다.
공개 방 생성 필터링 매칭과 지도 기반 매칭에서 원하는 업무를 하는 집사가 없는 경우 사용자가 공개 방을 생성한 후 조건들을 설정하고 사용자의 조건들을 집사가 확인 후 신청을 하면 업무가 이루어 질 수 있습니다.

기술 소개

프론트

기술명 기술내용
공통 컴포넌트 모바일에서 사용되는 유사한 UI 요소를 공통 컴포넌트로 추출하고, 합성을 통해 페이지를 구축 하여 적절한 확장성을 고려하는데 어려움이 있었지만 동일한 코드가 반복적으로 작성되는 것을 방지 하였습니다.
useFunnel 일반적으로 웹 어플리케이션에서 회원가입과 같이 복잡한 절차를 거칠 때 한 페이지 안에서 form을 모두 작성하고 한 번 submit하지만 이는 사용자에게 매우 큰 부담으로 이를 개선하기 위햇 여러 페이지에서 절차를 진행하고 데이터를 효율적으로 관리할 수 있습니다.

백엔드

기술명 기술내용
SSE 현재 접속한 사용자들에게 실시간으로 알림을 전송하여 사용자의 편의성을 개선하였습니다.
AWS Lambda 이미지 리사이징 처리를 백엔드에서 진행을 하였을 때 사용자가 이미지를 업로드 한 이후로 대기를 해야 했지만 AWS Lambda를 이용해 사용자의 대기 시간을 줄여 편의성을 개선하였습니다.

설계 문서

ERD

ERD

아키텍처 설계

Architecture

Figma

ERD

팀원 소개

이름 역할
곽희웅(팀장) 인프라, 백엔드 리더
김세리 인프라, 백엔드
강태연 백엔드
장수민 프론트 리더
이수민 프론트
황준식 프론트