Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

깍까오독GROOMEONG 서비스 소개 페이지입니다.

서비스 기획의도

Logo-120-120

1인 가구 증가, 인구 고령화에 따라 반려동물로 강아지를 키우는 사람들이 많아지면서 강아지를 위한 다양한 서비스들이 늘어나고 있습니다. 저희는 강아지를 위한 다양한 서비스 중에서 강아지 미용샵에 주목했습니다. 강아지 미용샵 검색 시 소비자가 원하는 미용샵 정보가 아닌 광고 사이트가 많아 비공식적인 커뮤니티 사이트에 의지해 미용샵을 찾아야 하는 불편함이 있었습니다.

따라서 저희는 이런 불편함을 해소하고자 우리 동네 반려견 미용샵, 한 눈에 볼 수 없을까? 기획 의도에 따라 'GROOMEONG' 서비스를 계획하고 개발하였습니다.

'GROOMEONG'은 특정 지역의 반려견 미용샵 목록을 조회하고 예약할 수 있는 서비스로, 견주들이 강아지 미용샵을 지금보다 편리하게 이용할 수 있게 하였습니다.


팀원 소개

백엔드팀원

프론트엔드팀원



시연 GIF

랜딩 페이지

랜딩페이지


메인 페이지

메인페이지


로그인 & 회원가입 페이지

로그인,회원가입페이지


마이 페이지

마이페이지


강아지 페이지

강아지페이지


지도 페이지

지도페이지


예약 페이지

예약페이지


리뷰 페이지

리뷰페이지



기술 스택

기술스텍



플로우 차트

flowChart



ERD

ERD



API 명세서

API 명세서



서버 폴더 구조

.
└── 📂 backend/
├── 📂 elk/
│ └── 📂 logstash/
│ ├── auto_template.json
│ ├── logstash.prod.conf
│ └── mysql-connector-java-8.0.28.jar
├── 📂 node_modules
├── 📂 src/
│ └── 📂 apis/
│ ├── 📂 auth/
│ │ ├── 📂 __test__/
│ │ │ ├── auth.mocking.dummy.ts
│ │ │ ├── auth.resolver.spec.ts
│ │ │ └── auth.service.spec.ts
│ │ ├── 📂 guards/
│ │ │ ├── dynamic-auth.guard-02.ts
│ │ │ └── gql-auth.guard.ts
│ │ ├── 📂 interface/
│ │ │ └── auth.interface.ts
│ │ ├── 📂 strategies/
│ │ │ ├── jwt-access.strategy.ts
│ │ │ ├── jwt-refresh.strategy.ts
│ │ │ ├── jwt-social-google.strategy.ts
│ │ │ └── jwt-social-kakao.strategy.ts`
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.resolver.ts
│ │ └── auth.service.ts
│ ├── 📂 dogs/
│ │ ├── 📂 __test__/
│ │ │ ├── dogs.mocking.ts
│ │ │ ├── dogs.resolver.spec.ts
│ │ │ └── dogs.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-dog.input.ts
│ │ ├── 📂 entities/
│ │ │ └── dog.entity.ts
│ │ ├── 📂 enum/
│ │ │ └── dog-type.enum.ts
│ │ ├── 📂 interfaces/
│ │ │ └── dogs-service.interface.ts
│ │ ├── dogs.module.ts
│ │ ├── dogs.resolver.ts
│ │ └── dogs.service.ts
│ ├── 📂 files/
│ │ ├── 📂 interfaces/
│ │ │ └── files-service.interface.ts
│ │ ├── files.module.ts
│ │ ├── files.resolver.ts
│ │ └── files.service.ts
│ ├── 📂 reservations/
│ │ ├── 📂 __test__/
│ │ │ ├── reservation.mocking.ts
│ │ │ └── reservation.resolver.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-reservation.input.ts
│ │ │ └── return-reservation.output.ts
│ │ ├── 📂 entities/
│ │ │ └── reservation.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reservations-service.interface.ts
│ │ ├── reservations.module.ts
│ │ ├── reservations.resolver.ts
│ │ └── reservations.service.ts
│ ├── 📂 reviews/
│ │ ├── 📂 __test__/
│ │ │ ├── reviews.resolver.spec.ts
│ │ │ └── reviews.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── create-review.input.ts
│ │ ├── 📂 entities/
│ │ │ └── review.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── reviews-service.interface.ts
│ │ ├── reviews.module.ts
│ │ ├── reviews.resolver.ts
│ │ └── reviews.service.ts
│ ├── 📂 shop-review/
│ │ ├── 📂 __test__/
│ │ │ ├── shop-review.resolver.spec.ts
│ │ │ └── shop-review.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── return-shop-review.output.ts
│ │ ├── shop-review.module.ts
│ │ ├── shop-review.resolver.ts
│ │ └── shop-review.service.ts
│ ├── 📂 shopImages/
│ │ ├── 📂 __test__/
│ │ │ ├── shopImage.mocking.dummy.ts
│ │ │ ├── shopImage.resolver.spec.ts
│ │ │ ├── shopImage.service.spec.ts
│ │ │ └── shopImage.service2.spec.ts
│ │ ├── 📂 dto/
│ │ │ └── update-shopImage.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shopImages.entity.ts
│ │ ├── 📂 interfaces/
│ │ │ └── shopImages-service.interface.ts
│ │ ├── shopImage.module.ts
│ │ ├── shopImage.resolver.ts
│ │ └── shopImage.service.ts
│ ├── 📂 shops/
│ │ ├── 📂 __test__/
│ │ │ ├── shops.resolver.spec.ts
│ │ │ └── shops.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-shop.input.ts
│ │ │ ├── return-shop.output.ts
│ │ │ └── update-shop.input.ts
│ │ ├── 📂 entities/
│ │ │ └── shop.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── shops-service.interfaces.ts
│ │ ├── shops.module.ts
│ │ ├── shops.resolver.ts
│ │ └── shops.service.ts
│ ├── 📂 users/
│ │ ├── 📂 __test__/
│ │ │ ├── users.resolver.spec.ts
│ │ │ └── users.service.spec.ts
│ │ ├── 📂 dto/
│ │ │ ├── create-users.input.ts
│ │ │ └── update-users.input.ts
│ │ ├── 📂 entities/
│ │ │ └── user.entity.ts
│ │ ├── 📂 interface/
│ │ │ └── users.interace.ts
│ │ ├── user.module.ts
│ │ ├── user.resolver.ts
│ │ └── user.service.ts
│ ├── 📂 commons/
│ │ ├── 📂 filter/
│ │ │ └── http-exception.filter.ts
│ │ ├── 📂 interface/
│ │ │ └── context.ts
│ │ └── 📂 utils/
│ │ ├── addresscode.ts
│ │ └── utils
│ ├── app.controller.ts
│ ├── app.module.ts
│ └── main.ts
├── .dockerignore
├── .env.docker
├── .env.prod
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── cloudbuild.yaml
├── docker-compose.prod.yaml
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile.elasticsearch
├── Dockerfile.logstash
├── Dockerfile.prod
├── nest-cli.json
├── package.json
├── README.md
├── settings.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

About

우리 동네 반려견 미용샵, 검색부터 예약까지 간편하게 한번에!

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages