$ build.clean
$ build bootjar
$ docker compose -f docker-compose.monitoring.yaml up -d
$ docker compose -f docker-compose.data.yaml up -d- 프로젝트 이름: 함께하개냥
- 프로젝트 설명: 유기동물 입양 및 홍보 커뮤니티
- 멋쟁이사자처럼 백엔드스쿨 플러스 Elasticsearch 기반의 고성능 검색 엔진을 설계 최우수상
| 선순주 | 박세정 | 엄아영 | 이지은 | 오승훈 | 이은서 |
|---|---|---|---|---|---|
| BE | BE | BE | BE | BE | BE |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| GitHub | GitHub | GitHub | GitHub | GitHub | GitHub |
-
로그인:
- 소셜에서 제공하는 인증 정보를 통해 로그인합니다.
- 회원가입 또한 최초로그인시 회원가입과 동시에 로그인이 진행됩니다.
-
유기동물전체보기:
- 공공기관 유기동물 API에서 공고시작일 기준 최근16일 보여줍니다.
- 발견일을 기준으로 정렬합니다.
-
게시판:
- 입양후기게시판 : 우리 사이트를 통해서 가족이된 반려동물들을 소개하는 게시판
- SNS 게시판: 귀여운 반려동물들을 홍보하는 게시판
- 실종/목격 게시판: 반려동물 잃어버리거나 잃어버린 반려동물들을 봤을때 작성하는게시판
-
보호소찾기:
- 국가동물보호정보시스템 에 등록된 보호소를 조회할수있습니다.
- 주소, 전화번호, 위치를 표시해 접근성을 높혔습니다.
-
입양신청서작성:
- 기본정보, 휴대폰, 거주지, 기본설문 및 입양사유를 적고 입양계약서를 작성해 보호소 이메일로 제출합니다.
-
마이페이지:
- 내정보수정 (닉네임, 이메일수정)
- 입양신청 내역 조회
- 찜 공고 확인
- 내가 작성한 커뮤니티 게시글 확인
- 좋아요한 게시글 확인
-
1:1채팅:
- 실종/목격 게시판에서 게시글 작성자와 1:1채팅 가능
| 구분 | 함께하개냥 | 기존 서비스 |
|---|---|---|
| 실시간유기동물정보갱신 | 매일 2회 자동수집 및 반영 | 수동 또는 낮은빈도 |
| 소셜로그인 | 카카오, 네이버, 구글 통합지원 | 카카오지원 |
| 입양신청 자동화 | 신청서 작성완료와 동시에 PDF변환+메일발송 | 수동 |
| 1:1 실시간채팅 | 유저간 1:1 채팅기능 | 없음 |
| Java | Gradle 17 |
| React | |
| TypeScript |
| SpringBoot | |
| Mysql(8.0) - local test |
| Github | |
| Discord | |
| Notion |
| Swagger | |
| Postman |
| EC2 | |
| AmazonS3 | |
| GitAction | |
| docker |
| Kafka | |
| Apache Zookeeper | |
| Redis | |
| Websocket | |
| Elasticsearch | |
| Nginx | |
| Stomp |
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
우리의 브랜치 전략은 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 브랜치 삭제
- 패키지, 클래스, 메서드, 변수, 상수 모두 명명 규칙 준수
- 반의어는 반드시 대응 개념 사용
- DTO, Controller, Service, Repository 네이밍 통일
- URI는 명사형, 복수형으로 구성 (/users, /users/{id})
- HTTP Method로 행위 구분 (GET, POST, PUT, DELETE)
- 계층적 구조 반영 (/users/{id}/posts)
- 모든 Pull Request는 최소 1명 이상의 리뷰어 승인 후 merge
- 코드 리뷰 시 기능 검증 + 컨벤션 준수 여부 확인
- 리뷰 의견 반영 후 다시 요청
1. develop → main merge
2. CI/CD 자동 배포 진행
3. 배포 후 hotfix 필요 시 hotfix 브랜치 생성
[ 팀장_ 선순주 ]
- 갑작스레 팀장을 맡게 되어 많이 걱정되었지만, 함께했던 팀원들과 서로 의지하고 협력하는 과정에서 좋은 팀워크를 느낄 수 있었습니다. 부족한 저를 믿고 함께해준 팀원분들 너무 감사해요! 우리 팀원들 덕분에 짧은 기간동안 너무나도 값진 경험을 했습니다!
[ 팀원_박세정 ]
- 목표한 기능을 계획 내에 구현하고, Elasticsearch를 통한 검색 최적화, Docker Compose로 개발 환경을 구성했습니다. 또한 GitHub Actions를 연동해 자동화된 배포를 경험하며 DevOps의 중요성을 체감할 수 있었습니다. 전반적으로 협업과 기술 역량 모두를 성장시킬 수 있었던 의미 있는 프로젝트였습니다.
[ 팀원_엄아영 ]
- 체계적으로 프로젝트를 완수한 것이 큰 자산이 된 것 같습니다. 그리고 팀원분들께 많은 것들을 배울 수 있어서 감사했습니다.
[ 팀원_이지은 ]
- 이렇게 체계적으로 해본게 거의 처음인데 팀원들과 다 으쌰으쌰해서 기간 내에 마무리 된 것 같습니다! 모두에게 많은 것들을 배웠습니다. 감사합니다
[ 팀원_오승훈 ]
- 3주라는 짧은 기간동안 서비스를 완성하기 힘들거라 생각했는데 다들 너무 열심히 해주셔서 많은 것을 배웠고 잘 마무리했습니다!
[ 팀원_이은서 ]
- 시간이 생각보다 촉박하다 생각했는데, 팀원분들이 이끌어주시고, 같이 짐 들어주시니 일정맞추기 수월하였고, 서로 코드를 리뷰해주면서 놓친부분, 빠트린부분을 알려주셔서 훨씬 안정성이 높아진 프로젝트가 된것같습니다. 또한, 제가 이전에 배운 내용 (모니터링파트) 잘 활용하지못했는데 여러사람들이 도와주셔서 좋은결과를 가져간것같습니다. 감사합니다









