MCPcopy Index your code
hub / github.com/Festify/app

github.com/Festify/app @v0.2.10

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.10 ↗ · + Follow
9 symbols 18 edges 15 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Festify mobile web app

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

Greenkeeper badge

Project status

The state of the project is considered alpha right now. Please refer to the roadmap for details.

Getting started

In order to get the app running on your machine/device please follow these steps.

Services

The app relies on the following external services. You need to obtain API credentials for these for the app to function at all.

Spotify OAuth Code Grant Flow

In order to succesfully authenticate with Spotify you need some HTTP endpoints that know your Spotify API Secret and are used for giving users long-lived access tokens.

We recommend the usage of cloud functions for this purpose. See the functions folder or the instructions in our Spotify Plugin for details.

Environment

Use this template to have all the environment variables handy for building the app and put it in a file called .env-default, it will be loaded automatically.

DOMAIN="<DOMAIN_FESTIFY_IS_HOSTED_ON>"
FIREBASE_API_KEY="<YOUR_FIREBASE_API_KEY>"
FIREBASE_AUTH_DOMAIN="<YOUR_DOMAIN>.firebaseapp.com"
FIREBASE_DB_URL="https://<YOUR_DOMAIN>.firebaseio.com"
SPOTIFY_CLIENT_ID="<YOUR_SPOTIFY_CLIENT_ID>"
SPOTIFY_TOKEN_SWAP_URL="<YOUR_TOKEN_SWAP_URL>"
SPOTIFY_TOKEN_REFRESH_URL="<YOUR_TOKEN_REFRESH_URL>"

You will also need two files from Firebase for correctly building Festify. For iOS, you will need your GoogleService-Info.plist and for Android builds you need the google-services.json file. You can obtain them from the Firebase Dev Console.

If you want to support multiple build environments, you can make Gulp download the environment-specific files .env, google-services.json and GoogleService-Info.plist. The link is given as environment variable FILE_URL_TEMPLATE. The value must be a util.format compatible format string that, when formatted with the current branch name and the file to download, makes a valid link to the given file. E.g.: https://example.com/config/%s/%s. During the build, Gulp will download these files and place them where they're needed. It will also run dotenv, so that when the .env-file is downloaded, the process environment will be updated.

Prerequisites

Install the following tools to build and run the project:

Build

Dependency injection

npm install
bower install
cordova prepare # if you want to build for native

cd ./functions && npm install && firebase deploy --only functions # Cloud functions for order calculation

Web App only

You can also just build the guest frontend, which runs in a browser, but can't play music

  • Development server: gulp serve
  • Production build: gulp build

iOS

gulp build-cordova
cordova build ios
cordova run ios

Android

gulp build-cordova
cordova build android
cordova run android

Roadmap

  • [X] Closed beta (fill this form to participate)
  • [X] Stable MVP
  • Spotify only
  • basic features
  • [ ] More releases, more features
  • Probably also more playback providers

Contributing

  1. Fork it! :octocat:
  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 :rocket:

License

This project is licensed under the LGPLv3 - see the LICENSE file for details.

Sponsors

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

Core symbols most depended-on inside this repo

buildPolymer
called by 4
scripts/gulp-polymer.js
spotifyRequest
called by 3
functions/lib/spotify-auth.js
handleSpotifyRejection
called by 3
functions/lib/spotify-auth.js
createWindow
called by 2
electron/electron.js
doExchange
called by 2
functions/lib/spotify-auth.js
serve
called by 2
scripts/gulp-watch.js
updateOrder
called by 1
functions/lib/vote-processor.js
encrypt
called by 0
functions/lib/utils.js

Shape

Function 9

Languages

TypeScript100%

Modules by API surface

functions/lib/spotify-auth.js3 symbols
functions/lib/utils.js2 symbols
scripts/gulp-watch.js1 symbols
scripts/gulp-polymer.js1 symbols
functions/lib/vote-processor.js1 symbols
electron/electron.js1 symbols

For agents

$ claude mcp add app \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact