renovate[bot] beeeaede5e chore(deps): update dependency sass to v1.80.3 19 hours ago
..
.storybook edc920f7db fix(storybook): update storybook generation templates 2 days ago
.vscode 80a012a3c7 Add current user object that holds user session values instead of standalone getters. Closes #2050 2 years ago
assets f6a2e8d3a2 UI: Make the Admin menu sidebar colors on hover consistent (#2778) 1 year ago
components 4ac3068fcb fix(css): run prittier on css file 2 days ago
docs 695efa9d6b Remove some deprecated css+variables 1 year ago
interfaces 169c11596c feat(chat): add support for chat part messages. Closes #3201 (#3291) 1 year ago
pages f6a1b1b638 chore(deps): update typescript-eslint monorepo to v8 (major) (#3887) 1 month ago
public 468abb272a little color change in dropdown (#3828) 3 months ago
services e50b23d081 Cleanup unused Javascript (#3027) 1 year ago
stories b694be1052 fix(admin): sanitize fediverse username (#3437) 8 months ago
style-definitions 40de64fffe chore: add support for exporting our colors as Swift files 1 year ago
styles c00b0be3d4 fix emojis overflowing the chat message (#3228) 1 year ago
tests 2b57741397 fix: treat matrix links as regular web urls. Closes #3329 9 months ago
types a450e62397 Optionally disable chat rate limiter and add optional chat slur/language filter (#3681) 6 months ago
utils fdcfb34531 Update config-constants.tsx (#3835) 3 months ago
.env.development c7dc2a4030 blah 4 years ago
.env.production 3eb7b8b84a Support API calls without auth and without cors 4 years ago
.eslintignore 72dd209d80 fix: ignore this file that is being problematic 11 months ago
.eslintrc.js 3ccc92c317 chore(tests): disable no-plusplus rule in js linter 1 month ago
.gitignore 3ce6fd4cb3 Add support for less variables and using a custom theme 2 years ago
.knip.json df3a9424b1 fix(test): fix javascript tests not running 2 days ago
.prettierignore 87674d3f2e Add variables.css to prettierignore 1 year ago
.prettierrc 72c01e1b9a Fix web project build errors 2 years ago
.stylelintrc.json 364afd0e71 fix: add spacing between user badges. Closes #3247 1 year ago
LICENSE 76d281f35c Initial commit 4 years ago
README.md c74d5b4f31 add shellcheck to CI (#2478) 1 year ago
doctor-storybook.log f424fe6dae WIP storybook upgrade 2 days ago
favicon.ico a062856726 a bit of refactor, use context for overall broacast status; move files around for routing 4 years ago
jest.config.js df3a9424b1 fix(test): fix javascript tests not running 2 days ago
next-env.d.ts edc920f7db fix(storybook): update storybook generation templates 2 days ago
next.config.js 1a5e7cb113 Fix custom runtimeCaching rules, default runtimeCaching rule order (#3685) 6 months ago
package-lock.json beeeaede5e chore(deps): update dependency sass to v1.80.3 19 hours ago
package.json beeeaede5e chore(deps): update dependency sass to v1.80.3 19 hours ago
postcss.config.js 1c77219a75 First pass at component library 2 years ago
renovate.json 72c01e1b9a Fix web project build errors 2 years ago
tsconfig.json e50b23d081 Cleanup unused Javascript (#3027) 1 year 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: