ํ๋ก์ ํธ ๊ธฐ๋ณธ ์ธํ
1. ๊ธฐ๋ณธ ํ๊ฒฝ ์ธํ
Portfolio-For-Developers
ํ๋ก์ ํธ ๋ฐฑ์๋&ํ๋ก ํธ ๊ธฐ๋ณธ ํ๊ฒฝ ์ธํ
์ ํฌ์คํ
ํ๋ค.
front๋ vuetify๋ฅผ ์ด์ฉํ vue.js, api๋ ์คํ๋ง ๋ถํธ๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ ๋ค.
์ฐ์ ๋ก๊ทธ์ธ ๊ตฌํ์ ๋จผ์ ํ๊ณ ๊ทธ ์ดํ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํ, ๊ทธ ๋ค์ ๊ฐ๋ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ๋ฆด ์ ์๋ ๊ฒ์ํ์ ๋ง๋ค๋ ค๊ณ ํ๋ค.
๋ฐฑ์๋ ์ด๊ธฐ ์ธํ
spring initializr
๋ฅผ ์ด์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ค๋ค.
JPA, Spring Security, Spring Web, Lombok, Devtools, MySql์ ์ถ๊ฐํด ์ฃผ์๋ค.
build.gradle
implementation 'io.springfox:springfox-swagger2:2.6.1'
implementation 'io.springfox:springfox-swagger-ui:2.6.1'
implementation 'io.jsonwebtoken:jjwt:0.9.1'
compile group: 'javax.validation', name: 'validation-api'
compile group: 'org.hibernate', name: 'hibernate-validator', version: '6.1.0.Final'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '1.2.0.RELEASE'
build.gradle์ ์ถ๊ฐ๋ก Swagger, jjwt, validation-api, spring-boot-starter-mail๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด ์ฃผ์๋ค.
application.yml
server:
port: 5000
servlet:
context-path: /
encoding:
charset: UTF-8
enabled: true
force: true
spring:
profiles:
include: key
active: local
devtools:
livereload:
enabled: true
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
application.yml
์ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค๊ณ DB์ ๋ํ ์ ๋ณด์ jwt key์ ๋ํ ์ ๋ณด๋ application-key.yml
, application-local.yml
๋ฅผ ๋ฐ๋ก ๋ง๋ ๋ค ์ด๊ทธ๋
ธ์ด ํ์๋ค.
์ ์
5000๋ฒ ํฌํธ๋ก ์ ์ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก ์คํ๋จ์ ํ์ธํ ์ ์๋ค.
ํ๋ก ํธ์๋ ์ด๊ธฐ ์ธํ
vue create front-end
๋ช ๋ น์ด๋ฅผ ํตํด front-end๋ฅผ ๋ง๋ค๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ์ฌ ์งํํ๋ค.
๋ํดํธ ์ค์ ์์ Vuex์ Router๋ ์ถ๊ฐํ์๊ณ , Prettier์ Lint on save๋ฅผ ์ ์ฉํ๋ค.
cd front-end
vue add vuetify
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก ํ๋ก ํธ์๋ ํ์ผ๋ก ๋ค์ด๊ฐ ๋ค vuetify๋ฅผ ์ถ๊ฐํ๋ค.
vuetify ์ถ๊ฐ๋ ๋ํดํธ๋ก ์งํํ์๋ค.
.eslintrc
module.exports = {
root: true,
env: {
node: true
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint"
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"prettier/prettier":[
"warn",
{
"semi": false,
"trailingComma":"none",
}
]
}
};
.eslintrc๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์๋ค.semi
, trailingComma
์ ๋ํ ์ต์
์ ์์ ํ ๊ฒ์ด๋ค.
vue.config.js
module.exports = {
transpileDependencies: ["vuetify"],
devServer: {
port: process.env.VUE_APP_PORT || 3000
}
}
vue.config.js๋ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ฌ ํฌํธ ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ค.
์ ์
3000๋ฒ ํฌํธ๋ก ์ ์ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก ์คํ๋จ์ ํ์ธํ ์ ์๋ค.