owncast/web
janWilejan c563742856
Chat popup (#3098)
* add pop out chat button

* add button to close chat popup

* chat is hidden on main interface when a popup chat is open

* NameChangeEvent renames clients with the given id

if you have two or more owncast windows (or pop-out chats) open, changing your
name in 1 client is reflected in all clients.

* replace isChatVisible booleans with chatState enum

* update stories to use ChatState

* fix build tests

---------

Co-authored-by: janWilejan <>
2023-06-26 09:00:27 -07:00
..
.storybook Commit screenshots 2023-06-26 04:10:35 +00:00
.vscode Add current user object that holds user session values instead of standalone getters. Closes #2050 2022-10-10 16:40:13 -07:00
assets/images UI: Make the Admin menu sidebar colors on hover consistent (#2778) 2023-03-05 20:46:31 -08:00
components Chat popup (#3098) 2023-06-26 09:00:27 -07:00
docs Remove some deprecated css+variables 2023-01-31 11:46:48 -08:00
interfaces fix: remove unused duplicate version string 2023-06-05 15:22:24 -07:00
pages chore: run stylelint on our css files 2023-06-20 20:58:00 -07:00
public Prettified Code! 2023-05-05 01:00:21 +00:00
services Cleanup unused Javascript (#3027) 2023-05-20 21:15:25 -07:00
stories fix: remove unused duplicate version string 2023-06-05 15:22:24 -07:00
style-definitions some webv2 UI polish (#2940) 2023-04-24 10:58:57 -07:00
styles chore: run stylelint on our css files 2023-06-20 20:58:00 -07:00
tests Cleanup unused Javascript (#3027) 2023-05-20 21:15:25 -07:00
types Support using the custom video serving endpoint even if you don't use object storage (#2924) 2023-05-30 14:05:24 -07:00
utils feat: add ios specific push notification instructions 2023-06-05 21:01:51 -07:00
.env.development blah 2020-10-07 23:09:42 -07:00
.env.production Support API calls without auth and without cors 2020-11-07 16:44:11 -08:00
.eslintignore Configure eslint action 2021-02-06 19:13:04 -08:00
.eslintrc.js Cleanup unused Javascript (#3027) 2023-05-20 21:15:25 -07:00
.gitignore Add support for less variables and using a custom theme 2022-04-25 15:52:38 -07:00
.knip.json fix(tests): ignore stylint packages 2023-06-21 14:40:29 -07:00
.prettierignore Add variables.css to prettierignore 2023-01-31 11:32:22 -08:00
.prettierrc Fix web project build errors 2022-05-11 23:31:31 -07:00
.stylelintrc.json fix(chat): update scroll to bottom button text color 2023-06-21 14:26:57 -07:00
favicon.ico a bit of refactor, use context for overall broacast status; move files around for routing 2020-10-22 16:18:18 -07:00
jest.config.js Prettified Code! 2023-04-17 22:34:29 +00:00
LICENSE Initial commit 2020-09-30 14:47:14 -07:00
next-env.d.ts Admin social features (#408) 2022-01-12 13:52:37 -08:00
next.config.js chore(deps): remove webpack-deadcode-plugin in favor of knip 2023-06-05 14:35:40 -07:00
package-lock.json chore(deps): update dependency chromatic to v6.19.9 2023-06-25 17:22:51 +00:00
package.json chore(deps): update dependency chromatic to v6.19.9 2023-06-25 17:22:51 +00:00
postcss.config.js First pass at component library 2022-04-25 15:52:38 -07:00
README.md add shellcheck to CI (#2478) 2022-12-25 19:17:13 -08:00
renovate.json Fix web project build errors 2022-05-11 23:31:31 -07:00
tsconfig.json Cleanup unused Javascript (#3027) 2023-05-20 21:15:25 -07:00

Owncast Web Frontend

The Owncast web frontend is a Next.js project with React components, TypeScript, Sass styling, using Ant Design UI components.

Getting Started

First, install the dependencies.

npm install --include=dev

Components and Styles

You can start the Storybook UI for exploring, testing, and developing components by running:

npm run storybook

This allows for components to be made available without the need of the server to be running and changes to be made in isolation.

Contribute

  1. Find a component that hasn't yet been worked on by looking through the UIv2 milestone and the sidebar of components in storybook.
  2. See if you can have an example of this functionality in action via the Owncast Demo Server or Owncast Nightly Build so you know how it's supposed to work if it's interactive.
  3. Visit the Docs tab to read any specific documentation that may have been written about how this component works.
  4. Go to the Canvas tab of the component you selected and see if there's a Design attached to it.
  5. If there is a design, then that's a starting point you can use to start building out the component.
  6. If there isn't, then visit the Owncast Demo Server, the Owncast Nightly Build, or the proposed v2 design for some ways to start.
  7. If no design exists, then you can ask around the Owncast chat for help, or come up with your own ideas!
  8. No designs are stuck in stone, and we're using this as an opportunity to level up the UI of Owncast, so all ideas are welcome.

See the extra how-to guide for components here: Components How-to.

Run the web project

Make sure you're running an instance of Owncast on localhost:8080, as your copy of the admin will look to use that as the API.

Next, start the web project with npm.

npm run dev

Update the project

You can add or edit a pages by modifying pages/something.js. The page auto-updates as you edit the file.

Routes will automatically be available for this new page components.

Since this project hits API endpoints you should make requests in componentDidMount, and not in getStaticProps, since they're not static and we don't want to fetch them at build time, but instead at runtime.

A list of API end points can be found here: https://owncast.online/api/development/

Admin Authentication

The pages under /admin require authentication to make API calls.

Auth: HTTP Basic

username: admin

pw: [your streamkey]

Learn More

To learn more about Next.js, take a look at the following resources: