Skip to content

Latest commit

 

History

History
466 lines (435 loc) · 31.3 KB

File metadata and controls

466 lines (435 loc) · 31.3 KB

IceButler_Server

냉장고를 지켜주는 나만의 집사😺


Tech Stack

Backend

JWT

DB

CI/CD

Deploy

Develop Tool



Project Architecture

FINAL ARCHITECTURE 스크린샷 2023-09-06 오후 7 21 05
CI/CD 스크린샷 2023-09-06 오후 7 21 59
AWS Lambda 스크린샷 2023-09-06 오후 7 24 33
AWS SQS 스크린샷 2023-09-06 오후 7 25 39

Project Structure

Details
├── Dockerfile
├── build.gradle
├── gradle
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── icebutler_server
    │   │               ├── IceButlerServerApplication.java
    │   │               ├── admin
    │   │               │   ├── controller
    │   │               │   │   ├── AdminController.java
    │   │               │   │   └── AdminExceptionController.java
    │   │               │   ├── dto
    │   │               │   │   ├── assembler
    │   │               │   │   │   └── AdminAssembler.java
    │   │               │   │   ├── condition
    │   │               │   │   │   └── SearchCond.java
    │   │               │   │   ├── request
    │   │               │   │   │   ├── JoinRequest.java
    │   │               │   │   │   ├── LoginRequest.java
    │   │               │   │   │   ├── ModifyFoodRequest.java
    │   │               │   │   │   ├── RemoveFoodRequest.java
    │   │               │   │   │   ├── RemoveFoodsRequest.java
    │   │               │   │   │   └── WithDrawRequest.java
    │   │               │   │   └── response
    │   │               │   │       ├── AdminResponse.java
    │   │               │   │       ├── LoginResponse.java
    │   │               │   │       ├── LogoutResponse.java
    │   │               │   │       ├── PostAdminRes.java
    │   │               │   │       ├── SearchFoodsResponse.java
    │   │               │   │       └── UserResponse.java
    │   │               │   ├── entity
    │   │               │   │   └── Admin.java
    │   │               │   ├── exception
    │   │               │   │   ├── AdminAnnotationIsNowhereException.java
    │   │               │   │   ├── AdminNotFoundException.java
    │   │               │   │   ├── AlreadyExistEmailException.java
    │   │               │   │   ├── FoodNotFoundException.java
    │   │               │   │   └── PasswordNotMatchException.java
    │   │               │   ├── repository
    │   │               │   │   ├── AdminRepository.java
    │   │               │   │   ├── AdminRepositoryQuerydsl.java
    │   │               │   │   └── AdminRepositoryQuerydslImpl.java
    │   │               │   └── service
    │   │               │       ├── AdminService.java
    │   │               │       └── AdminServiceImpl.java
    │   │               ├── alarm
    │   │               │   ├── dto
    │   │               │   │   ├── FcmMessage.java
    │   │               │   │   ├── Message.java
    │   │               │   │   ├── Notification.java
    │   │               │   │   └── assembler
    │   │               │   │       └── NotificationAssembler.java
    │   │               │   ├── entity
    │   │               │   │   └── PushNotification.java
    │   │               │   ├── repository
    │   │               │   │   └── PushNotificationRepository.java
    │   │               │   └── service
    │   │               │       ├── NotificationService.java
    │   │               │       └── NotificationServiceImpl.java
    │   │               ├── cart
    │   │               │   ├── controller
    │   │               │   │   ├── CartController.java
    │   │               │   │   ├── CartExceptionController.java
    │   │               │   │   └── MultiCartController.java
    │   │               │   ├── dto
    │   │               │   │   └── cart
    │   │               │   │       ├── assembler
    │   │               │   │       │   ├── CartAssembler.java
    │   │               │   │       │   ├── CartFoodAssembler.java
    │   │               │   │       │   └── MultiCartFoodAssembler.java
    │   │               │   │       ├── request
    │   │               │   │       │   ├── AddFoodRequest.java
    │   │               │   │       │   ├── AddFoodToCartRequest.java
    │   │               │   │       │   └── RemoveFoodFromCartRequest.java
    │   │               │   │       └── response
    │   │               │   │           └── CartResponse.java
    │   │               │   ├── entity
    │   │               │   │   ├── cart
    │   │               │   │   │   ├── Cart.java
    │   │               │   │   │   └── CartFood.java
    │   │               │   │   └── multiCart
    │   │               │   │       ├── MultiCart.java
    │   │               │   │       └── MultiCartFood.java
    │   │               │   ├── exception
    │   │               │   │   ├── CartFoodNotFoundException.java
    │   │               │   │   └── CartNotFoundException.java
    │   │               │   ├── repository
    │   │               │   │   ├── cart
    │   │               │   │   │   ├── CartFoodQuerydslRepository.java
    │   │               │   │   │   ├── CartFoodQuerydslRepositoryImpl.java
    │   │               │   │   │   ├── CartFoodRepository.java
    │   │               │   │   │   └── CartRepository.java
    │   │               │   │   └── multiCart
    │   │               │   │       ├── MultiCartFoodQuerydslRepository.java
    │   │               │   │       ├── MultiCartFoodQuerydslRepositoryImpl.java
    │   │               │   │       ├── MultiCartFoodRepository.java
    │   │               │   │       └── MultiCartRepository.java
    │   │               │   └── service
    │   │               │       ├── CartService.java
    │   │               │       ├── CartServiceImpl.java
    │   │               │       └── MultiCartServiceImpl.java
    │   │               ├── food
    │   │               │   ├── controller
    │   │               │   │   ├── FoodController.java
    │   │               │   │   └── FoodExceptionController.java
    │   │               │   ├── dto
    │   │               │   │   ├── assembler
    │   │               │   │   │   └── FoodAssembler.java
    │   │               │   │   ├── request
    │   │               │   │   │   └── FoodReq.java
    │   │               │   │   └── response
    │   │               │   │       ├── BarcodeFoodRes.java
    │   │               │   │       ├── FoodRes.java
    │   │               │   │       └── FoodResponse.java
    │   │               │   ├── entity
    │   │               │   │   ├── Food.java
    │   │               │   │   ├── FoodCategory.java
    │   │               │   │   └── FoodDeleteStatus.java
    │   │               │   ├── exception
    │   │               │   │   ├── BarcodeFoodNotFoundException.java
    │   │               │   │   ├── DuplicateFoodNameException.java
    │   │               │   │   ├── FoodCategoryNotFoundException.java
    │   │               │   │   ├── FoodDeleteStatusNotFoundException.java
    │   │               │   │   └── FoodNameNotFoundException.java
    │   │               │   ├── repository
    │   │               │   │   └── FoodRepository.java
    │   │               │   └── service
    │   │               │       ├── FoodService.java
    │   │               │       └── FoodServiceImpl.java
    │   │               ├── fridge
    │   │               │   ├── controller
    │   │               │   │   ├── FridgeController.java
    │   │               │   │   ├── FridgeExceptionController.java
    │   │               │   │   └── MultiFridgeController.java
    │   │               │   ├── dto
    │   │               │   │   ├── fridge
    │   │               │   │   │   ├── assembler
    │   │               │   │   │   │   ├── FridgeAssembler.java
    │   │               │   │   │   │   ├── FridgeFoodAssembler.java
    │   │               │   │   │   │   └── FridgeUtils.java
    │   │               │   │   │   ├── request
    │   │               │   │   │   │   ├── DeleteFridgeFoodsReq.java
    │   │               │   │   │   │   ├── FridgeFoodReq.java
    │   │               │   │   │   │   ├── FridgeFoodsReq.java
    │   │               │   │   │   │   ├── FridgeModifyMembersReq.java
    │   │               │   │   │   │   ├── FridgeModifyReq.java
    │   │               │   │   │   │   ├── FridgeRegisterMembersReq.java
    │   │               │   │   │   │   └── FridgeRegisterReq.java
    │   │               │   │   │   └── response
    │   │               │   │   │       ├── FridgeDiscardRes.java
    │   │               │   │   │       ├── FridgeFoodRes.java
    │   │               │   │   │       ├── FridgeFoodStatistics.java
    │   │               │   │   │       ├── FridgeFoodsRes.java
    │   │               │   │   │       ├── FridgeFoodsStatistics.java
    │   │               │   │   │       ├── FridgeMainRes.java
    │   │               │   │   │       ├── FridgeRes.java
    │   │               │   │   │       ├── FridgeUserMainRes.java
    │   │               │   │   │       ├── FridgeUserRes.java
    │   │               │   │   │       ├── FridgeUsersRes.java
    │   │               │   │   │       ├── GetFridgesMainRes.java
    │   │               │   │   │       ├── MultiFridgeRes.java
    │   │               │   │   │       ├── RecipeFridgeFoodListRes.java
    │   │               │   │   │       ├── RecipeFridgeFoodListsRes.java
    │   │               │   │   │       ├── SearchFoodRes.java
    │   │               │   │   │       ├── SearchFridgeFoodRes.java
    │   │               │   │   │       ├── SelectFridgeRes.java
    │   │               │   │   │       ├── SelectFridgesMainRes.java
    │   │               │   │   │       ├── UpdateMembersRes.java
    │   │               │   │   │       └── UpdateMultiMemberRes.java
    │   │               │   │   └── multiFridge
    │   │               │   │       └── assembler
    │   │               │   │           ├── MultiFridgeAssembler.java
    │   │               │   │           └── MultiFridgeFoodAssembler.java
    │   │               │   ├── entity
    │   │               │   │   ├── fridge
    │   │               │   │   │   ├── Fridge.java
    │   │               │   │   │   ├── FridgeFood.java
    │   │               │   │   │   └── FridgeUser.java
    │   │               │   │   └── multiFridge
    │   │               │   │       ├── MultiFridge.java
    │   │               │   │       ├── MultiFridgeFood.java
    │   │               │   │       └── MultiFridgeUser.java
    │   │               │   ├── exception
    │   │               │   │   ├── FridgeFoodNotFoundException.java
    │   │               │   │   ├── FridgeNameEmptyException.java
    │   │               │   │   ├── FridgeNotFoundException.java
    │   │               │   │   ├── FridgeRemoveException.java
    │   │               │   │   ├── FridgeTypeNotFoundException.java
    │   │               │   │   ├── FridgeUserNotFoundException.java
    │   │               │   │   ├── InvalidFridgeUserRoleException.java
    │   │               │   │   └── PermissionDeniedException.java
    │   │               │   ├── repository
    │   │               │   │   ├── fridge
    │   │               │   │   │   ├── FridgeFood
    │   │               │   │   │   │   ├── FridgeFoodCustom.java
    │   │               │   │   │   │   ├── FridgeFoodRepository.java
    │   │               │   │   │   │   └── FridgeFoodRepositoryImpl.java
    │   │               │   │   │   ├── FridgeRepository.java
    │   │               │   │   │   └── FridgeUserRepository.java
    │   │               │   │   └── multiFridge
    │   │               │   │       ├── MultiFridgeFood
    │   │               │   │       │   ├── MultiFridgeFoodCustom.java
    │   │               │   │       │   ├── MultiFridgeFoodRepository.java
    │   │               │   │       │   └── MultiFridgeFoodRepositoryImpl.java
    │   │               │   │       ├── MultiFridgeRepository.java
    │   │               │   │       └── MultiFridgeUserRepository.java
    │   │               │   └── service
    │   │               │       ├── FridgeService.java
    │   │               │       ├── FridgeServiceImpl.java
    │   │               │       └── MultiFridgeServiceImpl.java
    │   │               ├── global
    │   │               │   ├── config
    │   │               │   │   ├── AwsSqsConfig.java
    │   │               │   │   ├── JasyptConfig.java
    │   │               │   │   ├── QueryDslConfig.java
    │   │               │   │   ├── RedisConfig.java
    │   │               │   │   └── WebConfig.java
    │   │               │   ├── controller
    │   │               │   │   └── ExceptionController.java
    │   │               │   ├── dto
    │   │               │   │   └── response
    │   │               │   │       └── ResponseCustom.java
    │   │               │   ├── entity
    │   │               │   │   ├── BaseEntity.java
    │   │               │   │   └── FridgeRole.java
    │   │               │   ├── entityListener
    │   │               │   │   ├── CartEntityListener.java
    │   │               │   │   ├── FoodEntityListener.java
    │   │               │   │   ├── FridgeEntityListener.java
    │   │               │   │   ├── FridgeUserEntityListener.java
    │   │               │   │   ├── MultiCartEntityListener.java
    │   │               │   │   ├── MultiFridgeEntityListener.java
    │   │               │   │   ├── MultiFridgeUserEntityListener.java
    │   │               │   │   └── UserEntityListener.java
    │   │               │   ├── feign
    │   │               │   │   ├── dto
    │   │               │   │   │   ├── AdminReq.java
    │   │               │   │   │   ├── FoodReq.java
    │   │               │   │   │   └── UserReq.java
    │   │               │   │   ├── event
    │   │               │   │   │   ├── DeleteUserEvent.java
    │   │               │   │   │   ├── FoodEvent.java
    │   │               │   │   │   ├── UpdateFoodEvent.java
    │   │               │   │   │   ├── UpdateUserEvent.java
    │   │               │   │   │   └── UserEvent.java
    │   │               │   │   ├── feignClient
    │   │               │   │   │   └── RecipeServerClient.java
    │   │               │   │   ├── handler
    │   │               │   │   │   ├── RecipeServerEventHandler.java
    │   │               │   │   │   └── RecipeServerEventHandlerImpl.java
    │   │               │   │   └── publisher
    │   │               │   │       ├── RecipeServerEventPublisher.java
    │   │               │   │       └── RecipeServerEventPublisherImpl.java
    │   │               │   ├── resolver
    │   │               │   │   ├── Admin.java
    │   │               │   │   ├── AdminLoginStatus.java
    │   │               │   │   ├── AdminResolver.java
    │   │               │   │   ├── Auth.java
    │   │               │   │   ├── IsAdminLogin.java
    │   │               │   │   ├── IsLogin.java
    │   │               │   │   ├── LoginResolver.java
    │   │               │   │   └── LoginStatus.java
    │   │               │   ├── sqs
    │   │               │   │   ├── AmazonSQSSender.java
    │   │               │   │   ├── AmazonSQSSenderImpl.java
    │   │               │   │   ├── AwsSqsListener.java
    │   │               │   │   └── FoodData.java
    │   │               │   └── util
    │   │               │       ├── AppleUtils.java
    │   │               │       ├── AwsS3ImageUrlUtil.java
    │   │               │       ├── BeanUtils.java
    │   │               │       ├── Constant.java
    │   │               │       ├── TokenUtils.java
    │   │               │       └── redis
    │   │               │           ├── RedisTemplateService.java
    │   │               │           ├── RedisTemplateServiceImpl.java
    │   │               │           ├── RedisUtils.java
    │   │               │           └── SyncData.java
    │   │               └── user
    │   │                   ├── controller
    │   │                   │   ├── UserAuthController.java
    │   │                   │   ├── UserController.java
    │   │                   │   └── UserExceptionController.java
    │   │                   ├── dto
    │   │                   │   ├── LoginUserReq.java
    │   │                   │   ├── assembler
    │   │                   │   │   └── UserAssembler.java
    │   │                   │   ├── request
    │   │                   │   │   ├── PatchProfileReq.java
    │   │                   │   │   ├── PostNicknameReq.java
    │   │                   │   │   ├── PostUserReq.java
    │   │                   │   │   └── UserAuthTokenReq.java
    │   │                   │   └── response
    │   │                   │       ├── IsEnableRes.java
    │   │                   │       ├── MyNotificationRes.java
    │   │                   │       ├── MyProfileRes.java
    │   │                   │       ├── NickNameRes.java
    │   │                   │       ├── PostNickNameRes.java
    │   │                   │       └── PostUserRes.java
    │   │                   ├── entity
    │   │                   │   ├── Provider.java
    │   │                   │   └── User.java
    │   │                   ├── exception
    │   │                   │   ├── AccessDeniedUserException.java
    │   │                   │   ├── AlreadyExistNickNameException.java
    │   │                   │   ├── AlreadyWithdrawUserException.java
    │   │                   │   ├── AuthAnnotationIsNowhereException.java
    │   │                   │   ├── CannotDeleteFridgeException.java
    │   │                   │   ├── InvalidUserNickNameException.java
    │   │                   │   ├── InvalidUserProfileImgKeyException.java
    │   │                   │   ├── ProviderMissingValueException.java
    │   │                   │   ├── TokenExpirationException.java
    │   │                   │   ├── UserEmailMissingValueException.java
    │   │                   │   ├── UserNicknameNotFoundException.java
    │   │                   │   └── UserNotFoundException.java
    │   │                   ├── repository
    │   │                   │   └── UserRepository.java
    │   │                   └── service
    │   │                       ├── UserService.java
    │   │                       └── UserServiceImpl.java
    │   └── resources
    │       ├── application.yml
    └── test
        └── java
            └── com
                └── example
                    └── icebutler_server
                        └── IceButlerServerApplicationTests.java



DB

MAIN_SERVER 스크린샷 2023-09-06 오후 7 29 42
RECIPE_SERVER 스크린샷 2023-09-06 오후 7 29 26



Commit/PR Convention

Commit

#1 feat: 일정 등록 API 추가
  • #이슈번호 타입: 커밋 설명

Pull Request

[feature/1-create-calender] 일정 등록
  • [브랜치명] 설명

Branch Strategy

  • main
    • 배포 이력 관리 목적
  • develop
    • feature 병합용 브랜치
    • 배포 전 병합 브랜치
  • feature
    • develop 브랜치를 베이스로 기능별로 feature 브랜치 생성해 개발
  • test
    • 테스트가 필요한 코드용 브랜치
  • fix
    • 배포 후 버그 발생 시 버그 수정

  • feature branch의 경우, 기능명/이슈번호-기능설명 형태로 작성
feature/7-desserts-patchDessert

MSA (Micro Service Architecture)

MAIN_SERVER RECIPE_SERVER CHAT_GPT_WORDS CHAT_GPT_CATEGORY GET_PRESIGNED_S3_URL
main 서버 레시피 서버 ChatGPT 활용 대표단어 추출 Lambda ChatGPT 활용 카테고리 추출 Lambda PresignedURL Lambda

API

👉 CLICK HERE

Member

김민기 박서연 박소정 웃쿠
DB &
Backend Developer
PM &
Backend Developer
PM &
Backend Developer
QA &
Backend Developer
이승학 이찬영 장채은 냉집사
Framework Leader &
Backend Developer
Architect &
Backend Developer
DB &
Backend Developer
ICE BUTLER