GithubHelp home page GithubHelp logo

holtwick / peer2school Goto Github PK

View Code? Open in Web Editor NEW
169.0 15.0 67.0 5.64 MB

👩🏻‍🏫 Simple P2P teaching platform starting from the 1st class

Home Page: https://peer.school

License: MIT License

JavaScript 60.88% HTML 4.96% Vue 18.47% CSS 0.50% PHP 0.20% SCSS 14.99%
school education javascript webrtc videochat secure whiteboard p2p

peer2school's Introduction

peer.school

Simple P2P teaching platform starting from the 1st class

Follow @apperdeck and @holtwick for updates.

The video conferencing part evolved further into Brie.fi/ng.

You should also consider BigBlueButton as an alternative. It has not end-to-end encryption but is probably better suited for larger groups.


The following is in German language due to the related German language hackathon

Anmerkung: Wenn der einfache Betrieb, die Anonymität und die Ende-zu-Ende-Verschlüsselung der Lösung nicht im Vordergrund steht, sollte auch BigBlueButton in Betracht gezogen werden. Das Projekt ist ebenfalls frei und verfolgt ansonsten ein sehr ähnliches Konzept.

peer2school's People

Contributors

albanobattistella avatar albrecht-flo avatar amacado avatar chrisonntag avatar dependabot[bot] avatar dmonad avatar fbocquet avatar fehnkera avatar holtwick avatar imgbotapp avatar sebastianspeitel avatar t1bolus 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  avatar  avatar  avatar  avatar  avatar

peer2school's Issues

Melden - Lehrerseite

  • hervorheben von Schülern, die sich melden -> farblich hervorheben, listen umsortieren

Pupils can raise their hand

  • pupils can "raise their hand" via a button
  • pupils can cancel their raised hand
  • the teacher can see all raised hands

Growing whiteboard

The latest idea is to keep the width of the whiteboard 100% on all devices but let it grow vertically. It should scroll new content into view automatically or otherwise signal that there is new content in the hidden area. See Apple Notes pencil support as an example.

Originally posted by @holtwick in #57 (comment)

Schüler kann mit dem Smartphone teilnehmen

Als Schüler kann an mit einem halbwegs aktuellem Android- und iOS-Smartphone an dem virtuellen Unterricht teilnehmen.

Akzeptanzkriterien

  • Schüler kann das Bild des Lehrer sehen
  • Schüler kann das Whiteboard sehen und darauf navigieren
  • Schüler kann zwischen beiden Ansichten switchen (Toogle)

SSL-Weiterleitung (https)

Es sollte im Produktivsystem (peer.school) eine Weiterleitung von http:// auf https:// eingerichtet werden.

Multilanguage

Provide the project and website in multiple languages:

  • English
  • German

Aufzeigen in der GUI darstellen

Aktuell gibt es nur den schlecht platzierten Aufzeigeknopf im Chat und eine interne Liste pointOuts die speichert wer aktuell alles aufzeigt. Es müsste für die GUI noch gemacht werden:

  1. Den Knopf an eine schönere Stelle verschieben. Soll der Knopf nur für Schüler da sein oder auch für den Lehrer?
  2. Die Liste schön grafisch darstellen. In der Liste werden die Ids gespeichert. Ein Mapping von Id zu Name existiert aber schon im Projekt. Auch hier müsste überlegt werden ob nur der Lehrer oder alle die Liste sehen können
    (3.) Wohl eher nachrangig, aber wenn der Lehrer jemanden dran nehmen soll müssten die Namen in der Liste anklickbar sein. Dafür müsste aber intern dann auch eine drannehmen-Funktion hinzugefügt werden (evtl durch @fehnkera und @T1bolus )

Bei Rückfragen zur interner Implementierung gerne an @fehnkera und @T1bolus .

Kollaboration

Hi,
ich komme aus einer Gruppe in der Herausforderung 019 bei wirvsvirus.
Wir haben euch gefunden und gemerkt, dass unsere Zielvorstellungen sich sehr ähneln, deswegen die Frage wo ihr gerade eure interne Kommunikation durchführt und wie wir am besten mit euch in Kontakt treten können.

Grüße
Sebastian

Abgleich der Teilnehmerliste für neue Teilnehmer

Derzeit wird die Liste mit den aktuellen Teilnehmernamen nicht mit neuen Teilnehmern synchronisiert. Dazu müsste wahrscheinlich nur in den "connect" ein hook geschrieben werden, der die state.peer einmal herumschickt.

Teacher can open a document on a whiteboard and share it with the class

  • teaser can upload a document from the hard drive (low-hanging file formats at first; e.g. PNG, JPG, PDF)
  • pupils can see the the document on the whiteboard
  • it is up to dev team to choose whether documents can be added to any whiteboard or whether we should introduce different types of sharable boards (whiteboard, document board, ...)
  • optional: teacher can annotate with given whiteboard tools

Teilnehmer haben die Möglichkeit, eigene Namen zu vergeben

Bisher werden Identifier angezeigt, diese werden durch Namen ersetzt. Beim Beitreten werden Schüler nach einem Namen gefragt. Ein automatisch abgespieltes Audio "Wie heißt du?" hilft Nichtlesern. Dieser Name wird dann im Chat und beim Aufzeigen verwendet.

Aufrufen/Wortmeldung - Lehrerseite

  • schüler kann aufgerufen werden (Aktivierung)
  • Bild von sprechendem Schüler wird angezeigt
  • Schüler kann wieder stummgeschalten werden (Deaktivierung)

introducing an additional class mode: group work

Die Schüler werden zufällig in Zweiergruppen aufgeteilt. Jede Zweiergruppe hört und sieht den jeweiligen Partner und nur den jeweiligen Partner.

Der Wechsel zwischen den Modi wird in #33 implementiert.

Activate student

If a student sends a signal to participate, the teacher should be able to activate him in order to have him communicating to all other students and the teacher.

  • Activate / deactivate video and audio
  • Activate / deactivate whiteboard usage

Probably some limitation makes sense like:

  • Choose drawing tool
  • Disable trash bin
  • Allow undo
  • Choose color

Setup TURN server

For those that do not get through firewalls we'll need a TURN server

Video SFU / Conferencing

While developing the video chat solution in peer.school it turned out that multi-peer streaming is not practicable for a large number of participants due to bandwidth and performance (see #63). An SFU (Selective Forwarding Unit) was required that would receive participants video and audio streams and forward those the the participants, reducing the numbers of connections a client has to handle.

The current implementation uses Jitsi for this purpose: https://github.com/jitsi/lib-jitsi-meet

Other solutions might also be worth considering, like mediasoup:

This should also fix related issues like #65 #34

First Launch Experience - FLE

Make sure the users understand the UI. Either display an annotated screenshot or have a guided tour via popovers. Example illustrations:

Lehrer_-_Erklaerbild

Schueler_-_Erklaerbild

Gestaltung der GUI für die frontalunterricht-basics.

Als Schüler möchte ich alle für mich wichtigen Elemente übersichtlich dargestellt bekommen:

  • das Whiteboard (#7 )
  • das Video des Lehrers (#28 und #20 )
  • mein eigenes Bild
  • eventuell das Bild eines aufgerufenen Schülers (Kommunikation mit den Assignees von #19 )
  • eine Namensliste aller Teilnehmer (#30 )
  • den Chat.
    Als Lehrer möchte ich alle für mich wichtigen Elemente übersichtlich dargestellt bekommen:

Probleme momentan sind:

  • Bei vielen Teilnehmern wird der Chat "aus dem Bild gedrängt".
  • Der Pull-Request zur Anzeige der Videos #35 ist wegen Merge-Konflikten nicht abgeschlossen.

The teacher can communicate privately with a single pupil.

  • the teacher can address a single student
  • video chat (synchronous communication)
  • the student can sent private messages to the teacher (only asynchronous communication)
  • documents, maybe audio messages, text messages (asynchronous communication)

Whiteboard aspect ratio

Make sure the whiteboard fully displays on all devices. The idea is to decide to have a certain aspect ratio like 4:3 or 16:9 and than scale up or down to show most of the content on all devices.

  • Decision for aspect ratio
  • Different layouts on portrait and landscape
  • Other layout optimizations for different devices and environments

Introduce teacher GUI

So far there is only one way to connect to a classroom. We need two different roles, teacher and pupil. This issue does not contain implementing teacher functionality, but providing the infrastructure for two different GUIs with different functions available and different views of the classroom.

Teachers can call a student

  • the teacher can call a student (independent of raised hands)
  • the called student is visible and audible for all other students
  • the teacher can finish the calling situation

Scalability & Performance

Currently peer.school is implemented as a "full mesh network" i.e. each client is connected with each other. So even if only the teacher is streaming she has to send the same stream to as many peers as there are students online. The same for the student, if he is active.

There are multiple solutions to the issue:

  1. Keep it that way and assume the teacher has enough bandwidth (unlikely)
  2. Use a central server that distributes the video signal to the clients like https://jitsi.org/ (not end-to-end encrypted!)
  3. Have each peer to proxy to a certain number of other peers (consumes bandwidth on student's side)

So all solutions have trade-offs. Here some links about the topic:

Aufrufen/Wortmeldung - Schülerseite

  • Bild von aufgerufenen Schüler wird angezeigt (unter/neben Lehrer)
  • Schüler der aufgerufen wurde bekommt einen Hinweis, dass er sprechen darf

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.