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.
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!
Recommended: the Docker-based setup described in
DOCKER-README.md — dependencies run in containers and
the app runs on your host.
The Vagrant environment below is the legacy setup and may bitrot:
To begin development, do the following:
-
Install Vagrant and VirtualBox if you don't have them already.
-
Install the
vagrant-hostmanagerplugin:vagrant plugin install vagrant-hostmanager -
Install the
vagrant-bindfsplugin:vagrant plugin install vagrant-bindfs -
Run
vagrant upfrom the folder in which you cloned the repository -
Run
vagrant ssh,cd /vagrant, andphp artisan poni:setup.
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.
Frontend assets are built with Vite. Install
dependencies with pnpm install, then run pnpm dev while developing
(or pnpm build for a production build).
Email templates are plain Blade views:
resources/views/emails/html, for HTML emailsresources/views/emails/plaintext, for plaintext emails
In dev, sent mail is caught by Mailpit (started by docker compose up -d) and
viewable at http://localhost:8025.
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.