Git Product home page Git Product logo

brycensranch / chatting-platform Goto Github PK

View Code? Open in Web Editor NEW
6.0 0.0 0.0 27.03 MB

Chat with other users, face to face, E2E encrypted, like Google Meets

Home Page: https://chatting-platform-frontend.vercel.app

License: MIT License

Shell 1.70% Dockerfile 9.95% TypeScript 65.96% JavaScript 20.64% CSS 1.73% Procfile 0.01%
nodejs typescript collaborate cypress nextjs docker docker-compose commnityexchange eslint github-codespaces

chatting-platform's Introduction

๐Ÿ‘ทโ€โ™‚๏ธ๐Ÿ—๏ธ Chatting Platform (WIP) ๐Ÿšง๐Ÿ‘ท

  • "Make it work, make it right, make it fast" - Kent Beck
  • "The function of good software is to make the complex appear to be simple." - Grady Booch

Being built with love with modernity in mind.

Commitizen Friendly Badge Semantic Release Badge Badge GitHub Workflow Status Badge GitHub Workflow Status Badge Docker Workflow Status Badge Codecov Badge Coveralls Badge Licence Badge CodeFactor Grade Badge GitPod Ready to Code Badge Open in GitHub Codespaces Badge Open in Stackblitz Badge

โš ๏ธ Project archived, while I have enjoyed WebRTC, it's proven too unstable for me to actively work on as a platform. โš ๏ธ For now, I'll be using my time more wisely to start focusing on UI design as a full stack developer. God speed.

Project Goals

  • Chat Notifications
  • Chat sound effect
  • Adopt Omegle styling
  • Voice calling (โœ…)
  • Messages with Tenor GIFs built in, along with images stored on the server.
  • Video calls with screen sharing using WASM
  • Fastify API that generates types and schemas and OpenAPI Specification files for the VSCode extension I'm using
  • WASM message encryption end to end
  • Record content while in a call, like Google Meets, but clientside!
  • Switch to pnpm since a certain someone likes to run npm install a lot more than they should (โœ…)

Planned Technology Stack

  • WebRTC TypeScript
  • FFMPEG WASM (Resource intensive, maybe allow a server recording option?, likely requires modern hardware & browser, such as Microsoft Edge :troll:)
  • TypeScript (project-wide)
  • Next.js (Frontend)
  • Fastify (Backend)
  • Jest (Frontend)
  • Tap (Backend)
  • Redoc (Public Enduser API documentation)
  • React Native Web/Tauri/Solito (Desktop/mobile?)
  • tRPC (project-wide types)
  • Simple Analytics
  • Sentry.io

Features

N/A, just starting off the project... Initial commit type flow.

Docker

This project ships a Docker Compose setup for testing purposes, if I were you, I would never use it in production. Instead, normally install Fail2Ban, CrowdSec, Postgres, Nginx, SuperTokens, NodeJS, pnpm, and Redis on a Linux machine like a regular person and configure it yourself. We have a config for Nginx for ease of deployment.

Demo

no

READMEs (more info on the separate projects)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to add tests as appropriate. In-depth ones, not one that checks if 1 + 1 === 2.

Please read the Contributing Guidelines before submitting any pull requests or opening issues.

License

MIT FOSSA Status

chatting-platform's People

Contributors

brycensranch avatar imgbot[bot] avatar nberlette avatar renovate[bot] avatar semantic-release-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

chatting-platform's Issues

Do not use '.deployments [0].url' blindly, but filter the deployments array firs...

timeout: 90 # Wait for 90 seconds before failing

# TODO Do not use '.deployments [0].url' blindly, but filter the deployments array first to make sure to consider only the deployments where "name" is related to the current commit

    steps:
      - uses: actions/checkout@v3
      - uses: JustinBeckwith/linkinator-action@v1
  await-for-vercel-deployment:
    name: Await current deployment to be ready (Ubuntu 18.04)
    runs-on: ubuntu-18.04
    steps:
      - name: Resolving deployment url from Vercel
        id: resolve-deployment
        # Workflow overview:
        #   - Resolve customer to deploy from github event input (falls back to resolving it from vercel.json file)
        #   - Resolve $VERCEL_DEPLOYMENT_URL
        #     - Fetch all deployments data (by using the scope in `vercel.json`)
        #     - Resolve the last url (from `response.deployments[0].url`)
        #     - Remove the `"` character to pre-format url
        # We need to set env the url for next step, formatted as `https://${$VERCEL_DEPLOYMENT}`
        # XXX You can use https://jqplay.org/ if you want to play around with "jq" to manipulate JSON
        run: |
          # Build Vercel API endpoint used to fetch deployments
          VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT="https://api.vercel.com/v6/deployments?projectId=$VERCEL_PROJECT_ID"
          echo "Fetching Vercel deployments using API endpoint: " $VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT
          # Fetch all Vercel deployment from this project
          ALL_VERCEL_DEPLOYMENTS=`curl -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer ${{ secrets.VERCEL_TOKEN }}' $VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT`
          echo "Vercel deployments for current project: " $ALL_VERCEL_DEPLOYMENTS
          # Parse the deployments (as json) to find the latest deployment url, while stripping the double quotes
          # TODO Do not use '.deployments [0].url' blindly, but filter the deployments array first to make sure to consider only the deployments where "name" is related to the current commit
          VERCEL_DEPLOYMENT=`echo $ALL_VERCEL_DEPLOYMENTS | jq '.deployments [0].url' | tr -d \"`
          VERCEL_DEPLOYMENT_URL="https://$VERCEL_DEPLOYMENT"
          echo "Url where to run E2E tests (VERCEL_DEPLOYMENT_URL): " $VERCEL_DEPLOYMENT_URL
          echo "VERCEL_DEPLOYMENT_URL=$VERCEL_DEPLOYMENT_URL" >> $GITHUB_ENV
          echo "VERCEL_DEPLOYMENT_URL=$VERCEL_DEPLOYMENT_URL" >> $GITHUB_OUTPUT
          echo "VERCEL_DEPLOYMENT=$VERCEL_DEPLOYMENT" >> $GITHUB_ENV
          echo "VERCEL_DEPLOYMENT=$VERCEL_DEPLOYMENT" >> $GITHUB_OUTPUT
      # Wait for deployment to be ready, before running E2E (otherwise Cypress might start testing too early, and gets redirected to Vercel's "Login page", and tests fail)
      - name: Awaiting Vercel deployment to be ready
        uses: UnlyEd/[email protected]
        id: await-vercel
        env:
          VERCEL_TOKEN: ${{ secrets.VERCEl_TOKEN }}
        with:
          deployment-url: ${{ env.VERCEL_DEPLOYMENT }} # Must only contain the domain name (no http prefix, etc.)
          timeout: 90 # Wait for 90 seconds before failing

      - name: Display deployment status
        run: "echo My deployment is ${{ fromJson(steps.await-vercel.outputs.deploymentDetails).readyState }}"
    outputs:
      VERCEL_DEPLOYMENT: ${{ steps.resolve-deployment.outputs.VERCEL_DEPLOYMENT }}
  crawl_for_broken_links:
    runs-on: ubuntu-latest
    name: Broken-Links-Crawler
    needs: await-for-vercel-deployment
    steps:
    - name: Checking links
      id: checking
      uses: ScholliYT/Broken-Links-Crawler-Action@v3
      with:
        website_url: ${{needs.await-for-vercel-deployment.outputs.VERCEL_DEPLOYMENT}}
        exclude_url_prefix: 'mailto:,https://www.linkedin.com,https://linkedin.com,https://twitter.com'
        verbose: 'true'
        max_retry_time: 30

Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/class...

// TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js

const app = express();
const events = new EventEmitter();

app.get('/connect', async (req, res) => {
  events.emit('connect', req, res);
});
events.on('connect', async (req, res) => {
  const { url, message, kick, waitAfterSendingMessage } = req.query;

  // TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js
  const browser = await puppeteer.launch({
    args: [
      `--use-fake-device-for-media-stream`,

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose-individual.yaml
docker-compose.yaml
dockerfile
Dockerfile
backend/Dockerfile
frontend/Dockerfile
github-actions
.github/actions/pnpm-install/action.yml
  • pnpm/action-setup v2
  • actions/cache v3
.github/workflows/CodeQL.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/ci-backend.yml
  • styfle/cancel-workflow-action 0.11.0
  • actions/checkout v3
  • actions/setup-node v3
  • actions/cache v3
  • actions/upload-artifact v3
.github/workflows/ci-docker.yml
  • styfle/cancel-workflow-action 0.11.0
  • actions/checkout v3
  • actions/setup-node v3
  • actions/cache v3
  • actions/cache v3
  • cygnetdigital/wait_for_response v2.0.0
  • cygnetdigital/wait_for_response v2.0.0
.github/workflows/ci-frontend.yml
  • styfle/cancel-workflow-action 0.11.0
  • actions/checkout v3
  • actions/setup-node v3
  • actions/cache v3
  • actions/upload-artifact v3
  • actions/upload-artifact v3
  • actions/upload-artifact v3
  • codecov/codecov-action v3
.github/workflows/cleanup.yml
  • actions/checkout v3
.github/workflows/dead-links.yml
  • actions/checkout v3
  • JustinBeckwith/linkinator-action v1
  • UnlyEd/github-action-await-vercel v1.2.41
  • ScholliYT/Broken-Links-Crawler-Action v3
.github/workflows/hodolint.yml
  • styfle/cancel-workflow-action 0.11.0
  • actions/checkout v3
  • tj-actions/changed-files v35
  • jbergstroem/hadolint-gh-action v1
  • actions/github-script v6
.github/workflows/locker.yml
  • dessant/lock-threads v4
.github/workflows/pr-summarize.yml
.github/workflows/release.yml
  • styfle/cancel-workflow-action 0.11.0
  • actions/checkout v3
  • actions/setup-node v3
.github/workflows/review.yml
  • sturdy-dev/codeball-action v2
.github/workflows/semantic-pull-request.yml
  • styfle/cancel-workflow-action 0.11.0
  • cypress-io/action-semantic-pull-request v4
.github/workflows/todo.yml
  • actions/checkout v3
  • alstr/todo-to-issue-action v4
npm
backend/package.json
  • @fastify/autoload ^5.7.1
  • @fastify/cors ^8.2.0
  • @fastify/helmet ^10.1.0
  • @fastify/sensible ^5.2.0
  • @immobiliarelabs/fastify-sentry ^5.0.2
  • @mgcrea/fastify-graceful-exit ^0.4.0
  • @socket.io/redis-adapter ^8.0.1
  • detect-port ^1.5.1
  • dotenv-defaults ^5.0.2
  • dotenv-mono ^1.3.9
  • fastify ^4.12.0
  • fastify-cli ^5.7.1
  • fastify-plugin ^4.5.0
  • fastify-print-routes ^2.0.7
  • ioredis ^5.3.0
  • socket.io ^4.5.4
  • typescript ^4.9.5
  • zod ^3.20.6
  • @types/detect-port ^1.3.2
  • @types/ioredis-mock ^8.2.1
  • @types/node ^18.11.19
  • @types/tap ^15.0.8
  • @typescript-eslint/eslint-plugin ^5.50.0
  • @typescript-eslint/parser ^5.50.0
  • coveralls ^3.1.1
  • cross-env ^7.0.3
  • eslint ^8.33.0
  • eslint-config-airbnb-base ^15.0.0
  • eslint-config-airbnb-typescript ^17.0.0
  • eslint-config-prettier ^8.6.0
  • eslint-plugin-import ^2.27.5
  • eslint-plugin-prettier ^4.2.1
  • eslint-plugin-simple-import-sort ^10.0.0
  • eslint-plugin-tap ^1.2.1
  • eslint-plugin-unused-imports ^2.0.0
  • get-port-please ^3.0.1
  • ioredis-mock ^8.2.6
  • npm-run-all ^4.1.5
  • output-files ^2.0.10
  • prettier ^2.8.3
  • prettier-eslint-cli ^7.1.0
  • rimraf ^4.1.2
  • tap ^16.3.4
  • ts-node ^10.9.1
  • ts-node-dev ^2.0.0
  • bufferutil ^4.0.7
  • utf-8-validate 6.0.2
frontend/package.json
  • @sentry/nextjs ^7.36.0
  • autoprefixer ^10.4.13
  • dotenv-defaults ^5.0.2
  • dotenv-mono ^1.3.9
  • next ^13.1.6
  • next-compose-plugins ^2.2.1
  • next-recompose-plugins ^1.0.2
  • next-seo ^5.15.0
  • next-sitemap ^3.1.49
  • react ^18.2.0
  • react-dom ^18.2.0
  • socket.io-client 4.6.0
  • @bahmutov/cypress-code-coverage ^1.3.2
  • @cypress/browserify-preprocessor ^3.0.2
  • @cypress/code-coverage ^3.10.0
  • @next/bundle-analyzer ^13.1.6
  • @next/env ^13.1.6
  • @percy/cli ^1.18.0
  • @percy/cypress ^3.1.2
  • @testing-library/cypress ^9.0.0
  • @testing-library/jest-dom ^5.16.5
  • @testing-library/react ^14.0.0
  • @types/jest ^29.4.0
  • @types/node ^18.11.19
  • @types/react ^18.0.27
  • @types/testing-library__cypress ^5.0.9
  • @types/webrtc ^0.0.33
  • @typescript-eslint/eslint-plugin ^5.50.0
  • @typescript-eslint/parser ^5.50.0
  • babel-plugin-istanbul ^6.1.1
  • babel-plugin-transform-class-properties ^6.24.1
  • check-code-coverage ^1.10.4
  • commitizen ^4.3.0
  • cross-env ^7.0.3
  • cypress ^12.5.1
  • eslint ^8.33.0
  • eslint-config-airbnb-base ^15.0.0
  • eslint-config-airbnb-typescript ^17.0.0
  • eslint-config-next ^13.1.6
  • eslint-config-prettier ^8.6.0
  • eslint-plugin-cypress ^2.12.1
  • eslint-plugin-import ^2.27.5
  • eslint-plugin-jest ^27.2.1
  • eslint-plugin-jest-dom ^4.0.3
  • eslint-plugin-jest-formatting ^3.1.0
  • eslint-plugin-jsx-a11y ^6.7.1
  • eslint-plugin-prettier ^4.2.1
  • eslint-plugin-react ^7.32.2
  • eslint-plugin-react-hooks ^4.6.0
  • eslint-plugin-simple-import-sort ^10.0.0
  • eslint-plugin-tailwindcss ^3.8.3
  • eslint-plugin-testing-library ^5.10.0
  • eslint-plugin-unused-imports ^2.0.0
  • express ^4.18.2
  • gzip-webpack-plugin ^1.1.3
  • jest ^29.4.1
  • jest-environment-jsdom ^29.4.1
  • jest-mock-fetch ^2.0.5
  • node-mocks-http ^1.12.1
  • npm-run-all ^4.1.5
  • nyc ^15.1.0
  • postcss ^8.4.21
  • prettier ^2.8.3
  • prettier-eslint-cli ^7.1.0
  • puppeteer ^19.6.3
  • rimraf ^4.1.2
  • shx ^0.3.4
  • socket.io ^4.5.4
  • socket.io-mock ^1.3.2
  • start-server-and-test ^1.15.3
  • swc-plugin-coverage-instrument ^0.0.14
  • tailwindcss ^3.2.4
  • typescript ^4.9.5
package.json
  • @commitlint/cli ^17.4.2
  • @commitlint/config-conventional ^17.4.2
  • @commitlint/cz-commitlint ^17.4.2
  • @testing-library/jest-dom ^5.16.5
  • commitizen ^4.3.0
  • commitlint-config-monorepo ^2.0.2
  • concurrently ^7.6.0
  • execa ^7.0.0
  • husky ^8.0.3
  • ignore-walk ^6.0.1
  • lint-staged ^13.1.1
  • npm-run-all ^4.1.5
  • recursive-readdir-synchronous ^0.0.4
  • @socket.io/pm2 ^5.2.2
  • node >=16
  • pnpm >=7
  • npm >=8.5.0
  • pnpm 7.27.0
nvm
.nvmrc
  • node 18.14.1

  • Check this box to trigger a request for Renovate to run again on this repository

Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/class...

// TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js

const app = express();
const events = new EventEmitter();

app.get('/connect', async (req, res) => {
  events.emit('connect', req, res);
});
events.on('connect', async (req, res) => {
  const { url, message, kick, waitAfterSendingMessage, leave } = req.query;

  // TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js
  const browser = await puppeteer.launch({
    args: [
      `--use-fake-device-for-media-stream`,

One Dockerfile

Although this project is a mono repo, when installed under our Dockerfile, it downloads every repo's production dependencies, so, I believe at this point we should be aiming for one singular Dockerfile so we can upload the application to docker hub and ghcr and so much more

Seems somewhat complicated given how the frontend and backend codebases are set up completely differently.
However, with a little bit of hacking, we should be able to make this work.

figure out how to optionally deny webcam permissions for testing purposes

// TODO: figure out how to optionally deny webcam permissions for testing purposes

/* eslint-disable @typescript-eslint/no-shadow */
/* eslint-disable no-underscore-dangle */
// TODO: figure out how to optionally deny webcam permissions for testing purposes

describe('Navigation', () => {
  describe('Static pages', () => {
    it('should take screenshot of the homepage', () => {
      cy.visit('/');
      // Wait until the page is displayed
      cy.findByRole('heading', {
        name: 'Rooms:',

Do not use '.deployments [0].url' blindly, but filter the deployments array firs...

timeout: 90 # Wait for 90 seconds before failing

# TODO Do not use '.deployments [0].url' blindly, but filter the deployments array first to make sure to consider only the deployments where "name" is related to the current commit

on:
  push:
    branches:
      - master
  pull_request:
  schedule:
    #        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ minute (0 - 59)
    #        โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ hour (0 - 23)
    #        โ”‚  โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ day of the month (1 - 31)
    #        โ”‚  โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ month (1 - 12 or JAN-DEC)
    #        โ”‚  โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ day of the week (0 - 6 or SUN-SAT)
    #        โ”‚  โ”‚ โ”‚ โ”‚ โ”‚
    #        โ”‚  โ”‚ โ”‚ โ”‚ โ”‚
    #        โ”‚  โ”‚ โ”‚ โ”‚ โ”‚
    #        *  * * * *
    - cron: '30 1 * * 0'
name: dead links destroyer
jobs:
  linkinator:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: JustinBeckwith/linkinator-action@v1
  await-for-vercel-deployment:
    name: Await current deployment to be ready (Ubuntu 18.04)
    runs-on: ubuntu-latest
    steps:
      - name: Resolving deployment url from Vercel
        id: resolve-deployment
        # Workflow overview:
        #   - Resolve customer to deploy from github event input (falls back to resolving it from vercel.json file)
        #   - Resolve $VERCEL_DEPLOYMENT_URL
        #     - Fetch all deployments data (by using the scope in `vercel.json`)
        #     - Resolve the last url (from `response.deployments[0].url`)
        #     - Remove the `"` character to pre-format url
        # We need to set env the url for next step, formatted as `https://${$VERCEL_DEPLOYMENT}`
        # XXX You can use https://jqplay.org/ if you want to play around with "jq" to manipulate JSON
        run: |
          # Build Vercel API endpoint used to fetch deployments
          VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT="https://api.vercel.com/v6/deployments?projectId=$VERCEL_PROJECT_ID"
          echo "Fetching Vercel deployments using API endpoint: " $VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT
          # Fetch all Vercel deployment from this project
          ALL_VERCEL_DEPLOYMENTS=`curl -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer ${{ secrets.VERCEL_TOKEN }}' $VERCEL_FETCH_DEPLOYMENTS_API_ENDPOINT`
          echo "Vercel deployments for current project: " $ALL_VERCEL_DEPLOYMENTS
          # Parse the deployments (as json) to find the latest deployment url, while stripping the double quotes
          # TODO Do not use '.deployments [0].url' blindly, but filter the deployments array first to make sure to consider only the deployments where "name" is related to the current commit
          VERCEL_DEPLOYMENT=`echo $ALL_VERCEL_DEPLOYMENTS | jq '.deployments [0].url' | tr -d \"`
          VERCEL_DEPLOYMENT_URL="https://$VERCEL_DEPLOYMENT"
          echo "Url where to run E2E tests (VERCEL_DEPLOYMENT_URL): " $VERCEL_DEPLOYMENT_URL
          echo "VERCEL_DEPLOYMENT_URL=$VERCEL_DEPLOYMENT_URL" >> $GITHUB_ENV
          echo "VERCEL_DEPLOYMENT_URL=$VERCEL_DEPLOYMENT_URL" >> $GITHUB_OUTPUT
          echo "VERCEL_DEPLOYMENT=$VERCEL_DEPLOYMENT" >> $GITHUB_ENV
          echo "VERCEL_DEPLOYMENT=$VERCEL_DEPLOYMENT" >> $GITHUB_OUTPUT
      # Wait for deployment to be ready, before running E2E (otherwise Cypress might start testing too early, and gets redirected to Vercel's "Login page", and tests fail)
      - name: Awaiting Vercel deployment to be ready
        uses: UnlyEd/[email protected]
        id: await-vercel
        env:
          VERCEL_TOKEN: ${{ secrets.VERCEl_TOKEN }}
        with:
          deployment-url: ${{ env.VERCEL_DEPLOYMENT }} # Must only contain the domain name (no http prefix, etc.)
          timeout: 90 # Wait for 90 seconds before failing

      - name: Display deployment status
        run: "echo My deployment is ${{ fromJson(steps.await-vercel.outputs.deploymentDetails).readyState }}"
    outputs:
      VERCEL_DEPLOYMENT: ${{ steps.resolve-deployment.outputs.VERCEL_DEPLOYMENT_URL }}
  crawl_for_broken_links:
    runs-on: ubuntu-latest
    name: Broken-Links-Crawler
    needs: await-for-vercel-deployment
    steps:
    - name: Checking links
      id: checking
      uses: ScholliYT/Broken-Links-Crawler-Action@v3
      with:
        website_url: ${{needs.await-for-vercel-deployment.outputs.VERCEL_DEPLOYMENT}}
        exclude_url_prefix: 'mailto:,https://www.linkedin.com,https://linkedin.com,https://twitter.com'
        verbose: 'true'
        max_retry_time: 30
        max_retries: 5

Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/class...

// TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js

const app = express();
const events = new EventEmitter();

app.get('/connect', async (req, res) => {
  events.emit('connect', req, res);
});
events.on('connect', async (req, res) => {
  const { url, message, kick, waitAfterSendingMessage, leave } = req.query;

  // TODO: Use getBrowser.js from https://github.com/BrycensRanch/Focus-SIS/blob/feat/classroom-integration/getBrowser.js
  const browser = await puppeteer.launch({
    args: [
      `--use-fake-device-for-media-stream`,

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.