MySelectShop은 키워드로 상품을 검색하고 관심 상품을 등록할 수 있습니다.
- 매일 새벽 1시에 최저가 업데이트를 실행하며, 설정한 희망 최저가보다 실제 최저가가 낮다면 최저가 태그가 붙습니다.
- 현재 프로젝트는 AWS EC2 인스턴스에서 Docker 컨테이너로 Spring Boot 웹 애플리케이션을 실행하고 있습니다.
- 데이터베이스는 AWS RDS에서 MySQL로 관리합니다.
- GitHub Actions를 통해 코드를 관리합니다.
- git clone
git clone https://github.com/sososo0/shopping-app.git
- docker 설치
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce sudo docker --version
- docker-compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
+) docker 관련 오류가 발생할 시 docker 그룹에 사용자 추가하기
sudo usermod -aG docker $USER
변경사항을 저장하기 위해 docker 로그아웃 후 다시 로그인
- .env 파일 만들기
- 보안과 유지보수를 용이하게 하기 위해 .env 파일을 생성했습니다.
- 프로젝트의 루트 디렉토리에 생성합니다.
/myselectshop │ ├── .env
DB_PW=
DB_USER=
JWT_SECRET_KEY=
NAVER_CLIENT_ID=
NAVER_CLIENT_SECRET=
ADMIN_TOKEN=
KAKAO_REST_API_KEY=
DB_HOST=
SERVER_HOST= # http 또는 https로 시작하는 서버 주소를 입력하세요 (예: http://localhost)
- template은 위와 같습니다.
- docker-compose up -d
- Dockerfile이 자동으로 빌드되고 springboot web application의 docker container가 생성되고 실행됩니다.
구현된 주요 API 목록은 다음과 같습니다.
Naver
-
상품 검색
GET /api/search?query=검색어
User
-
로그인 페이지 호출
GET /api/user/login-page
-
회원가입 페이지 호출
GET /api/user/signup
-
회원가입
POST /api/user/signup
-
회원 정보 요청
GET /api/user-info
-
카카오 소셜 로그인 인가 코드 처리
GET /api/user/kakao/callback
Product
-
관심 상품 조회하기
GET /api/products
-
관심 상품 등록하기
POST /api/products
-
관심 상품의 희망 최저가 업데이트
PUT /api/products/{id}
-
admin 계정 모든 상품 조회 기능
GET /api/admin/products
Folder
-
폴더 전체 조회
GET /api/folders
-
회원 폴더 생성
POST /api/folders
-
회원 폴더 조회
GET /api/user-folder
-
폴더 추가
POST /api/products/{productId}/folder
-
폴더 별 관심상품 조회
GET /api/folders/{folderId}/products