스프링 기반 반려견 돌봄 서비스 프로젝트 소개 🐾
1. 프로젝트 개요
실제로 집에서 현재 반려견을 키우고 있기도 하고, 프로젝트 주제를 선정을 하는 과정에서 나의 실제 일상생활 상황에 대입해서 개발을 하면 재미와 흥미를 갖고 할 수 있을 것 같아 반려견 돌봄 서비스로 주제를 선정하게 되었다.
반려견 인구 1,500만 시대에 접어들며, 반려견 돌봄 서비스에 대한 수요가 증가하고 있다.
이러한 니즈를 충족시키기 위해 **스프링(Spring)**과 **자바(Java)**를 활용하여 사용자 친화적인 반려견 돌봄 서비스를 개발하기로 했다.
이 서비스는 반려견의 케어 기록 관리, 돌봄 일정 예약 등의 기능을 제공하여 사용자와 돌봄사와 상호작용할 수 있는 플랫폼을 목표로 하고 있다.
2. 주요 기능
이 서비스는 아래와 같은 주요 기능을 포함한다.
- 반려견 프로필 관리: 반려견의 이름, 나이, 품종, 건강 상태 등을 저장 및 조회 가능
- 사용자 프로필 관리: 사용자의 이름, 나이, 역할(고객, 돌봄사), 소개, 돌봄사의 평점(돌봄사인 경우), 자체 로그인 & 소셜 로그인
- 돌봄 가능한 날짜: 돌봄사가 돌봄 가능한 날짜를 직접 관리
- 돌봄 일정 예약: 사용자가 원하는 날짜와 시간에 반려견 돌봄 예약
- 케어 로그 관리: 반려견의 산책, 식사, 운동 등의 기록 관리
- 리뷰 및 평점: 돌봄사에 대한 리뷰 작성 및 별점 평가
- 관리자 페이지(회원 관리, 예약 관리, 돌봄 케어 로그 관리, 돌봄 리뷰 관리 회원 포인트 내역 관리): 부적절한 회원, 예약, 돌봄 케어 로그, 돌봄 리뷰를 삭제할 수 있으며 모든 회원의 포인트 적립/사용 내역을 관리
3. 시스템 설계
ERD(Entity Relationship Diagram) 소개
해당 프로젝트의 데이터베이스는 반려견 정보, 사용자 정보, 예약 정보, 커뮤니티 게시판 등의 테이블로 구성된다. 아래는 ERD 설계의 주요 구조 설명이다.
주요 테이블 구성
- Member: 사용자 계정 정보
- Pet: 반려견의 프로필 정보
- Certification: 돌봄사의 자격증
- Care_Available_Date: 예약 가능 날짜(돌봄사)
- Customer_Reservation: 돌봄 예약 정보(고객)
- Sitter_Schedule: 돌봄 예약 정보(돌봄사)
- CarLog: 반려견의 돌봄 기록
- Article & Comment & Recommend: 커뮤니티 게시판과 댓글 시스템 + 추천
- Review: 돌봄 제공자에 대한 리뷰와 평점
- Points_History: 회원의 포인트 적립/사용 내역 히스토리
- Chat_Room: 채팅방
- Chat_Message: 채팅방 메시지
- Pet_Hospital: 동물 병원
ERD 상세 설명
반려견 돌봄 예약 시스템의 엔티티 관계
1. Member (회원)
- Member 테이블은 사용자의 정보를 관리
- 다른 테이블과의 관계:
- Pet(반려견) 테이블과 1:N 관계: 한 사용자는 여러 반려견을 등록 가능
- Customer_Reservation(돌봄 예약, 고객) 테이블과 1:N 관계: 한 사용자는 여러 예약을 가능
- Care_Available_Date(예약 가능 날짜) 테이블과 1:N 관계: 한 돌봄사는 여러 시간대를 제공
- 다른 테이블과의 관계:
2. Certification (돌봄사 자격증)
- 돌봄사의 자격증을 관리
- Member와 N:1 관계: 회원(Member)은 여러 개의 자격증(Certification)을 가질 수 있다
3. Pet (반려견)
- 반려견의 정보를 관리
- Member와 N:1 관계: 반려견 소유자(고객)와 연결 (한 회원은 여러 반려견 등록 가능)
- Customer_Reservation(돌봄 예약, 고객)과 1:N 관계: 한 반려견은 여러 예약을 가능
4. Customer_Reservation (돌봄 예약, 고객 시점)
- 반려견 예약 정보를 관리
- Pet(반려견)과 N:M 관계: 예약은 특정 반려견과 회원을 기준으로 이루어짐 (한 예약은 한 명의 고객의 여러 마리 반려견 돌봄 예약 가능, 반려견 입장에서는 한 마리의 반려견이 여러 예약에 등록 가능), Pet(반려견)과 중간 매핑 테이블이 필요. (예: 고객 A가 반려견 2마리(P1, P2)를 가지고 있을 때, P1만 예약에 포함하거나, P1과 P2 둘 다 포함할 수 있음)
- Member와 N:1 관계 : 한 명의 회원은 여러 예약이 가능하지만, 예약 입장에서는 하나의 예약에는 한 명의 회원만 존재 가능
- Sitter_Schedule(돌봄 배정, 돌봄사 시점)과 1:1 관계: 예약은 돌봄 배정 테이블과 연결됨 (식별 관계, 한 예약은 하나의 돌봄 배정과 연결됨)
- Review(돌봄 리뷰)와 1:1 관계: 예약에 대한 리뷰 작성이 가능
- Points_History(적립금 히스토리)와 1:N 관계: 예약이 발생하면서 예약금이 적립이 되고, 사용한 경우 적립 + 사용까지 가능
5. Sitter_Schedule (돌봄 배정, 돌봄사 시점)
- 돌봄 예약에 따라 배정된 내용을 관리
- Customer_Reservation(돌봄 예약, 고객 시점)과 1:1 관계: 특정 예약 건에 대해 배정이 이루어짐 (한 배정은 하나의 예약과 연결됨)
- CareLog(케어 로그)와 1:N 관계: 배정된 활동에 대한 기록을 관리 (한 배정은 여러 케어 로그를 가질 수 있음)
6. CareLog (케어 로그)
- 돌봄 활동 로그를 기록.
- Sitter_Schedule(돌봄 배정, 돌봄사 시점)와 N:1 관계: 돌봄 배정에 따라 발생한 활동을 기록, 추적 (하나의 돌봄 배정에 여러 케어 로그가 있을 수 있음)
7. Review (리뷰)
- 돌봄 예약에 대한 리뷰를 관리
- Member(사용자)와 N:1 관계: 하나의 사용자가 여러 리뷰를 작성할 수 있음
- Customer_Reservation(돌봄 예약, 고객 시점)과 1:1 관계: 해당 예약 건에 대해 작성된 리뷰 (하나의 예약에 대해 하나의 리뷰만 작성 가능)
8. Care_Available_Date (예약 가능 날짜, 돌봄사)
- 돌봄사의 예약 가능 시간을 관리
- Member(돌봄사)와 N:1 관계: 특정 돌봄사의 돌봄이 가능한 시간대를 관리 (하나의 돌봄사는 여러 예약 가능 시간을 가질 수 있음)
9. Points_History (회원 포인트 적립/사용 히스토리)
- 회원의 포인트 적립/사용 내역을 모두 저장
- Customer_Reservation(돌봄 예약, 고객 시점)와 N:1 관계: 특정 예약이 발생하면 적립이 무조건 되고, 만약 해당 예약 건에 적립금 사용 여부에 따라 추가 저장(사용 내역) 가능
10. Chat_Room(채팅방)
- 회원들의 채팅방을 관리
- Sender(발신자, member)와 1:N 관계: 회원은 여러 채팅방에 참여할 수 있음.
- Receiver(수신자, member)와 1:N 관계: 회원은 여러 채팅방을 구독할 수 있음.
11. Chat_Message (채팅 메시지)
- 회원들이 채팅방에 전송하는 메시지 내역을 모두 저장 및 관리
- Chat_Room(채팅방)와 1:N 관계: 하나의 채팅방에 여러 개의 메시지가 생성되어 저장될 수 있음.
- Sender(발신자, member)와 1:N 관계: 회원은 채팅방에서 여러 메시지를 전송할 수 있음.
- Receiver(수신자, member)와 1:N 관계: 회원은 채팅방을 구독하여 여러 메시지를 수신할 수 있음.
4. 기술 스택
Backend
- Framework: Spring Boot 3.3.4
- Language: Java 17
- Database: H2 database, Mysql
- ORM: JPA, QueryDSL, JPQL
- Build Tool: Gradle JVM 17
Frontend
- Template Engine: Thymeleaf
- CSS Framework: Bootstrap
5. 프로젝트 기대 효과
- 사용자와 돌봄사 간의 신뢰 기반 서비스 구축
- 반려견 돌봄 기록의 디지털화로 관리 효율성 증대
- 반려견 관련 커뮤니티 활성화
앞으로 추가해보고 싶은 기능
- 실시간 채팅 기능(고객과 돌봄 배정된 돌봄사 간, + 개발 완료)
- 알림 서비스
이 프로젝트는 반려견을 키우는 사용자와 돌봄사 모두에게 만족을 줄 수 있는 서비스로 발전시키는 것이 목표입니다.
모두 다 가능하게 될지는 장담 못하겠지만 되는 곳까지 최선을 다해보도록 하겠습니다!!
'Spring' 카테고리의 다른 글
반려견 돌봄 서비스 (3) - DTO 조회 시 쿼리 최적화 (0) | 2025.02.09 |
---|---|
반려견 돌봄 서비스 (2) - DDD(도메인 주도 개발) (1) | 2024.12.07 |
Spring Boot 기존 프로젝트 import시 Lombok 버전 오류 해결 (0) | 2024.05.20 |
웹 스코프와 HTTP 요청에 따른 로그 남기기 (1) | 2024.05.07 |
빈 생명주기 콜백 방법 (0) | 2024.04.19 |