Link: https://schedule.theglobalseal.com/
This app is designed to help users navigate the five YouTube live streams that will be happening during the Global C.R.E.D. event. Each live event has at least one category it belongs to (Language Learners, Language Educators, etc). The goal of this app is to display the events scheduled for each category and offering users a way to access the live stream of the event that is live. It will also be used as an archive of past events once Global C.R.E.D. is over, offering a way to browse events and view the recorded videos of live events.
Adding events from API (deactivated on production):
Add new live event via POST request:
URL: {app-url}/api/events/live/ with body:
{ "title": "Live Event from API Call", "presenter": "Phillip Bindeman", "organization": "Idaho Center for Language, Regional Monopoly of Languages and Locations", "duration":120, "date": "2020-11-04T21:58:49.585Z", "category": 3, "link": "http://theglobalseal.com/cred", "pastlink": "http://theglobalseal.com/pastlink", "description": "This event explores the ideas of intersectionality.", "bio": "International Education Consultant" }
-
dateis optional (leaving blank will set to current Date) -
pastlinkis also optional
1 – Language Learners
2 – Language Educators
3 – Employers, Language Service Providers and H.R. Personnel
4 – Administrators, Counselors, and College Recruiters
5 – Language Learning Content and Assessment Providers
Live Events:
-
Live Event timezones are displayed correctly in the user's timezone.
-
Events are ordered Live, then Future, then Past depending on the date and duration. Live, future, and past have an appropriate header:
Events happening right now,Events in {x}andEvents {x} ago -
Events that have a link to the category live stream (i.e. in the
Language Learnercategory, clickingWatch Eventin an event modal of an event that is currently live will open a new tab to the category live stream. -
When new events are added through Compass or the API the event's timezone is saved correctly in UTC in the database and is converted correctly to the user's timezone when viewed it in the app.
Pre-Recorded:
-
Events are organized in alphabetical order.
-
Start time of event is not displayed.
Each category displays only events that are in that category. Language Learners will only return events that have category 1
- If an
Live EventorOn-Demandhas multiple categories, both1and2, for example, it will display as an event both onLanguage LearnersandLanguage Educators
-
If Live Events are selected, only
Live Eventsfor that category will be displayed (i.e. Live Language Learners Events) -
If Pre-Recorded is selected, only
Pre-Recordedwill appear for that category (i.e. Pre-Recorded Language Educators)
-
The correct start time, duration, presenter, organization, event, event description, and bio is displayed in the modal when clicking the event.
-
Past Event:
-
The modal header displays
Past event from {date} -
The
Watch Recordingbutton is disabled if the event doesn’t contain apastlinkand a tooltip appears with the text saying the event will be available soon on hover or tap on mobile. -
The
Watch Recordingbutton is enabled if the event contains apastlinkand clicking theWatch Recordingbutton opens a YouTube video in a new tab, NOT the recording of the live stream.
-
-
Live Event:
- The modal header displays a red
Live Badgewith information on how much time has passed since the event has passed. - The
Join Eventbutton is active and links to the link live stream.
- The modal header displays a red
-
Future Event:
-
Modal header displays
Scheduled event in a {x} -
Join Eventbutton is disabled, a tooltip appears with the same text as the Modal header on hover or tap on mobile.
-
-
Pre-Recorded Event:
-
The header displays
On-demand event available in {x} -
The current time is past availability date (
datefield in prerecrdedevents.js schema), -
The
Watch Eventbutton is enabled and opens a new tab on click the video. -
The availability date is still in the future
-
The
Watch Eventbutton is disabled and a tooltip appears with the same text as the header on hover or tap on mobile.
-
-
The popup resizes the height and width of the iFrame depending on the size of the window.
-
Clicking on the header of the popup hides into a button.
-
Clicking the button shows the popup.
- The schedule is automatically updated every 45-seconds
-
Width Definitions:
-
Desktop: Greater than
720px width -
Tablet:
600px to 720px width -
Mobile less than
600px width
-
-
From mobile to desktop, the app resizes correctly: The side navigation bar switches between mobile, tablet, and desktop mode depending on the width of the window.
-
The sidebar is hidden when the width is below 500px, a top menu bar appears with a hamburger to open and close the sidebar
-
In mobile, the top app bar is hidden when scrolling down and reappears when scrolling up. The top app bar is not visible in other views than mobile.
-
In tablet and mobile view, hovering or tapping on a sidebar menu item brings up a tooltip with the name of it.
-
In mobile, tapping away from the menu, hides it.
-
There are no unnecessary scrollbars.
The app renders correctly in the following browsers:
-
Edge 44
-
Chrome 80+
-
Safari 12+
-
Firefox 40+
- Add your schedule to the
master_template.xlsxtemplate, following the format in the template - IDs can overlap for presenters and events, but must be unique in their category
- Use
https://in all of your URLs - Run
node processData.jsin order to read and upload all data inmaster_template.xlsx
- Create a
.envfile and in that file add a lineDATABASEequal to your mongoURI - Run
npm install - Run
npm run frontend-install - To start both backend and locally run
npm run dev

