Team 6
BigData PJT
| π SAYE :: Sing About Your Emotion, λΉμ μ κ°μ μ λ Έλνλ€. μμΈν κΈ°ν κ°μλ μ¬κΈ°μ λ³΄μ€ μ μμ΅λλ€.
μ€λ ν루μ λν λΉμ μ κ°μ (κ³ λ―Ό,μκ°)μ λΆμνμ¬, λΉμ μ μν λ Έλ μΆμ² λ° μ€νΈλ¦¬λ° μλΉμ€
μ¬μ΄νΈ λ°©λ¬Έ β’ λ°λͺ¨(demo)
λ Έλ κ·Έλ¦¬κ³ κ°μ μ ν€ν¬μΈνΈλ‘ νλ‘μ νΈλͺ μ μκ°νλ μ€, μ°λ¦¬ μλΉμ€λ μ¬μ©μμ κ°μ μ μ λ ₯λ°μ ν΄λΉ κ°μ μ λ§λ λ Έλλ₯Ό μΆμ²ν΄μ£Όκ³ λ€λ €μ£Όλ μλΉμ€μ λλ€. κ·Έλμ "μ¬μ©μμ κ°μ μ λν λ Έλλ₯Ό λΆλ¬μ£Όλ μλΉμ€"λΌ μκ°μ νκ³ μ κ·Όμ νλ€κ° μ΅μ’ μ μΌλ‘ "Sing abougt your emotion" μ½μλ₯Ό μ€μ¬, SAYE λΌλ νλ‘μ νΈλͺ μ΄ νμνκ² λμμ΅λλ€.
-
[μμ μ€νΈλ¦¬λ°]
- μ€ν¬ν°νμ΄μ κ΅λ΄ μ μ± μ 1λΆλ§ λ£κΈ° κ°λ₯ν¨
- μ νλΈ μμμ λ§΅νμν΄μΌλ‘ μ΅λν μ 체 μμμ λ€μ μ μλλ‘ κ΅¬ν(ν¬λ‘€λ§ μ€ν¨ μ μ νλΈλ‘ μ΄λ)
- μ€λ₯Έμͺ½ Sidebarμ 컨νΈλ‘€λ¬ ꡬν
-
[λΆλ§ν¬/νλ μ΄λ¦¬μ€νΈ]
- λΆλ§ν¬ κΈ°λ₯ μ 곡
- νλ μ΄λ¦¬μ€νΈ μ¬λ¬κ° μμ±/μμ κ°λ₯
- λ§μ΄νμ΄μ§μμ drag&dropμΌλ‘ λΆλ§ν¬μ μλ μμμ νλ μ΄λ¦¬μ€νΈμ μΆκ° κ°λ₯
-
[κ°μ μ λ°λ₯Έ μμ μΆμ²]
- μ§μ ν μ€νΈ μ λ ₯ λ° STT κΈ°λ₯ ꡬν
- μ λ ₯λλ κΈμ κΈ°λ°μΌλ‘ κ°μ λΆμ
- ν΄λΉ κ°μ κ³Ό μ μ μ νλ μ΄λ¦¬μ€νΈλ₯Ό κΈ°λ°μΌλ‘ μμ μΆμ²
-
[μ΅λͺ κ²μν]
- λκΈ κΈ°λ₯
- μ΅λͺ κ²μνμ μμ±λ κΈμ κΈ°λ°μΌλ‘ κ°μ λΆμνμ¬ μμ μΆμ²
Yes | 10+ | Yes | Yes | Yes |
Name | Description |
---|---|
@gsap |
Professional-grade animation for the modern web |
@lodash |
The Lodash library exported as Node.js modules. |
@get-youtube-id |
Parse a youtube url returning the video ID |
@vue-youtube |
Wrapper of YouTube IFrame Player API (YIPA) |
@vue-lottie |
Lottie Animation View for Vue |
@lottie-web |
Lottie for Web, Android, iOS, React Native, and Windows |
@sweetalert2 |
A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes. Zero dependencies. |
@vue-audio-recorder |
Audio recorder for Vue.js. It allows to create, play, download and store records on a server |
@vue-cookies |
A simple Vue.js plugin for handling browser cookies |
@vuedraggable |
allowing drag-and-drop and synchronization with view model array. |
---Basic--- | |
@axios |
Promise based HTTP client for the browser and node.js |
@vuetify |
Vue Material Component Framework |
@vue-router |
vue-router 3.0 which works only with Vue 2.0 |
@vuex |
Vuex is a state management pattern + library for Vue.js applications |
@vuex-persistedstate |
Promise based HTTP client for the browser and node.js |
Name | Description |
---|---|
$mysql |
MySQL connector |
$mybatis |
XML μμ μλ μ λν μ΄μ μ μ¬μ©νμ¬ μ μ₯ νλ‘μμ λ SQL λ¬ΈμΌλ‘ κ°μ²΄λ€μ μ°κ²° |
$lombok |
getter, setter, toString λ±μ λ©μλ μμ± μ½λλ₯Ό μ€μ¬μ£Όλ μ½λ λ€μ΄μ΄νΈ λΌμ΄λΈλ¬λ¦¬ |
$jjwt |
JWT ν ν° μμ± λ° JWT ν ν° νμ±, κ²μ¦μ ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬ |
$json |
JavaScript Object Notation; κ²½λ(Lightweight)μ DATA-κ΅ν νμ |
$jackson |
JSON Convertor(컨νΈλ‘€λ¬μμ μ λ¬ν DTOλ°μ΄ν°λ₯Ό JSONμΌλ‘ λ³κ²½νκΈ° μν΄ μ¬μ© |
$jython |
For use python in spring |
$swagger |
REST μΉ μλΉμ€λ₯Ό μ€κ³, λΉλ, λ¬Έμν, μλΉνλ μΌμ λμμ£Όλ λν λꡬ μνκ³μ μ§μμ λ°λ μ€ν μμ€ μννΈμ¨μ΄ νλ μμν¬ |
$spotify |
Spotify Web api |
$youtube |
Google api services for youtube |
DB μμ±νκ³ μ€μ νμΌ application.properties(λ°±μλ), .env(νλ‘ νΈμλ) νμΌ μμ± λ° μΆκ°νμλ©΄ λ©λλ€
- Git clone λ°κΈ°
git clone https://lab.ssafy.com/s04-bigdata-sub3/s04p23d106.git
- λ°μ΄ν°λ² μ΄μ€ μ€λΉ
- 'saye' ν μ΄ν°λ² μ΄μ€ μμ±
CREATE SCHEMA `saye`;
- νμν ν μ΄λΈ μμ±
- [Backend] application.properties μ€μ
- backend\src\main\resources ν΄λ μλ μμ±νμλ©΄ λ©λλ€
- mysql λλ©μΈκ³Ό μμ΄λ/λΉλ² μμ±
server.port=8000
server.servlet.context-path=/saye
# for social login
spring.profiles.include=oauth
## JSP
#spring.mvc.view.prefix=/WEB-INF/views/
#spring.mvc.view.suffix=.jsp
# fileupload
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=30MB
# db
spring.datasource.url=jdbc:mysql://{λλ©μΈμ£Όμ}:3306/saye?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username={DB κ³μ μμ΄λ}
spring.datasource.password={DB κ³μ λΉλ°λ²νΈ}
mybatis.type-aliases-package=com.gokchu.saye.repository.dto
mybatis.mapper-locations=mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
- [Frontend] .env μμ±
- frontend ν΄λ μλ μμ±νμλ©΄ λ©λλ€
- nginxμ λͺ μλ locationμ λ°λΌκ°λλ€
VUE_APP_SERVER_URL={λλ©μΈμ£Όμ}
VUE_APP_SPRING_URL={λλ©μΈμ£Όμ}/saye
VUE_APP_DJANGO_URL={λλ©μΈμ£Όμ}/recommend
- [Frontend] λͺ¨λ λ€μ΄λ‘λ
# frontend ν΄λλ‘ μ΄λν΄μ λ€μ΄
cd frontend/
yarn install
- [Backend] (Option) Spring bootλ₯Ό build(jar νμΌ μμ±)
# backend ν΄λλ‘ μ΄λν΄μ
cd backend/
mvn -B -DskipTests -f backend
- λ°±μλ μ€ν
- μμ±ν jar νμΌ μ€ν
java -jar [filename].jar
- νΉμ war νμΌ μμ±νμ§ μκ³ demonμΌλ‘ λ‘컬μμ μ€ννκ³ μΆλ€λ©΄ STSμ κ°μ IDEAμμ Spring boot Runμ μ€ννκ±°λ μλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ€ν
mvn spring-boot:run
- νλ‘ νΈμλ μ€ν
yarn serve
ν΄λΉ μλΉμ€λ AWS EC2λ₯Ό ν΅ν΄ λ°°ν¬νμκ³ Dockerμ Jenkinsλ₯Ό μ΄μ©ν΄ CI/CD ꡬμΆνμμ΅λλ€:
- AWS EC2 μΈμ€ν΄μ€ μμ± (ubuntu)
- docker μ€μΉ
- νμν μ΄λ―Έμ§λ₯Ό docker hubλ₯Ό ν΅ν΄ μ€μΉ
- Jenkins
- MySQL
- Jenkinsμ Gitlab repository μ°λ
- MySQL 컨ν
μ΄λμ
saye
DB μ€ν€λ§ μμ± - Nginx μ€μ (frontend/nginx ν΄λμ homepage.conf)
- frontend, backend ν΄λ μμ dockerfile μμ±
- νλ‘μ νΈ root μμΉμ Jenkins νμΌ μμ±
- Build and Test κ³Όμ
- Build (frontend, backend)
- Run (컨ν μ΄λ μ€ν)
docker ps
λ₯Ό ν΅ν΄ frontend, backend, django 컨ν μ΄λκ° μ€νλλ κ²μ νμΈ (Jenkins, MySQL ν¬ν¨)