Muer is a modern, open-source music player for you and your friends. Features:
- Beautiful UI/UX
- No ads
- Default fallback using Youtube embedded player
- Self-hosted
Muer is based on Invidious.
Want to code immediately? Click this button
This button will start (or resume) a Github Codespaces for this repo, with packages installed. You can then follow step 2 - 3 as below.
- Clone & Install all dependencies
git clone https://github.com/muer-org/muer
cd muer
npm install
- Copy
.env.sample
file to.env
.
- The file contains environment variables of the default staging database (owned by Tri). For now there is no functionality required
SUPABASE_SERVICE_KEY
so you can use the file as is, this probably will change in the future. Then, you would need create a Supabase database and replace the content with your own Supabase and session environment variables.
- You can either start the Remix dev server (recommended) or the Netlify dev server
-
The Remix dev server starts your app in development mode, rebuilding assets on file changes. To start the Remix dev server:
npm run dev
-
The Netlify CLI builds a production version of your Remix App Server and splits it into Netlify Functions that run locally. This includes any custom Netlify functions you've developed. The Netlify CLI runs all of this in its development mode. To start Netlify dev server:
netlify dev
-
With Netlify Dev you can also:
- test functions
- test redirects
- share a live session via url with
netlify dev --live
- and more
Note: When running the Netlify CLI, file changes will rebuild assets, but you will not see the changes to the page you are on unless you do a browser refresh of the page. Due to how the Netlify CLI builds the Remix App Server, it does not support hot module reloading.
-
Quickest way is to deploy to Netlify. Want to deploy immediately? Click this button.
Clicking this button will start the setup for a new project and deployment.
Copy environment variables from the .env.sample
file like so
Clone this repo with the git clone
command. Then install the Netlify CLI tool and run netlify init
.
git clone https://github.com/muer-org/muer
cd muer
npm install netlify-cli -g # to install the Netlify CLI tool globally
netlify init # initialize a new Netlify project & deploy
# Set env variables as above
Using the 'Deploy to Netlify' button or the init
process will also set up continuous deployment for your project so that a new build will be triggered & deployed when you push code to the repo (you can change this from your project dashboard: Site Settings/Build & deploy/Continuous Deployment).
By hosting Muer on various platforms, you help ensure the future of this project. While we use Netlify by default due to its simplicity and speed, we highly encourage individuals to explore and document their experiences with running Muer on alternative platforms.
To run production server on your own platform using Netlify Dev
npm run start
Or using Remix App Server
cp remix.config.remixappserver.js remix.config.js
npm run build
npm run start-remixappserver
Here are some pointers to start using other PaaS(es):
- https://remix.run/docs/en/main/file-conventions/remix-config#serverbuildtarget
- https://vercel.com/guides/migrate-to-vercel-from-netlify
- https://developers.cloudflare.com/pages/migrations/migrating-from-netlify/
- https://github.com/dokku/dokku
- https://github.com/coollabsio/coolify
This project uses Supabase for data storage and user authentication.
We have set up the basic configuration files for Cypress End-to-End tests in this project. You'll find those in the cypress
directory. As you make changes, add to an existing file or create a new file in the cypress/integrations
directory to test your changes.
We use @testing-library/cypress
for selecting elements on the page semantically.
To run these tests in development, run npm run e2e-test
which will start the dev server for the app as well as the Cypress client.
To other example of Cypress tests specifically on Remix stacks, check out the cypress
directory in the Remix Grunge Stack example.
We also use netlify-plugin-cypress
to validate our template is working properly. When you deploy this project as is, cypress tests run automatically on a successful build. If you're interested in removing this functionality you will need to go into the netlify.toml
and remove the plugins section:
[[headers]]
for = "/build/*"
[headers.values]
"Cache-Control" = "public, max-age=31536000, s-maxage=31536000"
- [[plugins]]
- package = "netlify-plugin-cypress"
- [plugins.inputs]
- record = true
- group = "Testing Built Site"
You will also need to remove the plugin from the dependencies: npm uninstall -D netlify-plugin-cypress