Take control over your live stream video by running it yourself. Streaming + chat out of the box.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
renovate[bot] bf92677818
fix(deps): update dependency video.js to v8.8.0
1 year ago
..
.storybook Commit screenshots 1 year ago
.vscode
assets/images UI: Make the Admin menu sidebar colors on hover consistent (#2778) 2 years ago
components feat(chat): have unique icons for join and part messages. Closes #3421 1 year ago
docs
interfaces feat(chat): add support for chat part messages. Closes #3201 (#3291) 2 years ago
pages chore(deps): update dependency typescript to v5 (#3387) 2 years ago
public Updating twitter logo to X using logo from Twitter's website (#3468) 1 year ago
services Cleanup unused Javascript (#3027) 2 years ago
stories Migrated Storybook notation from CSF2 to CSF3 (#3412) 2 years ago
style-definitions chore: add support for exporting our colors as Swift files 2 years ago
styles fix emojis overflowing the chat message (#3228) 2 years ago
tests Cleanup unused Javascript (#3027) 2 years ago
types feat(storage): support a object storage custom path prefix 2 years ago
utils Handle error thrown in postConfigUpdateToAPI (#3299) 2 years ago
.env.development
.env.production
.eslintignore fix: ignore this file that is being problematic 2 years ago
.eslintrc.js Cleanup unused Javascript (#3027) 2 years ago
.gitignore
.knip.json chore(deps): update to next config to address build errors 1 year ago
.prettierignore
.prettierrc
.stylelintrc.json fix: add spacing between user badges. Closes #3247 2 years ago
LICENSE
README.md
favicon.ico
jest.config.js Prettified Code! 2 years ago
next-env.d.ts
next.config.js chore(deps): update to next config to address build errors 1 year ago
package-lock.json fix(deps): update dependency video.js to v8.8.0 1 year ago
package.json chore(deps): update dependency @types/node to v20.10.6 1 year ago
postcss.config.js
renovate.json
tsconfig.json Cleanup unused Javascript (#3027) 2 years ago

README.md

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: