I use this in my classes to easily record, manage and upload arbitrary amounts of student presentation videos.
Features include:
Uses React, Firebase, Bootstrap and (my own) DBDI (data-binding by dependency injection).
Snapshot from an early version shows a presentation list that is currently live (presenting in progress or about to start):
data by cohort
user registration with cohort consideration
make relationships work
clean up the TODO lists!
titles for session
start doing those playlists
presentationStatus gets overridden when explicitely starting the "preparing" presentation
when fileId has been set before, "startPresentationSessionStreamRecording" causes problems: set_streamFileId(streamArgs, presentationId), set_presentationFileId({ presentationId }, presentationId),
Space: no errors shown when trying to save and out of space (or in general when writing blobs)
Show connection status in live session?
Operator/presenter should have it easier to double check user name + title?
user operator & new user access privileges
creating new presentations from list of previous session
evaluations, note taking, tracking "projects" (or "teams"?)
multiple cohorts!!!
when user logs in sees self highlighted in list
More explicitely enable the different debug switches?
Basic user management
many2many relationships
讓 user 提供 檔案 連結
External mic support
be able to keep writing file, option not to override
button to shuffle PENDING presentations
import + ready up this week's presentation list!
non-admin [O]perator
generate per session playlists
[N, O, (E)] network-enabled presentation timer! -> https://firebase.google.com/docs/database/web/offline-capabilities#server-timestamps -> var offsetRef = firebase.database().ref(".info/serverTimeOffset"); offsetRef.on("value", function(snap) { var offset = snap.val(); var estimatedServerTimeMs = new Date().getTime() + offset; });
show user last login time
generate per user playlists
proper project + user tagging for presentations
project management -> account for every active project -> possibly get a status update for each presentation that has a project in its focus -> archive/unarchive projects -> start new project based on presentation
-> generate presentation list for new session -> ideally based on all currently active projects + any individual user who does not have a project -> (possibly cycle based?)
-> generate per project playlists
-> fix layout for [O]perator to prevent elements from moving around (disabled/invisible, not hidden!)
Proper testing setup
讓他們上傳他們的簡報
提出問題/提示給他們 (notifications)
客觀的寶寶村制度??? -> Improved presentation mode -> [N] Who is up? -> [N] Who is next? -> let non-dev users easily manage + delete files -> automatic audio noise + volume adjustment?
-> [E] inline editing
-> features for normal users: -> presentation session + presentation -> own + participating playlists -> see + review feedback -> give/edit/evaluate feedback -> project view -> let users provider supplementary material (at least presentation URL)
Volume indicator:
Screen recording
Recording should be possible even when the internet is cut off.
fetch
+ StreamReader
: fetch('localhost').then(res => res.body.getReader().read().then(({ done, value }) => console.log(new TextDecoder("utf-8").decode(value))));
npm config edit
cache-lock-retries=1000