All Projects → Festify → App

Festify / App

🎉 Festify Host & Client

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to App

Musaicfm
Screensaver inspired by Apple’s inbuilt iTunes Screensaver. It can display Artwork by Spotify or last.fm Profile Data.
Stars: ✭ 144 (-54.57%)
Mutual labels:  music, spotify
Obscurify
Find out more about your music taste and compare it to others' with Obscurify
Stars: ✭ 200 (-36.91%)
Mutual labels:  music, spotify
Musicnow
CLI tool to download songs with metadata.
Stars: ✭ 146 (-53.94%)
Mutual labels:  music, spotify
Spotifile
FUSE file system for Spotify
Stars: ✭ 133 (-58.04%)
Mutual labels:  music, spotify
Spotiflyer
Spotify/Gaana/Youtube Music Downloader For Android!
Stars: ✭ 231 (-27.13%)
Mutual labels:  music, spotify
Listen Now
Listen-now, 提供了多音乐平台的音乐搜索、播放、歌单播放、同步平台歌单到本地数据库,并计划开发智能音乐推荐系统。listen-now主要由学生层级的同学一起开发。
Stars: ✭ 139 (-56.15%)
Mutual labels:  music, spotify
Spotify Now Playing
Spotify now playing information and control popup for macOS menu bar
Stars: ✭ 171 (-46.06%)
Mutual labels:  music, spotify
Sonos Web
Web interface for Sonos audio systems
Stars: ✭ 114 (-64.04%)
Mutual labels:  music, spotify
Singlespotify
🎵 Create Spotify playlists based on one artist through the command line
Stars: ✭ 254 (-19.87%)
Mutual labels:  music, spotify
Spotitube
Synchronize your Spotify collections downloading from external providers
Stars: ✭ 250 (-21.14%)
Mutual labels:  music, spotify
Deezer Downloader
Download music from Deezer with a nice front end
Stars: ✭ 127 (-59.94%)
Mutual labels:  music, spotify
Plylst
Smart playlists for Spotify! Stop relying on fancy pants algorithms to organize your library and instead build playlists the way you want.
Stars: ✭ 301 (-5.05%)
Mutual labels:  music, spotify
Sysdash
A simple and clean system monitoring skin for Rainmeter.
Stars: ✭ 128 (-59.62%)
Mutual labels:  music, spotify
Shpotify
A command-line interface to Spotify.
Stars: ✭ 1,782 (+462.15%)
Mutual labels:  music, spotify
Ytmdl
A simple app to get songs from YouTube in mp3 format with artist name, album name etc from sources like iTunes, Spotify, LastFM, Deezer, Gaana etc.
Stars: ✭ 2,070 (+553%)
Mutual labels:  music, spotify
Coverify
🎧 Design fresh album cover for your Spotify playlists
Stars: ✭ 167 (-47.32%)
Mutual labels:  music, spotify
Spotspot
A Spotify mini-player for macOS
Stars: ✭ 110 (-65.3%)
Mutual labels:  music, spotify
Zenmusic
Slack / Sonos / Spotify / Node.js - Control Sonos through #Slack
Stars: ✭ 113 (-64.35%)
Mutual labels:  music, spotify
Swdc Vscode Musictime
A VS Code extension to discover the most productive music to listen to as you code
Stars: ✭ 242 (-23.66%)
Mutual labels:  music, spotify
Lyricsx
🎶 Ultimate lyrics app for macOS.
Stars: ✭ 3,251 (+925.55%)
Mutual labels:  music, spotify

Festify

Greenkeeper badge Build Status

Festify is a free Spotify-powered app that lets your guests choose which music should be played using their smartphones. festify.rocks

Building

Dependencies

  1. nodejs, TypeScript and yarn: Festify is written in TypeScript for better scalability and fewer bugs. We use yarn for package management.
  2. Firebase: Festify is built upon Firebase Realtime Database and Firebase Cloud Functions. Set up a dedicated and paid Firebase project. For user management, you need to enable at least anonymous authentication, and if you want cheat-prevention to work, also authentication with GitHub, Facebook, Twitter, and Google+. In that case, you also need to set up and register the respective app / developer accounts with these services.
  3. Spotify: Festify plays music from Spotify. Set up a Spotify Developer Application (you need a Spotify Premium account) and configure the OAuth redirect URL. Usually at least http://localhost:3000 is needed for a dev-environment. 3000 is the port the dev-server started with yarn serve runs on, but this can be any port you like, if you configure the dev server accordingly.
  4. Fanart.tv & Sentry: Festify displays Fanart from fanart.tv in the TV Mode and uses Sentry for error reporting. You require an account for both services.

Environment Files

Festify loads configuration variables though JS / TS / JSON files included in the build process. All following paths are relative to the repository root.

  • common.config.js: This file includes common configuration values that don't deserve their own file. Currently this is the Sentry URL and the Fanart.tv API key. It looks like this:

    export const FANART_TV_API_KEY = "FANART_API_KEY_HERE";
    export const SENTRY_URL = "SENTRY_URL_HERE";
    
  • firebase.config.js: This file contains a simplified form of the config snippet you get when you add Firebase to a web application.

    export default {
        apiKey: "FIREBASE_API_KEY",
        authDomain: "FIREBASE_AUTH_DOMAIN",
        databaseURL: "FIREBASE_DATABASE_URL",
        projectId: "FIREBASE_PROJECT_ID",
    };
    
  • spotify.config.js: This file contains the required configuration for authorization with Spotify and playback.

    export const CLIENT_ID = "YOUR_SPOTIFY_APPLICATION_CLIENT_ID";
    
  • functions/service-account.json: This is the Firebase service account file obtained directly from the web console. You can obtain it by going to Project Settings > Service Accounts > Firebase Admin SDK > Generate new private key.

  • functions/spotify.config.ts: This file contains Spotify configuration for the cloud functions.

    export const CLIENT_ID = "YOUR_SPOTIFY_APPLICATION_CLIENT_ID";
    export const ENCRYPTION_SECRET = "REFRESH_TOKEN_ENCRYPTION_KEY - PLEASE GENERATE";
    export const CLIENT_SECRET = "YOUR_SPOTIFY_APPLICATION_CLIENT_SECRET";
    

Since all config values (except for the service-account.json) are loaded through standard ES modules machinery, building the project will notify you if something is missing.

Building & Serving

The package.json contains all necessary commands for building Festify.

  • build: Compiles the TypeScript to JS and bundles all JS to a single file. You can then deploy the files in /build to a webserver of choice to run Festify.
  • fix: Attempts to automatically fix linter errors.
  • lint: Lints the TS sources with tslint.
  • prepare-env: Used in CI environments to load environment files from branch-name-suffixed environment variables.
  • serve: Starts the rollup dev-server serving a local instance of Festify on port 3000. Also supports live-reloading. Ensure you deploy the project to firebase before using the dev server because Festify depends on cloud functions to be present!

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-improvement
  3. Make your changes and test them!
  4. Commit & push your changes
  5. Submit a pull request 🚀

License

LGPLv3

Sponsors

These people helped us bring Festify to life. Thank you!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].