GithubHelp home page GithubHelp logo

edrys-org / edrys Goto Github PK

View Code? Open in Web Editor NEW
289.0 10.0 32.0 10.87 MB

Edrys is an open and modular remote teaching platform (and the first live LMS)

Home Page: https://edrys.org

License: Mozilla Public License 2.0

JavaScript 11.53% TypeScript 29.30% HTML 6.00% Dockerfile 0.30% SCSS 0.35% Vue 52.33% Makefile 0.19%
edrys education classroom virtual-classroom remote-teaching edtech

edrys's Introduction


Edrys is an open-source app that helps you teach remotely.

✨ Features

  • Live Classrooms: Click on a student to talk to them, or create rooms and drag students in & out
  • Remote Labs: Allow students to interact with your real lab equipment remotely & asynchronously
  • Modular: Build your class by combining Modules or make your own with an easy real-time API
  • Easy to start: Download and run to start, no databases or any other dependencies to set up
  • Privacy-friendly: Passwordless auth with minimal student PII stored
  • Fast & Modern: Based on Deno and Vue with a deliberately small codebase
  • Free and Open Source, forever: No paywalled features or lock-in

πŸ“Έ Screenshots

  • Classes dashboard: Select what class to enter or create as many as needed
  • Teacher class dashboard: Teachers get an overview of all rooms and can move students around to chat
  • Student class view: Students see their current room and are able to interact with others in the room
  • Class settings: Teachers can manage memberships, modules, and more to customize their class

πŸ’‘ Use cases

  • Live online teaching: One to one, one to many, and many to many live classrooms
  • Remote Labs: Allow students to access and control live equipment remotely (eg. remote Arduino fleet)
  • Flipped classrooms and blended learning: Create modules to deliver virtually any content asynchronously
  • Group coursework: Dynamic breakout rooms and easy jumping between rooms
  • Automated Grading: Use Stations to securely auto-grade student submissions into your LMS

With modular architecture anything is possible. A whiteboard, a discussion forum, polls, or even remote Arduino programming, are all easily encapsulated into shareable modules (explore Edrys modules on GitHub).

πŸ’» Getting Started

Start using Docker:

docker run -p 8000:8000 crosslab/edrys:latest

Alternatively, you can clone this repo and run using Deno:

deno run -A dist/app.js --address localhost:8000 --serve-path dist/static

Next,

  • πŸŽ‰ Visit localhost:8000 and log in, the email verification code will be logged in the server console
  • πŸ“– Please visit our documentation to continue setting up your server and adding Modules
  • πŸ’¬ For questions and discussions, please visit our Gitter community
  • πŸ“° For updates and showcases, join our newsletter
  • 🐞 For bug reports and feature requests, visit the issues tab

🏦 Support & Partnerships

Edrys.org provides support and priority development as a service. For partnerships, donations, support, or just to chat please contact [email protected].

Sponsors, partners, and known adopters:

Edrys Β Β Β Β  Β Β Β Β  Β Β Β Β 

edrys's People

Contributors

andre-dietrich avatar edrysorg avatar kfessel avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

edrys's Issues

Edrys.org is down which affects all modules

Dear @edrysorg / Adam ... I hope your are well, edrys.org is down ... which would not be such a big deal, but the github page refers to it and I have not the rights to change it ... unfortunately all edrys.js sources cannot be loaded anymore which damages all modules ... could you grant me some more rights or change this in the settings yourself?

Thanks a lot ... AndrΓ©

npm warns about deprectated packages and possible security issues in client

npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated [email protected]: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility
npm WARN deprecated [email protected]: flatten is deprecated in favor of utility frameworks such as lodash.
npm WARN deprecated @types/[email protected]: This is a stub types definition. anymatch provides its own type definitions, so you do not need this installed.
npm WARN deprecated @types/[email protected]: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed.
npm WARN deprecated [email protected]: This SVGO version is no longer supported. Upgrade to v2.x.x.
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated [email protected]: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.

15 high severity vulnerabilities

Disconnected stations

Hello @edrysorg I think there is a general problem, that somehow detaches the station. Here are the steps to repeat this bug:

  1. Add a module to a classroom, maybe the Markdown-module
  2. Open the station
  3. Move your User to the station
  4. Change some parts within the configuration
  5. Reload the station ...

The station sees itself and sometimes also the users, but on the other side, the station does not appear ...

Here is a terminal output:

DEBUG Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) ["Disconnection","TerminalXXX"]
DEBUG Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) ["SSSSSSSSSSSSSSS",{"isTrusted":false}]
DEBUG Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) ["SSSSSSSSSSSSSSS",[{"id":"","target":{}}]]
DEBUG Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) ["SSSSSSSSSSSSSSS",{"users":{"[email protected]":{"displayName":"Teacher ","room":"Lobby","role":"teacher","dateJoined":1676633862662,"handRaised":false,"connections":[{"id":"","target":{}}]}},"rooms":{"Lobby":{"studentPublicState":"","teacherPublicState":"","teacherPrivateState":""},"Teacher's Lounge":{"studentPublicState":"","teacherPublicState":"","teacherPrivateState":""}}}]
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 40CV-UdYT2esOLLemOYrE undefined {}
[uncaught application error]: Http - connection closed before message completed

    at Object.respondWith (deno:ext/http/01_http.js:317:27)
[uncaught application error]: Http - connection closed before message completed

request: {
  url: "http://localhost:8000/data/readLiveClass/40CV-UdYT2esOLLemOYrE?displayName=TerminalXXX&jwt=eyJhbGciO...",
  method: "GET",
  hasBody: false
}
response: { status: 200, type: undefined, hasBody: true, writable: false }

    at Object.respondWith (deno:ext/http/01_http.js:317:27)
WWWWWWWWWWWWWWWWWWWW 1
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 40CV-UdYT2esOLLemOYrE {
  autoAssign: undefined,
  users: {
    TerminalXXX: {
      displayName: "TerminalXXX",
      room: "Station TerminalXXX",
      role: "teacher",
      dateJoined: 1676633874374,
      handRaised: false,
      connections: [ [Object] ]
    }
  },
  rooms: {
    Lobby: { studentPublicState: "", teacherPublicState: "", teacherPrivateState: "" },
    "Teacher's Lounge": { studentPublicState: "", teacherPublicState: "", teacherPrivateState: "" },
    "Station TerminalXXX": {
      studentPublicState: "",
      teacherPublicState: "",
      teacherPrivateState: "",
      userLinked: "TerminalXXX"
    }
  }
} {
  "40CV-UdYT2esOLLemOYrE": {
    autoAssign: undefined,
    users: {
      TerminalXXX: {
        displayName: "TerminalXXX",
        room: "Station TerminalXXX",
        role: "teacher",
        dateJoined: 1676633874374,
        handRaised: false,
        connections: [Array]
      }
    },
    rooms: {
      Lobby: { studentPublicState: "", teacherPublicState: "", teacherPrivateState: "" },
      "Teacher's Lounge": { studentPublicState: "", teacherPublicState: "", teacherPrivateState: "" },
      "Station TerminalXXX": {
        studentPublicState: "",
        teacherPublicState: "",
        teacherPrivateState: "",
        userLinked: "TerminalXXX"
      }
    }
  }
}
DEBUG Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) ["Class Update","40CV-UdYT2esOLLemOYrE",{"users":{"TerminalXXX":{"displayName":"TerminalXXX","room":"Station TerminalXXX","role":"teacher","dateJoined":1676633874374,"handRaised":false,"connections":[{"id":"","target":{}}]}},"rooms":{"Lobby":{"studentPublicState":"","teacherPublicState":"","teacherPrivateState":""},"Teacher's Lounge":{"studentPublicState":"","teacherPublicState":"","teacherPrivateState":""},"Station TerminalXXX":{"studentPublicState":"","teacherPublicState":"","teacherPrivateState":"","userLinked":"TerminalXXX"}}}]
INFO Fri Feb 17 2023 12:37:54 GMT+0100 (Central European Standard Time) 2023-02-17T11:37:54.375Z GET http://localhost:8000/data/readLiveClass/40CV-UdYT2esOLLemOYrE?displayName=TerminalXXX&jwt=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ3QHcuZGUiLCJpYXQiOjE2NzY2MjI5MzU0MDMsImV4cCI6MTY3OTIxNDkzNTQwM30.sqHPHIhubJutvcfm6qM9mwfSYyMie8RPJ5ZXtdOuXFVa_vOWA3pr4i3q3rb6u1_Er3uNe4jwNH1Gdw2pwKMTuQ&isStation=true

Within the browser I get the following error:

The connection to http://localhost:8000/data/readLiveClass/Nxb0Hrr76mz2J75X54-ur?displayName=Teacher+&jwt=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ3QHcuZGUiLCJpYXQiOjE2NzY2MjI5MzU0MDMsImV4cCI6MTY3OTIxNDkzNTQwM30.sqHPHIhubJutvcfm6qM9mwfSYyMie8RPJ5ZXtdOuXFVa_vOWA3pr4i3q3rb6u1_Er3uNe4jwNH1Gdw2pwKMTuQ was interrupted while the page was loading.

I think one reason is, if a station is opened, it is always associated to a teacher. While reloading, all students and teachers are move back to the lobby. Also the teacher that is associated to the station, even if it is not directly within the room, but only if he opens the station ...

client does not build with node 17 or newer

node:internal/crypto/hash:67
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:135:10)
    at module.exports (/app/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/app/node_modules/webpack/lib/NormalModule.js:471:10)
    at /app/node_modules/webpack/lib/NormalModule.js:503:5
    at /app/node_modules/webpack/lib/NormalModule.js:358:12
    at /app/node_modules/webpack/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/app/node_modules/webpack/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at Array.<anonymous> (/app/node_modules/webpack/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
    at /app/node_modules/graceful-fs/graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v17.9.1

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.