owncast/web
James Young d1f3fffe2f
reafctor: normalize component formatting (#2082)
* refactor: move/rename BanUserButton file

* refactor: move/rename Chart file

* refactor: update generic component filenames to PascalCase

* refactor: update config component filenames to PascalCase

* refactor: update AdminLayout component filename to PascalCase

* refactor: update/move VideoJS component

* chore(eslint): disable bad react/require-default-props rule

* refactor: normalize ActionButton component

* refactor: normalize ActionButtonRow component

* refactor: normalize FollowButton component

* refactor: normalize NotifyButton component

* refactor: normalize ChatActionMessage component

* refactor: normalize ChatContainer component

* refactor: normalize ChatJoinMessage component

* refactor: normalize ChatModerationActionMenu component

* refactor: normalize ChatModerationDetailsModal component

* refactor: normalize ChatModeratorNotification component

* refactor: normalize ChatSocialMessage component

* refactor: normalize ChatSystemMessage component

* refactor: normalize ChatTextField component

* refactor: normalize ChatUserBadge component

* refactor: normalize ChatUserMessage component

* refactor: normalize ContentHeader component

* refactor: normalize OwncastLogo component

* refactor: normalize UserDropdown component

* chore(eslint): modify react/function-component-definition rule

* refactor: normalize CodecSelector component

* refactor: update a bunch of functional components using eslint

* refactor: update a bunch of functional components using eslint, pt2

* refactor: update a bunch of functional components using eslint, pt3

* refactor: replace all component->component default imports with named imports

* refactor: replace all component-stories->component default imports with named imports

* refactor: remove default exports from most components

* chore(eslint): add eslint config files for the components and pages dirs

* fix: use-before-define error in ChatContainer

* Fix ChatContainer import

* Only process .tsx files in Next builds

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2022-09-07 00:00:28 -07:00
..
.storybook reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
.vscode Fix web project build errors 2022-05-11 23:31:31 -07:00
assets/images Add some images+icons to assets section 2022-05-09 19:02:10 -07:00
components reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
docs Fix web project build errors 2022-05-11 23:31:31 -07:00
interfaces Handle hide/show chat messages via moderation. Closes #1986 2022-09-04 17:58:06 -07:00
pages reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
public Move the favicons 2022-06-24 21:53:16 -07:00
services Add support for changing user color in name modal. Closes #1805 2022-08-09 19:56:45 -07:00
stories reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
style-definitions Fix font not being defined 2022-08-30 10:58:26 -07:00
styles Wire up emoji+custom emote selector to text input. Closes #1887 2022-09-06 17:52:09 -07:00
types Add admin field for setting offline message. Closes #1901 2022-08-16 21:48:06 -07:00
utils reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -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 reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
.gitignore Add support for less variables and using a custom theme 2022-04-25 15:52:38 -07:00
.prettierignore Add linting and code formatting 2020-09-30 18:47:18 -07:00
.prettierrc Fix web project build errors 2022-05-11 23:31:31 -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
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 reafctor: normalize component formatting (#2082) 2022-09-07 00:00:28 -07:00
package-lock.json Update typescript-eslint monorepo to v5.36.2 (#2093) 2022-09-06 23:31:38 -07:00
package.json Update typescript-eslint monorepo to v5.36.2 (#2093) 2022-09-06 23:31:38 -07:00
postcss.config.js First pass at component library 2022-04-25 15:52:38 -07:00
README.md Expand documentation for web project. Closes #1848 2022-05-12 20:58:08 -07:00
renovate.json Fix web project build errors 2022-05-11 23:31:31 -07:00
tsconfig.json Fix web project build errors 2022-05-11 23:31:31 -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, for 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.

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: