No description
Find a file
Marks Polakovs 0139b666d4 Defocus library dropdown when adding item
In #163 we defocus the search box when we drag in an item. However, you can still select a non-music library, drag things in, have the dropdown stay focused, and thus eat hotkeys. This defocuses it as well.
2021-03-18 09:56:18 +00:00
.github/workflows
config Don't take over all of ury.org.uk, that would be silly 2020-05-09 17:43:45 +02:00
images Added images to readme file 2020-07-11 01:51:14 +02:00
public
scripts Add semi-automated script for tracing memory leak 2020-05-26 14:54:13 +02:00
src Defocus library dropdown when adding item 2021-03-18 09:56:18 +00:00
.editorconfig
.env Show a big scary warning when using non-production versions 2020-09-19 14:08:43 +01:00
.env.production Change shittyserver's WS to go via thunderhorn 2020-06-14 19:12:56 +02:00
.gitignore Show a big scary warning when using non-production versions 2020-09-19 14:08:43 +01:00
Jenkinsfile Show a big scary warning when using non-production versions 2020-09-19 14:08:43 +01:00
mypy.ini
package.json Change version number. 2021-02-10 20:08:41 +00:00
README.md Changed level of screenshot 2020-07-11 01:51:14 +02:00
requirements.ci.txt
requirements.txt Get TURN config from shittyserver instead of hard-coding 2020-04-24 11:27:08 +02:00
serverconfig.ini.example Get TURN config from shittyserver instead of hard-coding 2020-04-24 11:27:08 +02:00
shittyserver.py Change shittyserver's WS to go via thunderhorn 2020-06-14 19:12:56 +02:00
stateserver.py Avoid killing a non-WebStudio show if the connection drops (#135) 2020-06-16 12:05:47 +02:00
tsconfig.json prettier all the things 2020-04-20 14:54:43 +02:00
yarn.lock Add missing space 2021-02-08 15:48:41 +00:00

WebStudio

WebStudio is URY's big fun machine for doing radio shows from home, using Web Audio and WebRTC.

The clientside is written in TypeScript using React and Redux, the serverside is Python using AsyncIO and JACK.

Development

Requirements

Client:

  • Node.js and Yarn (Yarn 1, 2 isn't supported very well by webpack/typescript/anything really)

Server:

  • Python >=3.7

Installing

Clone the repo and run yarn.

You'll probably want to change the values in .env to reflect the MyRadio environment and/or where the server is running (e.g. if you're running the server locally, change REACT_APP_WS_URL to ws://localhost:8079/stream).

If you want to hack on the server, create a virtualenv and install Python packages:

$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Hacking

Start the client by running yarn start.

Start the server by running python3 stateserver.py and python3 shittyserver.py.

Don't forget to ensure that both TypeScript and MyPy pass, as your code will be rejected by CI otherwise - run tsc --noEmit and/or mypy server.py to check.

Releasing a new version

Every push to master is deployed automatically by Jenkins to https://ury.org.uk/webstudio-dev.

Deploying to https://ury.org.uk/webstudio is also automated but slightly more involved:

  1. Change the version field in package.json to ensure the "about" page is up to date
  2. Push up your version bump and create a pull request to the production branch - https://github.com/UniversityRadioYork/WebStudio/compare/production...master
  3. Once your changes are merged into production they'll get deployed automatically (although you will need to restart the server - ssh to Dolby and run sudo systemctl restart webstudioserver)

Screenshots

Mic Live With Main Screen

Home Page of webstudio

Mic Selection Screen