Overview
Flamenco is the open-source render farm web application created by the Blender Foundation. The primary goal of this project was to implement a settings page to make it easy for users to configure the Flamenco Manager. The secondary goal was to implement UI fixes and enhancements to improve the overall user experience with the web application. I contributed a total of 20+ pull requests to Flamenco which included fixing bugs, refactoring code and implementing the following features:
Design
Because Flamenco has over 20 customizable settings, I decided on a minimalistic form and divided the amount of settings into five manageable categories: Core Settings, Timeout & Failures, Storage, MQTT, and Variables.
I decided on a side dialog and a subheader that scrolls along with the user’s screen, making it easy to access essential functions regardless of whether the user is at the top, middle, or bottom of the form. The side dialog provides a brief description about the page, along with a description explaining what each setting does. The description for each setting is dynamically rendered based on which input the user is currently focused on, minimizing clutter and only showing what’s necessary based on where the user is clicking. By keeping the descriptions in the sidebar, text is minimized on the form, keeping it clean and making it easy for users to scan through. The subheader acts as a navigation bar specific to this page, making it easy for users to jump to a specific section of the form. The subheader also contains the Save button, so that users can conveniently save their changes regardless of what scroll position they are at. Despite the fact that there are a lot of settings to tinker with, the sticky elements make it easy for users to jump around the form and find additional info without adding to the length of the page, minimizing the amount of time a user spends scrolling up and down a page.
Mockup of Variables
The Variables section was unique in that the user could dynamically add variables, and have multiple configurations for each variable. Several iterations revealed that more attributes were required, like the audience. Users should be able to add/delete variables, and also add/edit/delete various configurations for each variable.
Initial implementation of Variables
Final implementation of Variables