[POC/Spike] - HAML/Ruby Sidebar

This POC is related to the super sidebar epic and you can see the full design there.

Problem to solve

Given all the updates to the sidebar required for the navigation changes, we may be better served re-writing the sidebar in HAML/Ruby from the start. However, there are a lot of unknowns so we should create a POC to see what we can build and how.

Interactive parts of the design would need to be implemented in one or more of these ways:

  • The usual Vue instantiating on a target element on page load
  • Relying on native HTML, e.g., <details> for show/hide behaviour
  • Small amounts of vanilla JS

Proposal

Let's spend a week looking into a POC for a sidebar in HAML/Ruby, and how to add interactivity to it. The current project sidebar would be a good candidate as there's a lot going on with nesting, badges, permissions, etc. It doesn't need to be pretty, it doesn't need to do everything, it doesn't even need to work properly. But it does need to help us answer the following questions:

Questions to answer

  • What does that architecture look like? How would we add interactivity? What kinds of interactivity do we need? How much can be hidden away in actual Vue apps because they're not initially visible?

  • What information do we need from the server, in what format? We'd very likely re-use what's done in #381718 (closed).

  • How do we get that information to the UI? We'd very likely re-use what's done in #381718 (closed).

  • Do we move the top-bar navigation into the sidebar on day 1? If we're re-writing the sidebar, does it make sense to include the current "top bar" navigation elements right from the start, or slowly iterate towards moving them over?

  • What edge-cases might we run into? We don't need to be exhaustive here, but any struggles we have in creating a POC will likely be ten-fold in the creation of the actual navigation. Let's make sure we call them out early so we can plan for them accordingly.

  • How much effort is required to build this properly? The POC should be built with a low-level of shame. If we threw it away and built it for real, how much of an effort would it be? How can we break that effort down?

What does success look like?

If we can answer most of the questions above and come out of this with a better idea of the effort required to migrate this new navigation, this POC will be a success. To be clear, success isn't a fully-working vue-based sidebar. The final result of this POC should be a hideous, buggy mess that guides us towards how to build it properly.