Skip to content

Improve cross-site navigation in workshops (and possible outside) #697

@frankier

Description

@frankier

One piece of feedback that came up again and again was that people found navigating all the different bits quite confusing. One thing that might help is a global topbar, visible across all CodeRefinery stuff people expect to use in the workshop. This includes:

  • The CodeRefinery homepage (under coderefinery.org)
  • The main workshop page (under coderefinery.org)
  • The pages of each of the lessons (under coderefinery.github.io)
  • The HedgeDoc (under notes.coderefinery.org)
  • The TwichTV stream (under twitch.tv)

This might take a reasonable amount of development work, including changes to how the URLs are structured. The basic approach I propose is one similar to the webpages from my university. See here: https://www.jyu.fi/fi . At the top there is a bar which is not only injected into these pages, but also into many web applications e.g. Moodle. This works by all pages having a target HTML element and a script https://jybar.app.jyu.fi/loader.js?5 . This causes a bit of jank, but this can be mitigated a bit (e.g. make the target element the correct height).

Subtask 1: Move everything under coderefinery.org

I think it is possible to carry on using GitHub pages, and just set up a custom domain so that pages appear at github-pages.coderefinery.org, as has been done here https://github-pages.ucl.ac.uk/rsd-engineeringcourse/

For TwitchTV, it could be embedded in an iframe like so: https://dev.twitch.tv/docs/embed/everything

Subtask 2: Basic topbar (can be completed in parallel with subtask 1)

This should link to the main CodeRefinery stuff which we want accessible from anywhere. It is useful because it can at least because it can act to get back to the main site from the lessons:

  • CodeRefinery Home
  • Current workshop home if within 7 days
  • CodeRefinery TwitchTV + Youtube combined
  • CodeRefinery Lessons index
  • Gear/settings -> Hide on TwitchTV

Subtask 3: In-workshop mode bar

This is the reason for the single domain. We need to set a cookie to say whether the user is in-workshop mode and which workshop they are attending.

In the in-workshop mode, the bar can show more contextual information depending on the lesson schedule. It should show:

  • Workshop home or workshop schedule if it's not the same
  • CodeRefinery TwitchTV
  • HedgeDoc
  • Display current workshop day
  • Contextual
  • Quit workshop mode

The way that Contextual works depends on the page, but it could be e.g.:

  • On HedgeDoc
    • Previous/next HedgeDoc (go to and from archived HedgeDocs)
  • On the a lesson page
    • Indicate which day the current lesson is for and what part of the day it's scheduled for (e.g. Day 2: lesson 2/3)
    • Previous/next lesson (but indicate e.g. back to the previous day's lesson, forward to next day's lesson so people know when they're going across days) (the bar Javascript gets this info from a workshop metadata JSON somewhere)
  • On TwitchTV
    • Stream will start in x mins
    • Back to stream (in case people start watching the recordings)
    • View previous days on YouTube

The way to enter in-workshop mode should be a big button on the workshop web page. If this isn't possible (e.g. we want to protect the HedgeDoc) we could also have a magic link that would go in the first workshop email. If we want to get really fancy, the contents of the cookie could be protected with a MAC.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Idea

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions