Skip to content

wkdalsgh192/Web-Music-Recommendation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Team 6

BigData PJT

Sing About Your Emotion (SAYE) 🎢🎢🎢

| 😘 SAYE :: Sing About Your Emotion, λ‹Ήμ‹ μ˜ 감정을 λ…Έλž˜ν•˜λ‹€. μžμ„Έν•œ 기획 κ°œμš”λŠ” μ—¬κΈ°μ„œ 보싀 수 μžˆμŠ΅λ‹ˆλ‹€.


SAYE

였늘 ν•˜λ£¨μ— λŒ€ν•œ λ‹Ήμ‹ μ˜ 감정(κ³ λ―Ό,생각)을 λΆ„μ„ν•˜μ—¬, 당신을 μœ„ν•œ λ…Έλž˜ μΆ”μ²œ 및 슀트리밍 μ„œλΉ„μŠ€

μ‚¬μ΄νŠΈ λ°©λ¬Έ β€’ 데λͺ¨(demo)

screenshot

🚩 Table of Contents


πŸ€– What's SAYE?

λ…Έλž˜ 그리고 감정을 ν‚€ν¬μΈνŠΈλ‘œ ν”„λ‘œμ νŠΈλͺ…을 μƒκ°ν•˜λ˜ 쀑, 우리 μ„œλΉ„μŠ€λŠ” μ‚¬μš©μžμ˜ 감정을 μž…λ ₯λ°›μ•„ ν•΄λ‹Ή 감정에 λ§žλŠ” λ…Έλž˜λ₯Ό μΆ”μ²œν•΄μ£Όκ³  λ“€λ €μ£ΌλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ "μ‚¬μš©μžμ˜ 감정에 λŒ€ν•œ λ…Έλž˜λ₯Ό λΆˆλŸ¬μ£ΌλŠ” μ„œλΉ„μŠ€"라 생각을 ν•˜κ³  접근을 ν•˜λ‹€κ°€ μ΅œμ’…μ μœΌλ‘œ "Sing abougt your emotion" μ•½μžλ₯Ό 쀄여, SAYE λΌλŠ” ν”„λ‘œμ νŠΈλͺ…이 νƒ„μƒν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

🎨 Features

  • [μŒμ› 슀트리밍]

    • μŠ€ν¬ν‹°νŒŒμ΄μ˜ κ΅­λ‚΄ μ •μ±… 상 1λΆ„λ§Œ λ“£κΈ° κ°€λŠ₯함
    • 유튜브 μ˜μƒμ„ λ§΅ν•‘μ‹œν‚΄μœΌλ‘œ μ΅œλŒ€ν•œ 전체 μŒμ›μ„ 듀을 수 μžˆλ„λ‘ κ΅¬ν˜„(크둀링 μ‹€νŒ¨ μ‹œ 유튜브둜 이동)
    • 였λ₯Έμͺ½ Sidebar에 컨트둀러 κ΅¬ν˜„
  • [뢁마크/ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈ]

    • 뢁마크 κΈ°λŠ₯ 제곡
    • ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈ μ—¬λŸ¬κ°œ 생성/μ‚­μ œ κ°€λŠ₯
    • λ§ˆμ΄νŽ˜μ΄μ§€μ—μ„œ drag&drop으둜 λΆλ§ˆν¬μ— 있던 μŒμ›μ„ ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈμ— μΆ”κ°€ κ°€λŠ₯
  • [감정에 λ”°λ₯Έ μŒμ› μΆ”μ²œ]

    • 직접 ν…μŠ€νŠΈ μž…λ ₯ 및 STT κΈ°λŠ₯ κ΅¬ν˜„
    • μž…λ ₯λ˜λŠ” 글을 기반으둜 감정 뢄석
    • ν•΄λ‹Ή 감정과 μœ μ €μ˜ ν”Œλ ˆμ΄λ¦¬μŠ€νŠΈλ₯Ό 기반으둜 μŒμ› μΆ”μ²œ
  • [읡λͺ… κ²Œμ‹œνŒ]

    • λŒ“κΈ€ κΈ°λŠ₯
    • 읡λͺ… κ²Œμ‹œνŒμ— μž‘μ„±λœ 글을 기반으둜 감정 λΆ„μ„ν•˜μ—¬ μŒμ› μΆ”μ²œ

🐾 Architecture

Entity Relationship Diagram

ER Diagram

Sequence Diagrams

  • νšŒμ›κ°€μž… sc

  • 둜그인 sc

  • STT 검색 sc

  • 감정뢄석 검색 sc

  • 일반 검색 sc

  • κ²Œμ‹œνŒ sc


🌏 Browser Support

Chrome Chrome IE Internet Explorer Edge Edge Safari Safari Firefox Firefox
Yes 10+ Yes Yes Yes

πŸ“¦ Packages (M)

Frontend

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

Backend

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(ν”„λ‘ νŠΈμ—”λ“œ) 파일 생성 및 μΆ”κ°€ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€

  1. Git clone λ°›κΈ°
git clone https://lab.ssafy.com/s04-bigdata-sub3/s04p23d106.git
  1. λ°μ΄ν„°λ² μ΄μŠ€ μ€€λΉ„
  • 'saye' ν…Œμ΄ν„°λ² μ΄μŠ€ 생성
CREATE SCHEMA `saye`;
  • ν•„μš”ν•œ ν…Œμ΄λΈ” 생성

Database Tables

  1. [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


  1. [Frontend] .env μž‘μ„±
  • frontend 폴더 μ•„λž˜ μƒμ„±ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€
  • nginx에 λͺ…μ‹œλœ location을 λ”°λΌκ°‘λ‹ˆλ‹€
VUE_APP_SERVER_URL={λ„λ©”μΈμ£Όμ†Œ}
VUE_APP_SPRING_URL={λ„λ©”μΈμ£Όμ†Œ}/saye
VUE_APP_DJANGO_URL={λ„λ©”μΈμ£Όμ†Œ}/recommend
  1. [Frontend] λͺ¨λ“ˆ λ‹€μš΄λ‘œλ“œ
# frontend ν΄λ”λ‘œ μ΄λ™ν•΄μ„œ λ‹€μš΄
cd frontend/
yarn install
  1. [Backend] (Option) Spring bootλ₯Ό build(jar 파일 생성)
# backend ν΄λ”λ‘œ μ΄λ™ν•΄μ„œ
cd backend/
mvn -B -DskipTests -f backend

🏁 μ‹€ν–‰ν•˜κΈ°

  1. λ°±μ—”λ“œ μ‹€ν–‰
  • μƒμ„±ν•œ jar 파일 μ‹€ν–‰
java -jar [filename].jar
  • ν˜Ήμ€ war 파일 μƒμ„±ν•˜μ§€ μ•Šκ³  demon으둜 λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜κ³  μ‹Άλ‹€λ©΄ STS와 같은 IDEAμ—μ„œ Spring boot Run을 μ‹€ν–‰ν•˜κ±°λ‚˜ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 μ‹€ν–‰
mvn spring-boot:run
  1. ν”„λ‘ νŠΈμ—”λ“œ μ‹€ν–‰
yarn serve

πŸ–₯ λ°°ν¬ν•˜κΈ°

ν•΄λ‹Ή μ„œλΉ„μŠ€λŠ” AWS EC2λ₯Ό 톡해 λ°°ν¬ν•˜μ˜€κ³  Docker와 Jenkinsλ₯Ό μ΄μš©ν•΄ CI/CD κ΅¬μΆ•ν•˜μ˜€μŠ΅λ‹ˆλ‹€:

  1. AWS EC2 μΈμŠ€ν„΄μŠ€ 생성 (ubuntu)
  2. docker μ„€μΉ˜
  3. ν•„μš”ν•œ 이미지λ₯Ό docker hubλ₯Ό 톡해 μ„€μΉ˜
    1. Jenkins
    2. MySQL
  4. Jenkins와 Gitlab repository 연동
  5. MySQL μ»¨ν…Œμ΄λ„ˆμ— saye DB μŠ€ν‚€λ§ˆ 생성
  6. Nginx μ„€μ • (frontend/nginx ν΄λ”μ˜ homepage.conf)
  7. frontend, backend 폴더 μ•ˆμ— dockerfile μž‘μ„±
  8. ν”„λ‘œμ νŠΈ root μœ„μΉ˜μ— Jenkins 파일 μž‘μ„±
    1. Build and Test κ³Όμ •
    2. Build (frontend, backend)
    3. Run (μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰)
  9. docker ps λ₯Ό 톡해 frontend, backend, django μ»¨ν…Œμ΄λ„ˆκ°€ μ‹€ν–‰λ˜λŠ” 것을 확인 (Jenkins, MySQL 포함)

πŸ’¬ Documents

πŸ‘₯ Contributer

πŸš€ References

πŸ“œ License

This software is licensed under the MIT Β© SSAFY.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6