Skip to content

🐶😺 유기동물 입양 활성화를 위한 정보 통합·매칭 플랫폼, '함께하개냥'

Notifications You must be signed in to change notification settings

2getNyang/server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

373 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image

0. Getting Started (시작하기)

$ build.clean
$ build bootjar
$ docker compose -f docker-compose.monitoring.yaml up -d
$ docker compose -f docker-compose.data.yaml up -d

함께하개냥


1. Project Overview (프로젝트 개요)

  • 프로젝트 이름: 함께하개냥
  • 프로젝트 설명: 유기동물 입양 및 홍보 커뮤니티
    • 멋쟁이사자처럼 백엔드스쿨 플러스 Elasticsearch 기반의 고성능 검색 엔진을 설계 최우수상

2. Team Members (팀원 및 팀 소개)

선순주 박세정 엄아영 이지은 오승훈 이은서
BE BE BE BE BE BE
Image Image Image Image Image Image
GitHub GitHub GitHub GitHub GitHub GitHub


3. Key Features (주요 기능)

  • 로그인:

    • 소셜에서 제공하는 인증 정보를 통해 로그인합니다.
    • 회원가입 또한 최초로그인시 회원가입과 동시에 로그인이 진행됩니다.
  • 유기동물전체보기:

    • 공공기관 유기동물 API에서 공고시작일 기준 최근16일 보여줍니다.
    • 발견일을 기준으로 정렬합니다.
  • 게시판:

    • 입양후기게시판 : 우리 사이트를 통해서 가족이된 반려동물들을 소개하는 게시판
    • SNS 게시판: 귀여운 반려동물들을 홍보하는 게시판
    • 실종/목격 게시판: 반려동물 잃어버리거나 잃어버린 반려동물들을 봤을때 작성하는게시판
  • 보호소찾기:

    • 국가동물보호정보시스템 에 등록된 보호소를 조회할수있습니다.
    • 주소, 전화번호, 위치를 표시해 접근성을 높혔습니다.
  • 입양신청서작성:

    • 기본정보, 휴대폰, 거주지, 기본설문 및 입양사유를 적고 입양계약서를 작성해 보호소 이메일로 제출합니다.
  • 마이페이지:

    • 내정보수정 (닉네임, 이메일수정)
    • 입양신청 내역 조회
    • 찜 공고 확인
    • 내가 작성한 커뮤니티 게시글 확인
    • 좋아요한 게시글 확인
  • 1:1채팅:

    • 실종/목격 게시판에서 게시글 작성자와 1:1채팅 가능

3.1 차별점

구분 함께하개냥 기존 서비스
실시간유기동물정보갱신 매일 2회 자동수집 및 반영 수동 또는 낮은빈도
소셜로그인 카카오, 네이버, 구글 통합지원 카카오지원
입양신청 자동화 신청서 작성완료와 동시에 PDF변환+메일발송 수동
1:1 실시간채팅 유저간 1:1 채팅기능 없음


4. Tasks & Responsibilities (작업 및 역할 분담)

선순주 Image
  • 공통응답 API 구조설계 및 구현
  • 실종/목격 제보게시판
  • S3, RDS 초기환경 설정
  • S3 이미지 관련 로직구현
  • WebSocket + STOMP + REDIS를 활용한 사용자간 1:1채팅기능
  • REDIS를 활용한 채팅 읽음 처리 기능
  • 전체적인 프론트엔드 연동
  • API 구조 및 DTO 전반수정
박세정 Image
  • 마이페이지
  • 입양후기게시판
  • 좋아요,댓글
  • 깃액션 연동
  • 게시판 엘라스틱 서치 연동
  • docker compose file 작성
엄아영 Image
  • 사용자정보수정
  • 유기동물전체보기페이지
  • 유기동물API연동
  • 이달의 추천동물 통합검색
  • 유기동물 통합검색
  • 탄력적IP 설정
