가챠샵(Gacha Shop)을 지도 기반으로 탐색하고, 리스트 및 상세 페이지를 통해 매장 정보를 확인할 수 있는 모바일 웹 서비스의 백엔드 API 서버입니다.
🔗 서비스 주소: https://gotcha.it.com
- 🗺️ 카카오맵 기반 가챠샵 위치 탐색 API
- 🏪 매장 상세 정보 및 리뷰 CRUD
- ⭐ 즐겨찾기 기능
- 📝 새 업체 제보
- 🔐 OAuth2 소셜 로그인 (카카오, 구글, 네이버)
- 📷 이미지 업로드 (AWS S3)
- 📲 앱 출시 지원 (iOS / Android)
- 🏠 사장님 페이지 API
- Framework: Spring Boot 3.5.9
- Language: Java 21
- ORM: Spring Data JPA
- Database: PostgreSQL
- Security: Spring Security + OAuth2 Client
- Storage: AWS S3
- Documentation: Swagger (springdoc-openapi)
- Infrastructure: AWS EC2
🔗 프론트엔드 깃헙 레포지토리: GOTCHA-FE
GitHub Actions를 사용한 자동 배포 파이프라인
| 브랜치 | 환경 | 설명 |
|---|---|---|
dev |
Development | 개발 서버 |
main |
Production | 운영 서버 |
배포 프로세스: 코드 푸시 → 빌드 → 테스트 → EC2 배포
- Java 21 이상
- Gradle 8.x
- PostgreSQL 15+
-
의존성 설치 및 빌드
./gradlew build
-
환경 변수 설정
cp .env.example .env # .env 파일을 열어 실제 값 입력 -
로컬 서버 실행
./gradlew bootRun
API 서버: http://localhost:8080 Swagger UI: http://localhost:8080/swagger-ui.html
-
테스트 실행
./gradlew test
src/main/java/com/gotcha/
├── _global/ # 전역 설정 및 공통 모듈
│ ├── common/ # 공통 응답 객체 (ApiResponse, PageResponse)
│ ├── config/ # 설정 (Security, JPA, OpenAPI 등)
│ ├── entity/ # 공통 엔티티 (BaseTimeEntity)
│ ├── exception/ # 전역 예외 처리
│ ├── external/ # 외부 API 클라이언트 (카카오맵)
│ └── util/ # 유틸리티 클래스
│
└── domain/ # 도메인별 모듈
├── auth/ # 인증 (OAuth2, JWT)
├── shop/ # 매장 관리
├── review/ # 리뷰 관리
├── favorite/ # 즐겨찾기
├── file/ # 파일 업로드
└── ... # 기타 도메인
Swagger UI를 통해 API 문서를 확인할 수 있습니다.
| 도메인 | 엔드포인트 | 설명 |
|---|---|---|
| Auth | POST /api/auth/* |
소셜 로그인 및 토큰 관리 |
| Shop | GET /api/shops/* |
매장 조회 및 검색 |
| Review | POST /api/reviews |
리뷰 작성/수정/삭제 |
| Favorite | POST /api/favorites |
즐겨찾기 등록/해제 |
| File | POST /api/files |
이미지 업로드 |
프로젝트의 docs/ 폴더에는 개발 시 참조하는 표준 문서가 포함되어 있습니다.
| 파일 | 설명 |
|---|---|
entity-design.md |
Entity 구조 설계 |
api-spec.md |
API 상세 명세 (Request/Response) |
api-design.md |
API 엔드포인트 개요 |
business-rules.md |
비즈니스 규칙 |
auth-policy.md |
인증/권한 정책 |
error-codes.md |
에러 코드 정의 |
coding-patterns.md |
코딩 패턴 가이드 |
file-upload-guide.md |
이미지 업로드 가이드 |
repository-edge-cases.md |
Repository 엣지 케이스 |
| 파일 | 설명 |
|---|---|
skills/gotcha-api.md |
API 개발 패턴 |
skills/gotcha-entity.md |
Entity 작성 규칙 |
skills/gotcha-test.md |
테스트 작성 패턴 |
skills/gotcha-config.md |
설정/yml 관리 규칙 |
| 브랜치 타입 | 네이밍 | 설명 |
|---|---|---|
| Feature | feature/* |
새 기능 개발 |
| Bug Fix | fix/* |
버그 수정 |
| Refactor | refactor/* |
코드 리팩토링 |
| Documentation | docs/* |
문서 작업 |
PR 대상 브랜치: dev
PR 전 필수: ./gradlew spotlessApply