Giter Club home page Giter Club logo

streameth-platform's Introduction

StreamETH Platform

Welcome to the StreamETH platform repository! StreamETH produces world class Virtual Events and Marketing Content. This README provides you with all the necessary information to understand our platform, contribute to it, and get it up and running on your local machine.

Website Additions

For a better understanding of what StreamETH offers and how it functions, please visit our websites:

  • Public Website: streameth.org - Discover what StreamETH is all about and the unique features we offer.
  • Application Site: app.streameth.org - Interact with the StreamETH application.

Documentation Resources

You can find detailed documentation on StreamETH's features and architecture here:

  • Documentation Link - Dive deep into the technical details and operational aspects of StreamETH.

StreamETH-Platform Summary

StreamETH is designed to provide a seamless and flexible platform for hosting and attending events virtually or in a hybrid setting. It features:

  • Interactive Sessions: Engage with speakers and attendees through live.
  • Scalability: Cater to events of any size, from small gatherings to large conferences.
  • Customisation: Tailor the event experience to meet the specific needs of your audience.

Goals of StreamETH

Our mission with StreamETH is to:

  • Offer a sustainable and inclusive event-hosting platform.
  • Continuously enhance user experience with innovative features.
  • Foster a community-driven approach to virtual event management.

Setup Quickstart

Setting up the StreamETH platform for development is straightforward. Here’s a quick rundown:

Prerequisites

  • Node.js (v18 or above)
  • Yarn
  • Git

Environment Variables

Create a .env file at the root of the project and include the following variables:

# Session secret key
SESSION_SECRET=Generate key: "openssl rand -base64 64"

# WalletConnect Project ID
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id_here

# Infura Project ID
NEXT_PUBLIC_INFURA_ID=your_infura_project_id_here

# Sanity Studio API Key
NEXT_PUBLIC_STUDIO_API_KEY=your_Livepeer_studio_api_key_here

# Service Account Private Key for server-to-server interactions
SERVICE_ACCOUNT_PRIVATE_KEY=your_service_account_private_key_here

# Service Account Email
SERVICE_ACCOUNT_EMAIL=your_service_account_email_here

# Google API Key for services like Google Maps, etc.
GOOGLE_API_KEY=your_google_api_key_here

Make sure to replace your_..._here with your actual environment variable values.

Running Locally

git clone [email protected]:streamethorg/streameth-platform.git
cd streameth-platform
yarn install
yarn dev # or yarn dev

Contribution Guidelines

We welcome contributions from everyone. To contribute:

  • Issues: Feel free to submit issues for bug reports, feature requests, or suggestions through our Issues tab.
  • Pull Requests: If you wish to contribute code, please make a pull request (PR) with a clear list of what you've done.

Read our CONTRIBUTING.md for detailed information on how to contribute, commit messages, and the code review process.

streameth-platform's People

Contributors

alexni245 avatar dependabot[bot] avatar eric-vondee avatar github-actions[bot] avatar greatsamist avatar pblvrt avatar shamaon avatar wslyvh avatar xannyxs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

streameth-platform's Issues

[BUG] Frequent Playback Stuttering and Reset

Just watching some videos on streameth and sometimes the video stops.
It goes black and the position-seekbar goes to the start. The only way to recover is to reload the page and find the position again. I cannot remember it from watching videos from ETHBerlin back then - so it might be a regression. But had it watching ProtocolBerg videos now already multiple times.

Seems there is nothing related/helpful in the console
image

video of it happening
https://github.com/streamethorg/streameth-platform/assets/111600/b868e468-a812-4e03-bf0f-5291e1345908

It happens in brave and firefox browser

correct metadata per page

Current metadata per page is broken, when sharing a link it does not show the event and page description nor a social image. We should implement metadata as per the nextjs documentation

Also adding wesley comments here:

Something else.. I think we should spent some time to properly set up Metadata/SEO properties, generate Social/Open Graph per event, etc. I think it adds value for hosts for proper search indexing, but also makes social sharing a lot better.
And Nextjs makes this quite easy https://nextjs.org/docs/app/building-your-application/optimizing/metadata

Unexpected Scaling of <Player> and SessionBox in Tall, Narrow Viewports

In certain viewport conditions (specifically when the viewport width is narrow and the height is greater than 1500px), our <Player> and SessionBox components do not scale and position properly. This issue was always there, but I removed the black background

Expected Behavior:

The <Player> and SessionBox components should maintain their relative size and position regardless of the viewport dimensions.

Actual Behavior:

When the viewport width is narrow and the height is greater than 1500px, the <Player> and SessionBox components do not position properly. They scale in size, but their placement is incorrect which leads to a disruption in the layout.

Steps to Reproduce:

  1. Adjust the browser window to a narrow width.
  2. Increase the browser window height to more than ~1500px.
  3. Observe that the <Player> and SessionBox components do not maintain their relative size and position.

Screenshot

localhost_3000_ethporto_ethporto_2023_session_bitcliq__lota_digital_e_big_eye

[BUG] Hide streams/stage after event ends

Describe the bug

The flag archiveMode is not something that should have to be set manually.
We should hide streams/stages (basically putting an event to archiveMode) as soon as an event ends.

[BUG] Schema Prioritises Speakers Over Session Title in StreamETH Schedule

Bug Description

When viewing the StreamETH Schedule, the current schema prioritizes displaying the speakers over the title of the session. This should be reversed.

Steps to Reproduce

  1. Navigate to the Scroll Schedule.

Expected Behaviour

If the schedule block is too small to display both the title and the speakers, the title should take precedence and be displayed by itself.

Screenshot for Reference

Screenshot demonstrating the issue

[BUG] Remove Axios

Describe the bug
Remove the axios dependency.

Next.js uses and extends the default fetch WebAPI by default which should be available on both front-/server side.
If we need anything outside of the Next.js context, I'd suggest something like cross-fetch so we can use the same code, APIs, etc. consistently. No need for additional dependencies.

Monorepo

The solution has grown a lot, and our supporting projects (Remotion, AV tools, etc.) would benefit from using the same code base. But the current structure isn't sufficient to facilitate for this (e.g. packages/tools) and is currently as a single, entangled repo.

I suggest we set it up as a monorepo, using yarn workspaces with the following projects:

  • Web - marketing website
  • App - streaming and video App
  • Server / API - self-hosted NodeJS API service. This should incl. most of the current ./server folder and replace Nextjs' serverless functions
  • Tools / AV - similar to packages/tools. I suggest a clean, fresh Remotion install that doesn't contain any old ffmpeg references.

The data folder is most important between projects and I suggest to keep this at the root, or as a separate packages/data to allow easy integrations/access across projects.

Markdown Support for Writing on event homepage

Is your feature request related to a problem? Please describe.
Formatting text on the event homepage is cumbersome with the current plain text editor.

Describe the solution you'd like
Integrate a Markdown editor for easy text formatting, with a live preview feature.

Additional context
Markdown is common and would align with other platforms.

Chore: Refactor and clean up old branches/code

I noticed we have a lot of stale/inactive development branches.
It would be good to spend some time to cleanup and delete old branches.

I'd also see if there's any code we should refactor. During busy event weeks, it's easy to apply any hot/temp. fixes. But we should spend some time to refactor, cleanup and potentially remove any unused code, dependencies or packages we no longer use.

[BUG] Incorrect Logo Displayed When Navigating Back to Homepage

Bug Description

When navigating away from an event that has a custom logo and then returning to the homepage, the logo displayed is incorrect.

Steps to Reproduce

  1. Navigate to an event that features a custom logo.
  2. Use the 'back arrow' to return to the homepage.
  3. Observe the error: the displayed logo is not as expected.

Expected Behaviour

The homepage should consistently display the StreamETH logo when navigated back to it.

Screenshot for Reference

Screenshot displaying the issue

As a Event Organiser, I want to have a mainpage for just the organisation

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Additional context
Add any other context or screenshots about the feature request here.

Screenshots
Do you have an example from another platform, or prototype you made by yourself?

Add an informative README

Is your feature request related to a problem? Please describe.
I would be great to have a short but clear README about streamETH, and where to find more information

As a Event Org / User, I would add auto-labels and AI Summarisation

User Story:

As an Event Organiser or User, I want an AI program to automatically generate labels and summaries for videos in the StreamETH app. This will enhance search capabilities and provide a tailored suggestion section for each archived video.

Context:

This feature will build upon an existing repository named shorten. The repository contains a Python script that utilises WhisperAI to create a text file from the video content. This text file can then be used to generate a summary as well as auto-labels for each video, which are stored in a JSON file.

How It Works:

  1. The video gets processed by WhisperAI to generate a text transcript.
  2. The Python script in the "shorten" repo analyses the transcript to generate a summary and identify key topics/labels.
  3. The summary and labels are then saved in a JSON file, which is linked to the original video in the StreamETH app.

Acceptance Criteria:

  • The system should be able to process a video and generate a text transcript using WhisperAI.
  • The generated transcript should be analysed to create both a summary and relevant labels.
  • Both the summary and labels should be saved in a Database. The transcription should be saved on Digital Ocean
  • The filter bar should filter globally, not per event.
  • The front-end should show the aiDescription

Notes:

  • We may need to take a look at Redis or ElesticSearch to index the labels.
  • Consider performance implications, as processing videos can be time-consuming.
  • Assess the accuracy of the generated labels and summaries.

[BUG] Archive page is inconsistently ordered

Bug Description
The stage tag is incorrectly displayed . Specifically, when there's only one stage, the stage tag should not appear. However, it's currently visible even for a single stage, which is misleading.

Steps to Reproduce

Expected Behavior

  • When there is only one stage, the stage tag should be hidden.
  • When there are multiple stages, the stage tag should be displayed correctly.

Actual Behavior
The stage tag is incorrectly displayed even when there is only one stage.

Screenshot
Incorrect Stage Tag Display (The screenshot shows the stage tag being displayed for a single stage)

As a Admin/Event Organizer, Ability to Add, Delete, & Edit Events and Schedules

Is your feature request related to a problem? Please describe.
Currently, as an admin or event organizer, managing events and their schedules is cumbersome and not straightforward.

Describe the solution you'd like
I'd like to have a streamlined UI that allows admins and event organizers to easily add, delete, and edit events, as well as modify their schedules. The interface should be intuitive and offer options for quick adjustments. We currently have /admin, but it is not fully functional and not accessible to event organizers

Additional context
This feature would significantly improve the user experience for administrators and organizers, making the platform more efficient for event management.

As an event organiser, I want to easily create my event page

Title: Creating an Event Page with Ease

User Story:
As an event organizer, I want to easily create my event page so that I can effectively promote and manage my event without technical hurdles.

Acceptance Criteria:

  1. Intuitive Dashboard:

    • Upon logging in, I should have access to an intuitive dashboard with a clear option to 'Create a New Event'.
  2. Event Visuals:

    • I should be able to upload or link a banner or image that represents my event. The platform should offer image resizing or cropping tools to ensure the visuals fit well.
  3. Details Input:

    • Fields for event details (name, description, location, start date, end date ) should be clearly labeled and have placeholder examples to guide input.
  4. Customization:

    • I should be able to add event customisation: (logo, banner, cover image, accent color, font, enable / disable some page)
    • I should be able to choose which plugins i want enabled
    • I should be able to enable / disable pages
    • I should be able to add a custom domain to my event page
  5. import event data:

  • import event data from supported data sources: pretalx, google sheet
  • if I have no previous data source, allow me to use the existing google sheet template, linking it to the event
  • event data should be kept in sync at all times
  1. ** Streaming provider**:
  • I should be able to choose a streaming provider from the supported streaming providers (livepeer)
  1. Preview Option:

    • Before publishing, I should be able to preview my event page to see how it will appear to attendees.
  2. Save Draft:

    • If I'm not ready to publish, there should be an option to save my progress as a draft, allowing me to come back and finalize it later.
  3. Help & Support:

  • Accessible help documentation, tooltips, or even a chatbot should be available to guide me if I get stuck or have questions.
  1. Publishing & Sharing:
  • Once satisfied with my event page, a 'Publish' button should make my event go live. After publishing, I should be presented with options to share the event page link via social media, email, or other platforms.
  1. Edit Option:
  • After creating my event page, I should be able to easily navigate back to edit or update any details if necessary.

Notes:

  • Streamlining the event creation process is crucial for user satisfaction, especially for users who might not be technically inclined.
  • The balance between customization and simplicity is essential. Offering too many options can overwhelm users, but too few can limit their ability to make the event page feel personal.

[BUG] toggle processed videos on Studio UI

Describe the bug
The schedule on Admin UI currently shows as 1 big list. Which makes scrolling between the player and sessions (at the bottom of the list) annoying. I suggest to separate the schedule into 2 list, e.g. processed or processing videos. And unprocessed videos.
It would be great to toggle (show/hide) the processed list so I can focus on sessions that have been edited yet.

As User I would like to have a dark mode

Is Your Feature Request Related to a Particular Issue? Please Elaborate.
I often find myself experiencing eye strain when using the platform for extended periods, particularly in well-lit settings.

What Solution Do You Propose?
I'd love to see the addition of both a dim and dark mode to improve visual comfort. Personally, I find a grey-toned dark mode particularly easy on the eyes.

Any Additional Suggestions?
To make the feature user-friendly, perhaps a toggle button could be added to the interface. Alternatively, an icon from the lucide icon set could be incorporated that changes its appearance when clicked to indicate the mode switch.

[SUGGESTION] Relocate Menubar to Bottom on Mobile Interface

Is your feature request related to a problem? Please describe.

Accessing the menubar at the top and left-side of the screen on mobile phones can be a stretch, making navigation a tad cumbersome especially with one-handed use.

Describe the solution you'd like

Relocate the menubar to the bottom of the screen on mobile interfaces to enhance accessibility and ease of navigation.

Additional context

It also annoying to first click on the hamburger menu to see the menu and then click what you would like to see

As an event organiser, I want to set the accent color of my event page to match my organisations color

Title: Customizing Accent Color of Event Page

User Story:
As an event organizer, I want to set the accent color of my event page so that it matches my organization's branding and provides a consistent visual experience for attendees.

Acceptance Criteria:

  1. Access Event Page Settings:

    • As an event organizer, I should be able to easily navigate to the settings or customization options for my event page.
  2. Color Customization Option:

    • Within the settings, there should be a clear option labeled 'Accent Color' or similar, indicating where the color customization can be done.
  3. Color Picker Tool:

    • I should have access to a color picker tool that lets me either manually select a color or input a specific color code (e.g., hex code).
  4. Preview:

    • After selecting or inputting my desired accent color, a live preview should show how the event page will look with the new accent color.
  5. Default Option:

    • There should be an option to revert to the default platform color or previously used color, in case I change my mind.
  6. Save Changes:

    • After choosing my color, a 'Save' or 'Apply' button should confirm the changes and update the event page immediately.
  7. Visual Consistency:

    • The selected accent color should be consistently applied to relevant parts of the event page such as headers, buttons, links, or any other highlighted elements.
  8. Compatibility:

    • The chosen accent color should not interfere with the readability or usability of the event page. Text and other elements should adjust or offer contrasting colors to ensure everything remains clear and accessible.
  9. Feedback:

    • Once changes are saved, I should receive a confirmation message or visual indicator that the accent color has been successfully updated.
  10. Documentation/Help:

  • If I'm unsure about how to set the accent color, there should be accessible help documentation or tooltips guiding me through the process.

Notes:

  • The process of changing the accent color should be kept simple and intuitive to cater to organizers who may not be technically savvy.
  • While customization is key, ensuring the event page remains user-friendly and legible is crucial. Too much freedom in color choice could lead to unreadable text or a visually jarring experience, so some guidance or restrictions may be necessary.

By allowing event organizers to customize their event's visual elements, the platform provides a more personalized and branded experience, fostering better engagement with attendees.

[BUG] Flicker and Navigation Issue on Redirect to Archived Event Page

Bug Description
There's a noticeable flicker where the main event page is briefly displayed before redirecting to the archived event page. This not only causes a visual glitch but also affects the browser navigation, requiring two clicks on the back button to return to the homepage.

Steps to Reproduce

  1. Visit 'https://app.streameth.org/zuzalu/zuconnect__zk_track'.
  2. Notice the brief display of the main event page.
  3. Observe the redirection to the archive page.

Expected Behavior

  • The user should be directly taken to the '/archive' page upon clicking on the event card, without loading the main event page.
  • The browser's back button should take the user back to the homepage in a single click.

Actual Behavior

  • The main event page is briefly displayed before redirecting to the archive page.
  • Two clicks are required on the back button to return to the homepage.

As an event organizer, I want to enable chat for my livestreams

Title: Enabling Chat with Moderation for Livestreams

User Story:
As an event organizer, I want to enable chat for my livestreams and have moderation tools so that viewers can engage in real-time discussions while ensuring a respectful and relevant conversation.

Acceptance Criteria:

  1. Chat Activation:

    • In the livestream control panel, there should be a clear option to enable or disable the chat feature.
  2. Moderation Tools:

    • I should have the ability to appoint moderators for the chat.
    • Moderators and I should be able to mute or ban disruptive users.
    • There should be an option to set up a list of prohibited words or phrases that will be automatically filtered out from the chat.
    • I should be able to set a delay for chat messages, allowing moderators a window to review messages before they appear publicly.
  3. Viewer Experience:

    • Viewers should be notified of chat rules or guidelines when they join the chat.
    • They should receive feedback if their message is flagged or removed, with a reason provided.
    • Viewers should have the option to report inappropriate messages to moderators.
  4. Chat Features:

    • I should have the option to pin or highlight important messages at the top of the chat.
    • There should be a feature to conduct quick polls or gather feedback directly within the chat.
    • Viewers should be able to react to messages with predefined emojis or symbols.
  5. Archiving & Review:

    • After the livestream, I should have the option to review the chat transcript.
    • Any incidents of moderation (e.g., muted users, removed messages) should be clearly logged for reference.
  6. Integration with Other Features:

    • The chat should seamlessly integrate with other livestream features, such as Q&A and polls, allowing viewers to participate without leaving the chat.

Notes:

  • The chat feature aims to foster community and engagement during the livestream, but it's essential to maintain a positive and respectful environment.
  • Moderation tools should be user-friendly and efficient to ensure that moderators can effectively manage the chat in real-time.
  • Feedback mechanisms for viewers are crucial to ensure they understand the chat guidelines and any actions taken on their messages.

As a user I want to keep basic event information while exploring the archive

Basic event information is currently only shown on the event overview page.
image

Once an event goes to archiveMode - this information is lost an no longer shown.
It would be nice to still display this information on the archive.

We could copy the entire hero section to the archive.
Or maybe add an about/info page

session archive page improvements

We need to improve how this page looks and align it with the overall design:

borders should be rounded-xl
the action bar on top of the player has the wrong color and his hiding the back arrow button
all text should we white
video player box is not aligned with the player box that we have on the live page
speaker component is not clickable, it should show speaker info

Image

fix archive search bar

the extra filters button is hidden because its color is the bg-color
when clicking that button, the dropdown is overlaying weidly

Image

As an event organiser, I want to be able to create and edit event on Prod

Problem
As an event organizer, I currently lack the capability to create and edit events directly on the production server. This limitation hinders the real-time data loading for clients from GitHub, leading to delays and potential inaccuracies in the event information.

Desired Solution
I propose the implementation of GitHub API that enables users to seamlessly create and edit events directly on the production environment. This API integration will significantly enhance the efficiency of event management and ensure real-time data synchronization for our clients.

Additional context
Our current system's reliance on manual data entry and offline editing has resulted in delays and inconsistencies, impacting the overall user experience. By implementing this GitHub API feature, we can streamline the process of event creation and management, ultimately improving the service we provide to our users.

[BUG] Data importers should not overwrite files

Currently data importers completely overwrite any JSON files in the repo.
We need to update our importers to check if a file exists.
If so, only write the imported fields. Any existing properties should be remain untouched and part of the files.

Priority on the session JSON files, as we will start writing data to those from the post-production flows as well.
We need to make sure we don't lose any data.

[MAJOR BUG] UI Glitches in Schedule When Crossing 00:00 Mark

Description:
When navigating past the 00:00 time mark on the schedule, the UI starts to behave erratically. The schedule blocks appear either too short or too long.

Steps to Reproduce:

  1. Navigate to the schedule page.
  2. Switch the timezone to Tokyo.
  3. Scroll through the schedule to observe the issue.

Expected Behaviour:
The UI should cut off at 00:00 and transition to displaying the next day's schedule.

Screenshots:
UI Issue Screenshot

Desktop:

  • Browser: Chromium

Additional Context:
A temporary fix could be to cut off the display at 00:00 and not show the next day's schedule.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.