Find a file
2021-04-17 14:14:22 +01:00
.github/workflows Add github action 2021-03-28 19:02:50 +01:00
app Fix search 2021-04-17 04:49:06 +01:00
bootstrap Updates following 5.7 shift 2021-02-14 17:59:34 +00:00
config Update elasticsearch.php config file to latest version 2021-03-29 01:15:22 +01:00
database Biggus Upgradus 2021-03-27 03:51:45 +00:00
docker Initial docker sync setup and documentation of the new supported dev env methods 2021-03-31 01:04:17 +01:00
documentation #25: Implemented UI for managing email subscriptions. 2016-12-24 18:11:42 -08:00
public Shift core files 2021-02-14 19:11:13 +00:00
resources Biggus Upgradus 2021-03-27 03:51:45 +00:00
routes Fix routes 2021-02-14 19:59:07 +00:00
storage Ignore temporary framework files 2021-02-14 19:11:16 +00:00
tests Shift to class based factories 2021-02-14 19:11:17 +00:00
tools Moved nginx's and MySQL's logs into the "storage" directory. 2015-09-12 16:49:16 -07:00
vagrant Update dev environment & add media player notifications (#139) 2021-01-01 22:29:36 -08:00
.arcconfig Merge rPF91611faead64: Merge the MLP Music Archive import scripts. 2015-09-10 12:15:19 +01:00
.dockerignore Add missing files 2021-03-27 03:58:08 +00:00
.editorconfig Improved track pagination to better handle tons of content, including a "jump to page" button. 2015-10-29 03:24:12 -07:00
.env.example Shift config files 2021-02-14 19:11:18 +00:00
.gitattributes Removed non-local configs from this repo. 2015-12-20 04:59:01 -08:00
.gitignore Biggus Upgradus 2021-03-27 03:51:45 +00:00
artisan Laravel 5.5 2017-11-28 07:00:11 +00:00
composer.json Biggus Upgradus 2021-03-27 03:51:45 +00:00
composer.lock Biggus Upgradus 2021-03-27 03:51:45 +00:00
docker-compose.yml Initial docker sync setup and documentation of the new supported dev env methods 2021-03-31 01:04:17 +01:00
DOCKER-README.md Update docker readme 2021-04-17 14:14:22 +01:00
docker-sync.yml Initial docker sync setup and documentation of the new supported dev env methods 2021-03-31 01:04:17 +01:00
Dockerfile Fix docker build 2021-03-30 22:08:15 +01:00
Dockerfile.dev Add missing files 2021-03-27 03:58:08 +00:00
gulpfile.js Biggus Upgradus 2021-03-27 03:51:45 +00:00
LICENSE Licensed Pony.fm under the GNU Affero General Public License (AGPL). 2015-10-24 22:17:45 -07:00
package-lock.json Update dev environment & add media player notifications (#139) 2021-01-01 22:29:36 -08:00
package.json Update dev environment & add media player notifications (#139) 2021-01-01 22:29:36 -08:00
phpspec.yml Change namespace to App 2021-02-14 02:34:58 +00:00
phpunit.xml Updates after 8.0 shift 2021-02-14 19:34:53 +00:00
README.md Update dev environment & add media player notifications (#139) 2021-01-01 22:29:36 -08:00
server.php Initial L5.1 commit 2015-08-30 12:26:03 +01:00
Vagrantfile Update dev environment & add media player notifications (#139) 2021-01-01 22:29:36 -08:00
webpack.base.config.js Biggus Upgradus 2021-03-27 03:51:45 +00:00
webpack.dev.config.js Revert "Merge branch 'feature-remote-dev' of https://github.com/Poniverse/Pony.fm" 2016-05-16 01:00:37 +01:00
webpack.production.config.js Updated the README. 2016-02-16 02:57:19 -08:00
yarn.lock Biggus Upgradus 2021-03-27 03:51:45 +00:00

Pony.fm Logo

The community for pony fan music.

For artists, Pony.fm features unlimited uploads and downloads, automatic transcoding to a number of audio formats, and synchronized tags in all downloads.

For listeners, Pony.fm offers unlimited streaming and downloading, user-generated playlists, favourite lists, and a way of discovering new music with pony-based taxonomies.

Contributing

If you've run across a bug or have a feature request, open an issue for it.

For general questions and discussions about the site, stop by at the Pony.fm forum.

For quick fixes, go ahead and submit a pull request!

For larger features, it's best to open an issue before sinking a ton of work into building them, to coordinate with Pony.fm's maintainers.

Developer documentation is available in the documentation directory.

Protip: Looking for a place to jump in and start coding? Try a quickwin issue - these are smaller in scope and easier to tackle if you're unfamiliar with the codebase!

Starting a dev environment

To begin development, do the following:

  1. Install Vagrant and VirtualBox if you don't have them already.

  2. Install the vagrant-hostmanager plugin: vagrant plugin install vagrant-hostmanager

  3. Install the vagrant-bindfs plugin: vagrant plugin install vagrant-bindfs

  4. Run vagrant up from the folder in which you cloned the repository

  5. Run vagrant ssh, cd /vagrant, and php artisan poni:setup.

  6. Follow the instructions in the "Asset pipeline" section below to set that up.

Once everything is up and running, you'll be able to access the site at http://ponyfm-dev.poni/. You can access the PostgreSQL database by logging into ponyfm-dev.poni:5432 with the username homestead and the password secret. Pony.fm's database is named homestead.

Asset pipeline

Pony.fm uses gulp to mange its asset pipeline.

In macOS, you must have XCode Command Line Tools installed. This may be downloaded at https://developer.apple.com/download/more/?=command%20line%20tools

Important: Run npm and gulp from your host machine and not within the VM. You must first have it installed globally:

npm install -g gulp

And then install all of the required local packages by invoking:

npm install

Finally, to compile and serve the assets in real time, run the following (and leave it running while you develop):

gulp watch

Developing email templates

Pony.fm's email templates are based on the Sass version of ZURB's Foundation for Emails framework, including their "Inky" markup language. This tooling takes the pain out of HTML email markup - see their site for the full documentation.

Email templates live in two directories:

Be aware that plaintext emails are vanilla Blade templates! Foundation is only used for HTML emails.

HTML emails are marked up as Handlebars templates which compile into Blade templates - Pony.fm's asset pipeline automatically does this for you. Variables meant for Blade need to be escaped with a backslash in the .hbs files (like so: \{{ $myVariableName }}).

During development, email templates will also be written to public/build/emails to save you from resending emails to see how they look. For example, if you're working on the "new track notification" template, you'll be able to view it in your browser at http://ponyfm-dev.poni/build/emails/notifications/new-track.blade.php.html.

Configuring the servers

Pony.fm uses nginx, php-fpm, redis, and PostgreSQL. You can modify the configuration of these services by locating the appropriate config file in the vagrant folder. Once modified, you must reload the configuration by running the appropriate shell script (reload-config.sh) or bat files (reload-config.bat and reload-config.vmware.bat). These scripts simply tell Vagrant to run copy-and-restart-config.sh on the VM.

If you need to change any other configuration file on the VM - copy the entire file over into the vagrant folder, make your changes, and update the copy-and-restart-config.sh script to copy the modified config back into the proper folder. All potential configuration requirements should be represented in the vagrant folder and never only on the VM itself as changes will not be preserved.