Giter Site home page Giter Site logo

nokazn / ravyd Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 2.0 8.34 MB

Spotify web client 🎵

Home Page: https://ravyd.com

License: MIT License

JavaScript 0.57% Vue 42.06% TypeScript 55.88% Dockerfile 0.31% SCSS 0.99% Shell 0.18%
fastify music nuxt nuxtjs spotify spotify-api typescript vue

ravyd's Introduction

ravyd's People

Contributors

dependabot-preview[bot] avatar nokazn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ravyd's Issues

ライブラリ (tracks) ページ

問題点

  • contextUri
  • 再生ボタン
  • テキストの折り返し
  • 余白の調整
  • vuex で管理?
  • 曲の検索
    • クライアント側で一度全データを取得して保持しておく必要がある?
  • nextUrl を保持しておいて、スクロールで随時取得
  • addedAtの条件直す
  • トラックの数が多くなるとDOM構築完了まで結構時間かかる

キューのボタンの挙動

問題

  • trackUriListを指定してトラックを再生した場合、state が保持している分のtrackUriListしか指定できない
  • related to #30

スクロールバーの領域

  • ヘッダーとその下コンテンツをスクロールさせるようにして、フッターの領域にスクロールバーを表示させたくない
  • ヘッダーの下にスクロールバーがあってほしい
  • layout/default.vue内で共通にスクロールの設定 (overflown-y: scroll;)すると全ページで遷移したときにスクロールバーの位置が共有されてしまう

アルバムの詳細ページ

すぐやる

  • 曲の長さ
  • 曲のタイトル長かったら省略
  • トラックが50以上の時の処理
    • スクロールして読み込み
  • トラックが50以上の時の再生時間
  • ボタン
    • 再生ボタン
    • シェア
    • 再生リストに追加
    • プレイリストに追加
  • copyrights
    • 🄫 か ℗ が含まれてなかったら文頭に追加
    • 文が同じならまとめる

あとでやる

  • 関連アルバム 他のリリース
  • ジャンル
  • 曲名のところに他のアーティストの名前

フッターでトラックを操作する

  • アートワーク
    • トラックの情報
  • 曲名、アーティスト名 - related to #20
  • トラックのコントロール
    • 前の曲、次の曲
    • 再生・停止
    • シャッフル
    • リピート - related to #13
  • お気に入りボタン
  • ボリューム操作
  • デバイス選択

ライブラリ (artists) ページ

問題

  • 順番に取得したときの順番がよくわからない
    • アーティストをフォローして/library/artistsページに行っても先頭に追加されるわけではないので更新分だけを再取得みたいなことができない
  • 検索
    • クライアント側で一度全データを取得して保持しておく必要がある?

再生リスト

問題点

  • Playback SDK の nextTrackList/previousTrackList では 2~3 曲ずつしか情報が返ってこない
    • アーティストの contextUri から再生する場面で、再生リストから曲を選択するとトラックのリストが変わってしまう

解決策

  • contextUri を保存しておく
  • アーティストページなどから再生を開始した場合 (trackList を配列で渡して /player/playした場合) は再生リストを独自で保持しておく

その他追加したいこと

  • 再生時間を表示
  • listItem をクリックしたときではなく、再生ボタンをクリックしたときに再生し、それ以外はアルバムページに飛ばす

プレイリストの詳細ページ

すぐやる

  • 背景色
  • スクロールして更新
  • 自分のプレイリストの場合は編集できるようにする
    • お気に入りボタンの箇所を編集ボタンにする
    • 編集されたら表示も更新
  • 曲の保存状態の反映
  • メニュー
    • 公開/非公開
    • 削除? (APIエンドポイントが存在しない?) unfollow
    • 複製
  • 曲が 0 のとき
    • 再生ボタン無効化
    • contains を確認しない
  • author リンクの幅
  • 非公開のマーク

あとでやる

  • メニュー
    • プレイリストradio
    • シェア

ディレクトリ構成

  • serverclientでディレクトリ分ける
  • client内に Nuxt のプロジェクトを格納する
    • nuxt.config.tsrootDirを変更する

プレイリストの新規作成

やること

  • 画像アップロード
    • なぜか 403 エラーが出る
  • 作成、アップロード失敗したときのメッセージトースト
  • バリデーション
    • 名前
      • 必須
    • 説明
      • 改行コード
  • プレイリスト一覧を更新

カードのスタイル

About

全般

  • hover したときメニューボタンを右に表示
  • hover したときお気に入りボタンを左に表示
  • サイズの範囲
    • min & max または size の指定にする

ReleaseCard

  • トラックのカードの場合、URL のハッシュにトラックの番号埋め込む

PlaylistCard

  • descriptionをある程度のところで省略
    • Firefox for Android, IE 対応

ArtistCard

  • アーティストのカードで画像がない場合の overlay
  • カード全体のリンク

プレイリスト再生中に QueueButton から操作すると再生できない曲がある

問題

  • related to #52
  • 以前urisを指定して再生していた場合に初回ページ読み込み後に直接キューを操作したときのように、customTrackUriListが保持されていない状態で TrackQueueButton からトラックを操作した場合に発生
    • offseturi での指定になる場合があり、プレイリストの再生時に 403 エラーが発生しうる
    • playback-sdk から提供されるトラックのリストでurisパラメータを書き換えてしまう

解決

  • 初回読み込み時にキューを取得する
    • エンドポイントが現状存在しない

アーティストの詳細ページ

すぐにやる

  • ディスコグラフィー一覧の更に表示ボタン
    • スクロールして読み込み
    • クエリパラメータで表示/非表示、offset の状態を持つ
  • 関連アーティスト

あとでやる

  • 人気のトラック
    • フィーチャーされたアーティストの表示改善
      • ページで表示しているアーティスト以外のアーティストを表示したい
  • 最新のリリース
  • ディスコグラフィー
    • アルバム
    • シングル・EP
    • 参加作品
  • 関連プレイリスト
  • ジャンル
  • アーティストの詳細情報 (Wikipedia とかから引用できないか)

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.