유튜브 플레이어
  • 유튜브 플레이어 작동 예시

    # flow


    image


    # stack


    react-player, nextjs, tailwindcss, zustand
    localstorage 사용
    spring, youtube data api v3, mysql

    # erd


    image


    # 기본 UI


    📌 사이드바에서 재생, 정지, 재생바 이동 가능
    📌 아래 현재 재생 노래를 클릭하면 모달화면

    image


    # 플레이리스트 create


    📌 제목만 넣으면 인증된 유저 id와 같이 DB에 저장

    image


    # 유튜브URL create


    📌 유튜브 URL를 넣으면 목록에 추가

    유튜브 url만 있으면 작동은 하는데 제목이나, 태그 이미지 등을 받아오기 위해서 youtube data api v3를 사용해서 백엔드에서 추가정보를 받아DB에 저장

    image


    # 유튜브URL read(선택 후 실행)


    📌 재생을 하려다가 실패를 하는 경우는 유튜브에서 받아오더라도 권한 문제로 실패하는 것으로 보인다. 이럴 경우 삭제를 해주어야 한다.

    url 경로 복사 가능

    로컬스토리지에 노래정보, 노래플레이리스트, 재생방법, 반복재생 등 저장

    DB에서 재생 목록을 불러오지 않아도 로컬스토리지 정보로 실행 가능

    image


    # 유튜브URL delete


    image


    # 플레이리스트 delete


    image



    # 기타 기능


    이전 곡 재생, 다음 곡 재생, 임의 재생, 순차재생, 1곡재생, 1곡반복재생, 전체반복재생

    # 만들면서 했던 고민


    ## 1. UI, 반응형, 애니메이션 등을 고려하여 제작,



    update 기능은 불필요 할것이라고 판단
    create를 위해서 추가로 모달창을 열어야 하나 고민하였지만 초기화면에서는 플레이리스트 추가할 수 있게하고, 플레이리스트를 클릭하면 노래를 추가할 수 있게 제작

    ## 2. 재생되지 않는 노래



    재생을 해도 안되는 노래는 재생할 때 판단이 가능해서 재생을 하면 제목을 변경해서 사용자가 삭제할 수 있게 제작

    ## 개선할 점



    1. 노래목록 스크롤 문제 : 현재 스크롤을 감춰놓아서 노래목록을 직접 아래로 내려야 한다.

    2. 랜덤 재생 문제 : 현재 실행한 곡도 랜덤 요소에 포함이 되어있다.

    3. 여러 브라우저 창이 열린 경우, 한 화면에서 재생을 하게 되거나 노래 등이 바뀌어도 다른 브라우저에서는 변경이 되지 않는다.

    4. 등록 및 삭제 시 로딩 스피너 추가 필요

    5. 로컬스토리지 삭제시 어떻게 처리되는지 확인 필요