Festival is a web app to host online music festivals. It plays the same audio file for all users at the same time based on their system clock, allowing for the social aspect of a live broadcast (everyone can react to the same music at the same time) without requiring live streaming infrastructure.
- Copy
.env.sample
to.env
and fill out the required values. - Run
docker compose up -d
to start a PostgreSQL database. - Run
npm install
to install the required packages. - Run
npm run dev
to serve the application locally.
- Create a new public bucket in Tigris.
- In the bucket settings, disable directory listing.
- In the bucket settings, add a CORS rule:
- Origins:
*
for development or the URL origin of the deployed app - Allowed Methods: HEAD, GET, PUT, OPTIONS
- HEAD, GET, and OPTIONS are required for the visualizer
- PUT and OPTIONS are required for file uploads
- Allowed Headers:
content-type
- Origins:
npm run test
will run the end-to-end tests.npm run test-ct
will run the component tests.
npm run build
will bundle the application for production.npm start
will serve the bundled application.
Pushing to main triggers a deploy on Railway.
- Clerk for authentication
- DigitalOcean for database hosting, DNS, and proxying to Railway
- Railway for hosting
- Sentry for error reporting
- Tigris for file storage