이지은 Image
  • 소셜로그인(구글) 연동
  • 유기동물 상세보기페이지 작성
  • 입양신청
  • HTML 템플릿 기반 입양신청서 PDF 변환 및 메일 전송
  • WebSocket 활용한 입양신청 완료 실시간 알림기능
  • 읽지 않은 채팅에 대한 실시간 알림 기능
오승훈 Image
  • JWT/SpringSecurity 초기설정
  • 로그인/회원가입 공통로직 구현
  • 소셜로그인 연동(카카오)
  • 보호소 조회페이지 작성
  • 보호소 상세조회 페이지 작성
  • 카카오 지도 불러오기
  • 깃액션 연동
이은서 Image
  • AWS 초기설정
  • SNS홍보게시판 작성
  • 로그아웃 공통로직 구현, 회원탈퇴 구현
  • 소셜로그인 연동 (네이버)
  • 게시판 엘라스틱서치 연동
  • docker-compose file 작성
  • 회원탈퇴 페이지 연동
  • 깃허브 관리 (이슈템플릿작성 및 이슈관리, 리드미 작성)

5. Technology Stack (기술 스택)

5.1 Language

Java Gradle 17

5.2 Frotend

React React
TypeScript TypeScript

5.3 Backend

SpringBoot
Mysql(8.0)
- local test

5.4 Cooperation

Github Github
Discord Discord
Notion

5.5 API Test

Swagger
Postman

5.5 deployment

EC2
AmazonS3
GitAction
docker

5.6 infrastructure

Kafka
Apache Zookeeper
Redis
Websocket
Elasticsearch
Nginx
Stomp

6. Project Structure (프로젝트 구조)

nyang (루트)
├── .github                 # 깃허브 워크플로우 및 이슈 템플릿
│   ├─ ISSUE_TEMPLATE
│   ├─ scripts
│   └─ workflows
├── data                    # 로컬 DB설정
├── logs                    # 로그 디렉토리
├── monitoring              # 모니터링 툴
│   └─ nyang_http
│       ├─ logstash
│       └─ kibana-data
├── nginx                   # Nginx 설정
└── src
    ├─ main
    │   ├─ java/com/project/nyang
    │   │   ├─ global
    │   │   │   ├─ common (공통 API, 엔티티, 외부 Public API, S3)
    │   │   │   ├─ config (CORS, Security, Swagger 설정)
    │   │   │   ├─ elasticsearch (animal/board ES 모듈)
    │   │   │   ├─ exception (전역 예외 처리)
    │   │   │   ├─ searchlog (검색 로그, Kafka)
    │   │   │   └─ security (JWT, OAuth2)
    │   │   ├─ modules (도메인별 비즈니스 로직)
    │   │   │   ├─ adoption (입양 관리, 메일, PDF)
    │   │   │   ├─ animal (동물 정보)
    │   │   │   ├─ auth (회원 인증)
    │   │   │   ├─ board
    │   │   │   │   ├─ lost (실종/목격 게시판)
    │   │   │   │   ├─ review (입양 후기)
    │   │   │   │   └─ sns (SNS 홍보)
    │   │   │   ├─ chat (1:1 채팅, Redis)
    │   │   │   ├─ comment (댓글)
    │   │   │   ├─ image (이미지 관리, S3 업로드)
    │   │   │   ├─ like (좋아요)
    │   │   │   ├─ mypage (마이페이지)
    │   │   │   ├─ notification (알림)
    │   │   │   ├─ shelter (보호소 관리)
    │   │   │   └─ user (회원)
    │   │   └─ reference (참고용 코드)
    │   └─ resources
    │       ├─ fonts
    │       ├─ static
    │       └─ templates
    └─ test/java/com/project/nyang

6.1 ERD

Image

7. Development Workflow (개발 워크플로우)

브랜치 전략 (Branch Strategy)

