musicbox.fun — a web app for making music box songs.
For the background on this project, see: https://www.bryanbraun.com/2019/11/02/music-box-fun
This repo contains two services, each in their own directory:
site
- A static frontend, written in plain JavaScriptapi
- A backend API, using Rails::API and Postgres
Each service has a README. There are also some project-wide docs here.
First Time Setup
- Make sure you have Docker and
make
installed. - To run the frontend, install the local server:
brew install caddy nss
- IF you want to run the backend, follow the backend first-time-setup instructions.
- IF you want to run frontend tests,
- Install node/npm
- Run
npm ci --prefix site
, to download cypress.
Local development
To run the services locally, you just need to run the make commands:
make dev
- Runs development environments for the main app (site
andapi
)make stop
- Stops any running environments for the main app (site
andapi
)make test
- Run tests
For more commands, see the Makefile.
Contributing code
- Fork the project on Github.
- Create a feature branch for your changes.
- Make your changes and commit them to the feature branch.
- Ensure the tests still pass locally (
make test
) - Submit your changes as a PR to the
master
branch of the main repo.
- The JavaScript architecture was inspired by Andy Bell's article on state management in vanilla JavaScript.
- The music note icon was based on one from the Noun Project by Hea Poh Lin.
- The play / pause icons were inspired by the ones on the Noun Project.
This project uses the GNU GPLv3 License, amended with the Commons Clause.
This means you get the terms of the GPLv3, excluding the permission to use it for commercial use.