HoneyCombo

Social media for sharing food pairing

๐Ÿฏ Honey-Combo ๐Ÿ

GithubGithubGithubGithubGithub

๐ŸŒ ๋ฒˆ์—ญ: KR US

Honey-Combo ๋Š” 1์ธ ๊ฐ€๊ตฌ๋ฅผ ์œ„ํ•œ ์Œ์‹ ์กฐํ•ฉ์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค(Social Networking Service, SNS) ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์š”๋ฆฌํ•œ ์‚ฌ์ง„์„ ํ”ผ๋“œ๋กœ ๊ฒŒ์‹œํ•ด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค๊ณผ ๊ณต์œ ํ•˜๋ฉฐ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Common Service
    • ๊ฟ€์กฐํ•ฉ ํ”ผ๋“œ ๊ฒŒ์‹œ, ๋Œ“๊ธ€, ์ข‹์•„์š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์œ ์ €๋“ค ๊ฐ„ ํŒ”๋กœ์šฐ ๋ฐ ํŒ”๋กœ์ž‰ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์œ ์ €์˜ ์„ฑ๋ณ„๊ณผ ๋‚˜์ด๋Œ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”ผ๋“œ ๊ฒŒ์‹œ, ํ”ผ๋“œ ์ข‹์•„์š”, ํ”ผ๋“œ ์ƒ์„ธ ์กฐํšŒ, ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ํ”ผ๋“œ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
  2. Contest Service
    • ๊ด€๋ฆฌ์ž๊ฐ€ ๋งค์ฃผ ํ•˜๋‚˜์˜ ์ฃผ์ œ๋กœ ์ฝ˜ํ…Œ์ŠคํŠธ๋ฅผ ์—ด์–ด ์œ ์ €๋“ค์ด ์ต๋ช…์œผ๋กœ ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ข‹์•„์š”๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์€ 3๊ฐœ์˜ ๊ฟ€์กฐํ•ฉ์„ ๊ฒŒ์‹œํ•œ ์œ ์ €์—๊ฒŒ ํฌ์ธํŠธ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ฐจํŠธ๋ฅผ ์ด์šฉํ•ด ์ฝ˜ํ…Œ์ŠคํŠธ ํ”ผ๋“œ์˜ ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅธ ์œ ์ €์˜ ์„ฑ๋ณ„๊ณผ ๋‚˜์ด๋Œ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  3. Liquors Service
    • ๊ด€๋ฆฌ์ž๊ฐ€ ๋งค์ฃผ ์ƒˆ๋กœ์šด ์ฃผ๋ฅ˜ ์กฐํ•ฉ์„ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•ด ์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธํ•˜์„ธ์š” ๐Ÿ™‚

๐Ÿ“Œ ๋ชฉ์ฐจ

๐Ÿฏ Honey-Combo ๐Ÿ

๐Ÿƒ ์‹œ์ž‘ํ•˜๊ธฐ

์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ฅด์‹œ๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ

์„ค์น˜ํ•˜๊ธฐ

  1. ๊นƒํ—™์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก ํ•ฉ๋‹ˆ๋‹ค.

    $ git clone https://github.com/YongjoonSeo/1st_pjt_301.git
    
  2. yarn์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    $ yarn install
    

์‹คํ–‰ํ•˜๊ธฐ

Honey-combo ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • honey-combo.sql์„ ์ฐธ๊ณ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ erd๋ฅผ ํ™•์ธํ•˜์„ธ์š”.)

    • application.yml์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url : jdbc:mysql://localhost:3306/honeycombo?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
          username : {๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ • ์•„์ด๋””}
          password : {๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ}
      
  2. ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • IDE์— import ํ›„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      IntelliJ, STS์™€ ๊ฐ™์€ IDE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, backend๋ฅผ importํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • warํŒŒ์ผ์„ ์ƒ์„ฑ ํ›„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      $ gradlew -DskipTests=true build
      
      $ java -jar [filename].war
      
  3. ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    $ yarn serve
    

๋ฐฐํฌํ•˜๊ธฐ

ํ•ด๋‹น ์„œ๋น„์Šค๋Š” AWS EC2๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „์— ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ AWS EC2๊ณ„์ •์„ ์ƒ์„ฑํ•˜์„ธ์š”.

๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. AWS EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  2. JDK ์„ค์น˜ (ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •)
  3. DB ์„ค์น˜ (ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ MySQL ์‚ฌ์šฉ)
  4. gradle wrapper์„ ์œ„ํ•œ ๋ฒ„์ „ ์„ค์ • (6.0.0 ์ด์ƒ)
  5. gradle clean build ์‹คํ–‰ (war ํŒŒ์ผ ์ƒ์„ฑ)
  6. yarn build (dist ํด๋” ์ƒ์„ฑ)
  7. Nginx (front-end, back-end ๊ฒฝ๋กœ ์„ค์ •)

๋ฐ๋ชจ

์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

๐ŸŒ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €

latest latest latest latest

๐Ÿ› ๏ธ โ€‹์‚ฌ์šฉ๋œ ๋„๊ตฌ

  • Vue.js 2.6.11
  • vue/cli 4.4.6
  • yarn 1.22.4
  • Spring boot 2.3.1
  • Gradle 6.4.1
  • IDE: Visual Studio Code 1.48, Spring Tool Suite 3

๐Ÿ–ฅ๏ธ โ€‹์‚ฌ์šฉ๋œ ๊ธฐ์ˆ 

ํ”„๋ก ํŠธ์—”๋“œ

Technology Description Official website
Vue Front-end framework https://vuejs.org/
Vue-router Routing library https://router.vuejs.org/
Vuex Global State Management library https://vuex.vuejs.org/
vuex-persistedstate Persist and rehydrate your Vuex state between page reloads https://www.npmjs.com/package/vuex-persistedstate
Axios HTTP communication library https://github.com/axios/axios
Vuetify Vue UI library https://vuetifyjs.com/
vue-cookies A simple Vue.js plugin for handling browser cookies https://www.npmjs.com/package/vue-cookies
vue-chartjs Wrapper for Chart.js in vue https://vue-chartjs.org/
vue-cropperjs A Vue wrapper component for cropperjs https://www.npmjs.com/package/vue-cropperjs
sweetalert A beautiful replacement for messages https://sweetalert.js.org/guides/
vue-google-oauth2 Handling Google sign-in and sign-out for Vue.js applications https://www.npmjs.com/package/vue-google-oauth2

๋ฐฑ์—”๋“œ

Technology Dscription Official Website
Spring Boot Container + MVC framework https://spring.io/projects/spring-boot
Spring Security Authentication and authorization https://spring.io/projects/spring-security
Redis Distributed cache https://redis.io/
JWT JWT login support https://jwt.io/
MySQL RDBMS https://www.mysql.com/
JPA ORM framework https://spring.io/projects/spring-data-jpa
QueryDsl Java persistence query language http://www.querydsl.com/
Lombok Simplified object packaging tool https://projectlombok.org/
OAuth Authentication and authorization https://oauth.net/
Swagger-UI Document production tool https://github.com/swagger-api/swagger-ui
  • Spring security์™€ JWT(JSON Web Token)๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ณผ์ •์„ ๊ฑฐ์ณ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ํ† ํฐ์„ ์ธ-๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ธ Redis์— ์ €์žฅํ•˜์—ฌ ๋กœ๊ทธ์ธ ๋ฐ ๋กœ๊ทธ์•„์›ƒํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ธ์ฆ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜์ธ OAuth2(Open Authorization) ๋ฅผ ํ†ตํ•ด ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • JPA(Java Persistence API) + Spring Data JPA ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋“ค๊ณผ ํ…Œ์ด๋ธ”, ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ ๊ธฐ๋ณธ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • QueryDSL์„ ์ด์šฉํ•ด ํƒ€์ž…์— ์•ˆ์ „ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด SQL๋ฌธ์„ ๋ฌธ์ž์—ด๋กœ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ XMLํŒŒ์ผ์— ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์„ฑ๋ณ„๊ณผ ์—ฐ๋ น๋Œ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”ผ๋“œ ๊ฒŒ์‹œ, ํ”ผ๋“œ ์ข‹์•„์š”, ํ”ผ๋“œ ์ƒ์„ธ ์กฐํšŒ, ๊ฒ€์ƒ‰ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ์ถ”์ฒœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • AWS EC2์™€ Nginx๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ถ”ํ›„ ์ ์šฉ

  • ์ถ”๊ฐ€๋กœ docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ“ผ ์‹œ์—ฐ ์˜์ƒ

  • ์‹œ์—ฐ ์˜์ƒ
  • ๋กœ๊ทธ์ธ, ํ”ผ๋“œ, ๋Œ“๊ธ€, ์ข‹์•„์š”, ํŒ”๋กœ์šฐ, ์•Œ๋ฆผ ์„œ๋น„์Šค
  • ์ฝ˜ํ…Œ์ŠคํŠธ ์„œ๋น„์Šค
  • ์ฃผ๋ฅ˜ ์„œ๋น„์Šค

๐Ÿ‘ค ์ €์ž

๐Ÿ“ƒ ๋ผ์ด์„ผ์Šค

Copyright (c) 2015 Juns Alen

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

๐Ÿ“š ์ฐธ๊ณ