우리의 브랜치 전략은 Git Flow를 기반으로 하며, 다음과 같은 브랜치를 사용합니다.

  • main # 배포 브랜치 (항상 안정화 상태)
  • dev # 개발 통합 브랜치 (feature 병합)
  • feature/* # 기능 단위 브랜치 (feature/mypage)
    • 새로운 기능 개발 시 feature/{기능명} 브랜치 생성 후 작업
    • 완료된 기능은 develop 브랜치로 Pull Request 생성
    • main은 배포 시점에만 merge

개발절차

1. feature 브랜치 생성
2. 코드 작성 + 커밋
3. PR 생성 (develop 기준)
4. 코드 리뷰 → 승인 후 merge
5. merge 후 feature 브랜치 삭제

8. Commit Convention (커밋컨밴션)

커밋컨밴션 참고문서

9. Coding Convention (코딩컨벤션)

  • 패키지, 클래스, 메서드, 변수, 상수 모두 명명 규칙 준수
  • 반의어는 반드시 대응 개념 사용
  • DTO, Controller, Service, Repository 네이밍 통일

10. REST API

  • URI는 명사형, 복수형으로 구성 (/users, /users/{id})
  • HTTP Method로 행위 구분 (GET, POST, PUT, DELETE)
  • 계층적 구조 반영 (/users/{id}/posts)

11. Code Review

  • 모든 Pull Request는 최소 1명 이상의 리뷰어 승인 후 merge
  • 코드 리뷰 시 기능 검증 + 컨벤션 준수 여부 확인
  • 리뷰 의견 반영 후 다시 요청

12. Deployment

1. develop → main merge
2. CI/CD 자동 배포 진행
3. 배포 후 hotfix 필요 시 hotfix 브랜치 생성

13. 개발후기

[ 팀장_ 선순주 ]

  • 갑작스레 팀장을 맡게 되어 많이 걱정되었지만, 함께했던 팀원들과 서로 의지하고 협력하는 과정에서 좋은 팀워크를 느낄 수 있었습니다. 부족한 저를 믿고 함께해준 팀원분들 너무 감사해요! 우리 팀원들 덕분에 짧은 기간동안 너무나도 값진 경험을 했습니다!

[ 팀원_박세정 ]

  • 목표한 기능을 계획 내에 구현하고, Elasticsearch를 통한 검색 최적화, Docker Compose로 개발 환경을 구성했습니다. 또한 GitHub Actions를 연동해 자동화된 배포를 경험하며 DevOps의 중요성을 체감할 수 있었습니다. 전반적으로 협업과 기술 역량 모두를 성장시킬 수 있었던 의미 있는 프로젝트였습니다.

[ 팀원_엄아영 ]

  • 체계적으로 프로젝트를 완수한 것이 큰 자산이 된 것 같습니다. 그리고 팀원분들께 많은 것들을 배울 수 있어서 감사했습니다.

[ 팀원_이지은 ]

  • 이렇게 체계적으로 해본게 거의 처음인데 팀원들과 다 으쌰으쌰해서 기간 내에 마무리 된 것 같습니다! 모두에게 많은 것들을 배웠습니다. 감사합니다

[ 팀원_오승훈 ]

  • 3주라는 짧은 기간동안 서비스를 완성하기 힘들거라 생각했는데 다들 너무 열심히 해주셔서 많은 것을 배웠고 잘 마무리했습니다!

[ 팀원_이은서 ]

  • 시간이 생각보다 촉박하다 생각했는데, 팀원분들이 이끌어주시고, 같이 짐 들어주시니 일정맞추기 수월하였고, 서로 코드를 리뷰해주면서 놓친부분, 빠트린부분을 알려주셔서 훨씬 안정성이 높아진 프로젝트가 된것같습니다. 또한, 제가 이전에 배운 내용 (모니터링파트) 잘 활용하지못했는데 여러사람들이 도와주셔서 좋은결과를 가져간것같습니다. 감사합니다

About

🐶😺 유기동물 입양 활성화를 위한 정보 통합·매칭 플랫폼, '함께하개냥'

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages