Giter VIP home page Giter VIP logo

human-love-music-server's Introduction

human-love-music-server

ํœด๋จผ๋“ค์„ ์œ„ํ•œ ์Œ์•… ๊ณต์œ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜. ํœด๋ฎค ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘โค๏ธ๐ŸŽถ

๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ

1. node 14 ๋ฒ„์ „์„ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.

14.17.6 ๋ฒ„์ „์—์„œ ๋™์ž‘์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

2. ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

yarn install

3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

.env.sample ํŒŒ์ผ์„ ๋ณด๊ณ  ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • .env: ๋กœ์ปฌ ํ™˜๊ฒฝ
  • .env.production: ์šด์˜ ํ™˜๊ฒฝ
PORT= # ์•ฑ์ด ์‹คํ–‰๋  ํฌํŠธ
AUTH_JWT_SECRET= # (ํ˜„์žฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

# DB ์—ฐ๊ฒฐ ์ •๋ณด
DB_HOST=
DB_PORT=
DB_NAME=
DB_USERNAME=
DB_PASSWORD=

# ์Šฌ๋ž™ ๋ด‡ ์„ค์ • ํŽ˜์ด์ง€์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
SLACK_SIGNING_SECRET= # Basic Information - App Credentials - Signing Secret
SLACK_BOT_TOKEN= # OAuth & Permissions - Bot User OAuth Token

# ์Šฌ๋ž™ ๋ด‡์ด ์ฒ˜๋ฆฌํ•  ๋Œ€์ƒ ์ฑ„๋„ ID. ์ฑ„๋„ ์šฐํด๋ฆญ - Open channel details - ํ•˜๋‹จ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
SLACK_DIGEST_TARGET_CHANNEL= # digest๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์ง‘ํ•  ๋Œ€์ƒ ์ฑ„๋„
SLACK_QUEUE_ALLOW_CHANNEL= # ๋ผ๋””์˜ค ๊ณก ์ถ”๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ฑ„๋„

YOUTUBE_API_KEY= # Google API ์ฝ˜์†”์„ ํ†ตํ•ด ๋ฐœ๊ธ‰
SOUNDCLOUD_API_KEY= # SoundCloud ์›น์—์„œ ์•„๋ฌด ๋ฆฌํ€˜์ŠคํŠธ ํ›„ url์˜ query params๋กœ ์ง€์ •๋œ `client_id`๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

4. ์ดˆ๊ธฐ DB์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

DB ์ปค๋„ฅ์…˜ ์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•œ ํ›„ ์•„๋ž˜ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

npx mikro-orm schema:update --run

๋ผ๋””์˜ค ๊ธฐ๋Šฅ ์ž‘๋™์— ํ•„์š”ํ•œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (์•„์ง ์‹œ๋”ฉ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

> insert into playlist

id, created_at, updated_at, playlist_type, title, description
PJTHllahrNXiNQF, <ํ˜„์žฌ์‹œ๊ฐ>, <ํ˜„์žฌ์‹œ๊ฐ>, RADIO, Radio, <null>

> insert into radio

id, room_name, playlist_id, current_track_id, current_track_started_at, current_track_duration
ToOE5kKoO3XC8m0, main, PJTHllahrNXiNQF, <null>, <null>, <null>

5. ์•ฑ์„ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

yarn start

# ํ˜น์€ watch mode
yarn start:dev

๋นŒ๋“œ์™€ ๋ฐฐํฌ

yarn build๋กœ ์‹คํ–‰ํ•˜๊ณ  yarn start:prod๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ปค๋งจ๋“œ๋กœ ์•ฑ ์‹คํ–‰์‹œ .env.production ํŒŒ์ผ์„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Node ๋Ÿฐํƒ€์ž„์„ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์— ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌ & ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. ๊ฐ€๊ธ‰์  ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ํ™˜๊ฒฝ์—์„œ ์•ฑ์„ ์šด์šฉํ•˜๋Š” ํ•ด์•ผ ์˜ˆ์•ฝ ์ž‘์—… ๊ด€๋ จ ์ด์Šˆ๋ฅผ ์ตœ์†Œํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ec2 ๋“ฑ)

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… & ๊ด€๋ฆฌ

๋ผ๋””์˜ค ํ๊ฐ€ ๊ผฌ์ธ ๊ฒฝ์šฐ(์žฌ์ƒ์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋‹ค์Œ ๊ณก์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š์Œ)

  • ์˜ˆ์•ฝ ์ž‘์—…์ด setTimeout(์ธ๋ฉ”๋ชจ๋ฆฌ)๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์— ๋ฐฐํฌ ๋ฐ ์šด์šฉ์‹œ, ํ˜น์€ ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ํ™˜๊ฒฝ์—์„œ ํ ๊ด€๋ฆฌ์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ถ๊ทน์ ์œผ๋กœ๋Š” ๋ฉ”์‹œ์ง€ํ ๋„์ž…์„ ํ•ด์•ผ ์•ˆ์ •ํ™”๋ฉ๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ์ƒํƒœ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ˆ์ฐจ๋กœ ์ผ์‹œ์  ํ•ด์†Œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    1. DB์—์„œ radio ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋‹จ์ผ ๋กœ์šฐ์˜ current_track_id, current_track_started_at, current_track_duration์˜ ๊ฐ’์„ ๋ชจ๋‘ null๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    2. ํ•ด๋‹น radio.playlist..tracks๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    3. ์•ฑ์„ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.

ํšŒ์‚ฌ ๋ฉค๋ฒ„ ๋ณ€๋™์ด ์žˆ๋Š” ๊ฒฝ์šฐ

PUT /slack/members๋ฅผ ์‹คํ–‰ํ•˜์—ฌ slack_member ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

human-love-music-server's People

Contributors

humanscape-josh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.