diff --git a/.github/01_app.png b/.github/01_app.png deleted file mode 100644 index e27cf8bcd..000000000 Binary files a/.github/01_app.png and /dev/null differ diff --git a/.github/02_screentypes.png b/.github/02_screentypes.png index e68ea681b..28d729dae 100644 Binary files a/.github/02_screentypes.png and b/.github/02_screentypes.png differ diff --git a/.github/app.jpg b/.github/app.jpg new file mode 100644 index 000000000..e25e88f75 Binary files /dev/null and b/.github/app.jpg differ diff --git a/.github/linux-download.png b/.github/linux-download.png index 8f48a8a15..5da52473b 100644 Binary files a/.github/linux-download.png and b/.github/linux-download.png differ diff --git a/.github/mac-download.png b/.github/mac-download.png index 578b5441f..b4b4e62f4 100644 Binary files a/.github/mac-download.png and b/.github/mac-download.png differ diff --git a/.github/win-download.png b/.github/win-download.png index 1e1a5531f..4756a8123 100644 Binary files a/.github/win-download.png and b/.github/win-download.png differ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c798f8e1c..39972b49f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,49 +93,3 @@ jobs: files: ./server/dist/ontime-win64.exe env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -# build_linux: -# runs-on: ubuntu-latest -# env: -# CI: '' -# -# steps: -# - uses: actions/checkout@v2 -# - name: Use Node.js -# uses: actions/setup-node@v1 -# with: -# node-version: '14.x' -# -# React -# - name: React - Link to utils -# run: yarn link ontime-utils -# working-directory: ./client -# -# - name: React - Install dependencies -# run: yarn install -# working-directory: ./client -# -# - name: React - Build project -# run: yarn build -# working-directory: ./client -# -# Node server -# - name: Server - Install dependencies -# run: yarn install -# working-directory: ./server/src -# -# App -# - name: Electron - Install dependencies -# run: yarn install && yarn make && yarn setdb -# working-directory: ./server -# - name: Electron - Build app -# run: yarn dist-linux -# working-directory: ./server -# -# Release -# - name: Release -# uses: softprops/action-gh-release@v1 -# with: -# files: ./server/dist/ontime-win64.exe -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 343c9274e..c13be4172 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ +[](https://github.com/cpvalente/ontime/actions/workflows/ontime_cy.yml) [](https://github.com/cpvalente/ontime/actions/workflows/build.yml) [](https://www.gnu.org/licenses/gpl-3.0) [](https://cpvalente.gitbook.io/ontime/) +## Download the latest releases here -Download the latest releases here
# Ontime + Ontime is an application for managing event rundowns and running stage timers. -It allows a center application to be able to distribute event information in the local network. This minimises needs for using Media Server outputs or expensive video distribution while allowing easy integration in workflows including OBS and d3. +It allows a center application to be able to distribute event information in the local network. This +minimises needs for using Media Server outputs or expensive video distribution while allowing easy +integration in workflows including OBS and d3. - +  ## Using Ontime + Once installed and running, ontime starts a background server that is the heart of all processes. -The app, is used to add / edit your running order in the event list, and running the timers using the Playback Control function. +The app, is used to add / edit your running order in the event list, and running the timers using +the Playback Control function. -From here, any device in the same network with a browser is able to render the views as described. This is done by reaching the ontime server at the _default port 4001_ eg: `localhost:4001` or `192.168.1.3:4001` -You can then use the ontime logo in the top right corner to select the desired view (event in the lower thirds view, where it is hidden). +From here, any device in the same network with a browser is able to render the views as described. +This is done by reaching the ontime server at the _default port 4001_ eg: `localhost:4001` +or `192.168.1.3:4001` +You can then use the ontime logo in the top right corner to select the desired view (event in the +lower thirds view, where it is hidden). -In case of unattended machines or automations, it is possible to use different URL to recall individual views -and extend with using the URL aliases feature +In case of unattended machines or automations, it is possible to use different URL to recall +individual views and extend with using the URL aliases feature ``` For the presentation views... @@ -41,19 +50,22 @@ IP.ADDRESS:4001/cuesheet > Cue Sheet ...and for the editor (the control interface, same as the app) ------------------------------------------------------------- -IP.ADDRESS:4001/studio > Studio Clock +IP.ADDRESS:4001/editor ``` More documentation available [here](https://cpvalente.gitbook.io/ontime/) + ## Feature List (in no specific order) + - [x] Distribute Data over network and render in the browser - [x] Different screen types - - Stage Timer - - Backstage Info - - Public Info - - Picture in Picture - - Studio Clock + - Stage Timer + - Backstage Info + - Public Info + - Picture in Picture + - Studio Clock + - [Make your own?](#make-your-own-viewer) - [x] Configurable realtime Lower Thirds - [x] Cuesheets with additional custom fields - [x] Send live messages to different screen types @@ -64,34 +76,56 @@ More documentation available [here](https://cpvalente.gitbook.io/ontime/) - [x] Import event list from Excel - [x] URL Aliases (define configurable aliases to ease onsite setup) - [x] Logging view -- [x] Edit anywhere: run ontime in your local network and use any machine to reach the editor page (same as app) +- [x] Edit anywhere: run ontime in your local network and use any machine to reach the editor page ( + same as app) ## Unopinionated -We are not interested in forcing workflows and have made ontime, so it is flexible to whichever way you would like to work. -- [x] You do not need an order list to use the timer. Create an empty event and the OSC API works just the same +We are not interested in forcing workflows and have made ontime, so it is flexible to whichever way +you would like to work. + +- [x] You do not need an order list to use the timer. Create an empty event and the OSC API works + just the same - [x] If you want just the info screens, no need to use the timer! - [x] Don't have or care for a schedule? - - [x] a single event with no data is enough to use the OSC API and get going - - [x] use the order list to create a set of quick timers by setting the beginning and start times to 00:00 and 00:10 (**BAM**! 10 minute timer). You can quickly recall this with OSC as always + - [x] a single event with no data is enough to use the OSC API and get going + - [x] use the order list to create a set of quick timers by setting the beginning and start + times to 00:00 and 00:10 (**BAM**! 10 minute timer). You can quickly recall this with OSC as + always -## Integrations and Workflow -The app is being currently developed to a wide user base, from broadcast to entertainment and conference halls. +## Rich APIs for workflow integrations -Taking advantage of the integrations in Ontime, we currently use Ontime with: -- `disguise`: trigger ontime from d3's timeline using the **OSC API**, **render views** using d3's webmodule +The app is being currently developed to a wide user base, from broadcast to entertainment and +conference halls. + +Taking advantage of the integrations in Ontime, we currently use Ontime with: + +- `disguise`: trigger ontime from d3's timeline using the **OSC API**, **render views** using d3's + webmodule - `OBS`: **render views** using the Browser Module - `QLab`: trigger ontime using **OSC API** - `Companion`: trigger ontime and manipulate timer using **OSC API** +### Make your own viewer + +Ontime broadcasts its data over websockets. This allows you to build your own viewers by leveranging +basic knowledge of HTML + CSS + Javascript (or any other language that can run in the browser). + +See [this repository](https://github.com/cpvalente/ontime-viewer-template) with a small template on +how to get you started and read the docs about +the [Websocket API](https://app.gitbook.com/s/-Mc0giSOToAhq0ROd0CR/control-and-feedback/websocket-api) ## Roadmap + ### Continued development -There are several features planned in the roadmap. -These will be implemented in a development friendly order unless there is user demand to bump any of them. + +There are several features planned in the roadmap. These will be implemented in a development +friendly order unless there is user demand to bump any of them. + - [ ] HTTP Server (vMix integration) - [ ] Improvement with event component design -- [ ] New playback mode for [cumulative time keeping](https://github.com/cpvalente/ontime/issues/100) +- [ ] New playback mode + for [cumulative time keeping](https://github.com/cpvalente/ontime/issues/100) - [ ] Linux version - [ ] Headless version (run server only anywhere, configure from a browser locally) - [ ] Companion module @@ -99,14 +133,11 @@ These will be implemented in a development friendly order unless there is user d - [ ] Note only event - [ ] Reach Schedule: way to speedup timer to meet a deadline -### For version 1 -Almost reaching a feature set that we can call v1. Before that: -- [ ] Mac OS version - ### Issues + The app is still in pre-release and there are a few issues, mainly concerning responsiveness in -different screens. If you run into problems, please open an issue with a screenshot and your device -resolution +different screens. If you run into problems, please open an issue with a screenshot and note your +device and its screen resolution #### Unsigned App @@ -116,20 +147,24 @@ When installing the app you would see warning screens from the Operating System or ```Ontime can't be opened because it is from an unidentified developer``` Long story short: Ontime app is unsigned. Purchasing the certificates for both Mac and Windows -incurs an early cost and is not a priority. This is unlikely to change in future. -If you have tips on how to improve this, or would like to sponsor the code signing, -please [open an issue so we can discuss it](https://github.com/cpvalente/ontime/issues/new) +would mean a recurrent expense and is not a priority. This is unlikely to change in future. If you +have tips on how to improve this, or would like to sponsor the code signing, +please [open an issue, so we can discuss it](https://github.com/cpvalente/ontime/issues/new) #### Safari There are some issues with Safari versions lower than 13: -- Spacing and text styles do not render correctly + +- Spacing and text styles might have small inconsistencies - Table view does not work -There is no plan for any further work on this since the breaking code belongs to third party libraries. +There is no plan for any further work on this since the breaking code belongs to third party +libraries. # Help + Help is underway! ... and can be viewed [here](https://cpvalente.gitbook.io/ontime/) # License + This project is licensed under the terms of the GNU GPL v3 diff --git a/client/package.json b/client/package.json index 5535fe695..427b7cf8d 100644 --- a/client/package.json +++ b/client/package.json @@ -1,9 +1,9 @@ { - "name": "ontime", - "version": "0.1.0", + "name": "ontime-ui", + "version": "1.0.0", "private": true, "dependencies": { - "@chakra-ui/react": "^1.8.6", + "@chakra-ui/react": "^2.0.0-next.3", "@dnd-kit/core": "^5.0.3", "@dnd-kit/sortable": "^6.0.1", "@dnd-kit/utilities": "^3.1.0", @@ -12,17 +12,17 @@ "@react-icons/all-files": "^4.1.0", "autosize": "^5.0.1", "axios": "^0.25.0", - "color": "^4.2.1", - "framer-motion": "4.1.17", - "react": "17.0.2", + "color": "^4.2.3", + "framer-motion": "^6.3.3", + "react": "^18.1.0", "react-beautiful-dnd": "^13.1.0", - "react-dom": "^17.0.1", + "react-dom": "^18.1.0", "react-fast-compare": "^3.2.0", - "react-qr-code": "2.0.3", - "react-query": "^3.34.12", - "react-router-dom": "^6.2.1", + "react-qr-code": "^2.0.5", + "react-query": "^3.38.0", + "react-router-dom": "^6.3.0", "react-table": "^7.7.0", - "socket.io-client": "^4.4.1", + "socket.io-client": "^4.5.0", "typeface-open-sans": "^1.1.13", "use-fit-text": "^2.4.0", "web-vitals": "^2.1.4" @@ -47,13 +47,13 @@ ] }, "devDependencies": { - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^12.1.2", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.1.1", + "@testing-library/react-hooks": "^8.0.0", + "@testing-library/user-event": "^14.1.1", "prop-types": "^15.8.1", - "react-scripts": "^5.0.0", - "react-test-renderer": "^17.0.2", - "sass": "^1.49.0" + "react-scripts": "^5.0.1", + "react-test-renderer": "^18.1.0", + "sass": "^1.51.0" } } diff --git a/client/public/index.html b/client/public/index.html index f5adcfe95..5bfc9fe49 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -34,7 +34,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> -