Honey-Combo
๋ 1์ธ ๊ฐ๊ตฌ๋ฅผ ์ํ ์์ ์กฐํฉ์ ๊ณต์ ํ๊ธฐ ์ํ ์์
๋คํธ์ํฌ ์๋น์ค(Social Networking Service, SNS) ์
๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ์๋ฆฌํ ์ฌ์ง์ ํผ๋๋ก ๊ฒ์ํด ์ฌ๋ฌ ์ฌ์ฉ์๋ค๊ณผ ๊ณต์ ํ๋ฉฐ ์ํตํ ์ ์์ต๋๋ค.
- Common Service
- ๊ฟ์กฐํฉ ํผ๋ ๊ฒ์, ๋๊ธ, ์ข์์ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ ๋ค ๊ฐ ํ๋ก์ฐ ๋ฐ ํ๋ก์ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ ์ ์ฑ๋ณ๊ณผ ๋์ด๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํผ๋ ๊ฒ์, ํผ๋ ์ข์์, ํผ๋ ์์ธ ์กฐํ, ๊ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํด ํผ๋๋ฅผ ์ถ์ฒํฉ๋๋ค.
- Contest Service
- ๊ด๋ฆฌ์๊ฐ ๋งค์ฃผ ํ๋์ ์ฃผ์ ๋ก ์ฝํ ์คํธ๋ฅผ ์ด์ด ์ ์ ๋ค์ด ์ต๋ช ์ผ๋ก ์ฐธ์ฌํฉ๋๋ค.
- ์ข์์๋ฅผ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ 3๊ฐ์ ๊ฟ์กฐํฉ์ ๊ฒ์ํ ์ ์ ์๊ฒ ํฌ์ธํธ๋ฅผ ๋ถ์ฌํฉ๋๋ค.
- ์ฐจํธ๋ฅผ ์ด์ฉํด ์ฝํ ์คํธ ํผ๋์ ์ข์์๋ฅผ ๋๋ฅธ ์ ์ ์ ์ฑ๋ณ๊ณผ ๋์ด๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํฉ๋๋ค.
- Liquors Service
- ๊ด๋ฆฌ์๊ฐ ๋งค์ฃผ ์๋ก์ด ์ฃผ๋ฅ ์กฐํฉ์ ๊ฒ์ํฉ๋๋ค.
์ฌ๊ธฐ๋ฅผ ํด๋ฆญํด ์ฌ์ดํธ๋ฅผ ํ์ธํ์ธ์ ๐
์๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅด์๋ฉด ํ๋ก์ ํธ๋ฅผ ์คํ์ํฌ ์ ์์ต๋๋ค.
-
๊นํ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํฉ๋๋ค.
$ git clone https://github.com/YongjoonSeo/1st_pjt_301.git
-
yarn์ ์ค์นํฉ๋๋ค.
$ yarn install
Honey-combo
์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์คํํฉ๋๋ค:
-
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์ ํฉ๋๋ค.
-
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 : {๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ ๋น๋ฐ๋ฒํธ}
-
-
๋ฐฑ์๋ ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
-
IDE์ import ํ ์คํํฉ๋๋ค.
: IntelliJ, STS์ ๊ฐ์ IDE๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ,
backend
๋ฅผ importํ์ฌ ์คํํฉ๋๋ค. -
warํ์ผ์ ์์ฑ ํ ์คํํฉ๋๋ค.
$ gradlew -DskipTests=true build
$ java -jar [filename].war
-
-
ํ๋ก ํธ์๋๋ฅผ ์คํํฉ๋๋ค.
$ yarn serve
ํด๋น ์๋น์ค๋ AWS EC2
๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐํฌํ์์ต๋๋ค. ์ฌ์ ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ AWS EC2
๊ณ์ ์ ์์ฑํ์ธ์.
๋ฐฐํฌ๋ฅผ ํ๊ธฐ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์คํํฉ๋๋ค:
- AWS EC2 ์ธ์คํด์ค ์์ฑ
- JDK ์ค์น (ํ๊ฒฝ๋ณ์ ์ค์ )
- DB ์ค์น (ํด๋น ํ๋ก์ ํธ์์ MySQL ์ฌ์ฉ)
- gradle wrapper์ ์ํ ๋ฒ์ ์ค์ (6.0.0 ์ด์)
- gradle clean build ์คํ (war ํ์ผ ์์ฑ)
- yarn build (dist ํด๋ ์์ฑ)
- 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๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ ์์ ์ ๋๋ค.
- ์์ฐ ์์
- ๋ก๊ทธ์ธ, ํผ๋, ๋๊ธ, ์ข์์, ํ๋ก์ฐ, ์๋ฆผ ์๋น์ค
- ์ฝํ ์คํธ ์๋น์ค
- ์ฃผ๋ฅ ์๋น์ค
- ๊น์ธํ - Sehoon Kim - [email protected]
- ๊น์๋น - Soonbeen Kim - [email protected]
- ๋ฅ์น๋ฏผ - Seungmin Ryu - [email protected]
- ์ด์ ์ - Sunsoo Lee - [email protected]
- ์์ฉ์ค - Yongjoon Seo - [email protected]
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.