{"id":1406,"date":"2020-08-04T09:00:18","date_gmt":"2020-08-04T07:00:18","guid":{"rendered":"https:\/\/dradisframework.com\/blog\/?p=1406"},"modified":"2020-08-03T21:28:19","modified_gmt":"2020-08-03T19:28:19","slug":"designing-developing-tylium","status":"publish","type":"post","link":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/","title":{"rendered":"Designing &#038; Developing Tylium"},"content":{"rendered":"\n<p>On March 2nd, 2020, we released <em><a href=\"https:\/\/dradisframework.com\/blog\/2020\/03\/new-in-dradis-pro-v3-6\/\">Tylium<\/a><\/em>, a new layout for Dradis projects replacing the long-lived Snowcrash layout. Let\u2019s go into some of the details of the work that went into designing Tylium.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium_dashboard.png\" alt=\"\" class=\"wp-image-1407\"\/><figcaption>Dashboard view of the new Tylium layout<\/figcaption><\/figure>\n\n\n\n<p>I\u2019m Matt Budz, the product designer for Dradis, I help create new Dradis features and re-design some of the older ones that need some TLC.<\/p>\n\n\n\n<p>First, let\u2019s start with some background. Snowcrash has been the layout for Dradis projects since 2013. Some users may remember way back when it was released as part of\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/dradisframework.com\/blog\/2013\/12\/new-in-dradis-pro-v19\/\" target=\"_blank\">v1.9<\/a>. It was a shiny new UI built using the now-ancient Bootstrap 2 with a handful of 3rd-party plugin stylesheets sprinkled on top. Many new features were added over the years, but the look and feel of the app became dated. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/Screen-Shot-2020-07-30-at-3.36.39-PM.png\" alt=\"\" class=\"wp-image-1408\"\/><figcaption>Dashboard view of the old Snowcrash layout<\/figcaption><\/figure>\n\n\n\n<p>My goal was to make the app look more modern and to update it to Bootstrap 4. But what does <em>more modern<\/em> entail?<br><br>I wanted to retain the long-used brand colors for both Dradis CE and Pro editions and adjust the remaining color palette to improve color contrast while ensuring the changes wouldn\u2019t be too jarring for existing users.<br>Increasing on-screen real-estate was a priority during the redesign. Adjusting spacing and incorporating a collapsable sidebar that could move out of the way provided more space. Snowcrash had some inconsistent visual hierarchy, especially around header &amp; paragraph text sizes. <\/p>\n\n\n\n<p>Some elements lacked visual cues to inform users that more information could be seen by scrolling. Additionally, Snowcrash had various cluttered views with a lot of information and action links that could be tucked away and accessed only when needed. I wanted to create an action menu (we call it the <em>dots-menu<\/em>) that could be used for any resource in virtually any view. I wanted this to have a specific look so that users would be able to recognize that there is something more they can do when they see this menu &#8211; like adding, editing, moving, and so on. <\/p>\n\n\n\n<p>I embarked on this re-design journey knowing that I wanted to change the overall layout of the app but not completely re-design the individual partials that are rendered within the layout&#8217;s different views. I decided it would be best to work on those as the respective features got updated or other features got added.  <\/p>\n\n\n\n<p>Using my design tool of choice, <a href=\"https:\/\/www.adobe.com\/products\/xd.html\">Adobe Xd<\/a>, I started on the main sidebar and the collapse\/expand functionality. I designed this so that the user would expand the sidebar and once they navigated by clicking the links in the sidebar or clicked off the sidebar, it would collapse out of the way. With the sidebar opened, the rest of the view became faded out to bring attention to the floating sidebar. This came with subtle animations for the sidebar width transition, navigation link position, as well as opacity transitions for the node tree and sidebar header. At this point, I also added the new-to-Tylium <em>Dashboard<\/em> link, so users could easily navigate back to the initial view they are greeted with when they opened the project.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-sidebar-1.gif\" alt=\"\" class=\"wp-image-1410\"\/><figcaption>New sidebar style<\/figcaption><\/figure>\n\n\n\n<p>Next, I moved on to the top navbar. In Snowcrash it was becoming a bit full and offered very limited space for long project names as well as new nav items. It was also visually connected to the sidebar giving the illusion of a smaller workspace for everything else in the project. I wanted to completely separate the navbar from the sidebar so I moved away from using the edition color as the navbar\u2019s background color. In order to save some space, I changed the less-used nav links to round buttons with icons to reduce the total width they took up. I also re-designed the way the search button expanded and behaved to match the new round nav buttons.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"255\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/navbars.png\" alt=\"\" class=\"wp-image-1414\"\/><figcaption>Comparison of the old navbar (top) vs the new navbar (bottom)<\/figcaption><\/figure>\n\n\n\n<p>I worked on the sidebar and navbar while looking at the project dashboard, so naturally, I moved on to the main dashboard area next. I wanted to keep the panels the dashboard had in Snowcrash but with an updated look. Again, I didn\u2019t want to completely re-design any of the partials but I did update things along the way so they would be more cohesive with the new layout. The page heading and the panel headings had to become more distinguishable for one another so I increased the size of the page headers to ensure they wouldn\u2019t be lost with panel headers. I also noticed there was inconsistency with borders and dividers, both in terms of colors and usage. I ensured all borders and dividing lines got the same color and that they were used consistently regardless of the view for a better visual presentation. The panels got a subtle border with rounded corners along with matching underlines for the panel headers. Some other components that got a refresh were the list of issues and the list of recent activities.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/snowcrash-dashboard.png\" alt=\"\" data-id=\"1411\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1411\" class=\"wp-image-1411\"\/><figcaption>Old Dashboard view<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium_dashboard-1.png\" alt=\"\" data-id=\"1412\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1412\" class=\"wp-image-1412\"\/><figcaption>New Dashboard view<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>For better user experience, I wanted the sidebar and navbar to always be visible regardless of the height and width of the view. This meant that only the view content would be scrollable. In order to keep a visual consistency throughout the layout, I used the changes I made to the dashboard to set the tone for all the other views.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-fixed-top-and-side.gif\" alt=\"\" class=\"wp-image-1415\"\/><figcaption>Sidebar and navbar with locked position<\/figcaption><\/figure>\n\n\n\n<p>At this point, I had a decent base for all views in the app but one major component that still needed work. Many of the views utilize a secondary sidebar that lists view-specific collections of items like, attachment uploads and import options.  In design, we want the secondary sidebar to flow nicely with the main sidebar. I achieved this flow by making the secondary sidebar background color the same as the main sidebar active item background color. This would give the active sidebar item and the secondary sidebar a visual connection. The views that use a secondary-sidebar needed to match the rest of the app by having the view content sections neatly presented in panels. This meant that sections like Comments, Subscriptions, and so on got their own panel.<\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-3 is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"1294\" height=\"772\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/snowcrash-secondary-sidebar.png\" alt=\"\" data-id=\"1416\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1416\" class=\"wp-image-1416\"\/><figcaption>Snowcrash secondary sidebar<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"664\" height=\"772\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-secondary-sidebar.png\" alt=\"\" data-id=\"1417\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1417\" class=\"wp-image-1417\"\/><figcaption>Tylium secondary sidebar<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>After all the design was completed it was time to dive into the code and translate the mockups to an actual working layout. Before I could do any of the fun stuff I had to first do the Bootstrap 2 to Bootstrap 4 migration. This proved to be quite tedious and required every single view file to be touched and restructured <em>the Bootstrap 4 way<\/em>. All the rows, columns, modals, panels\/cards, and more, all had to be revised. Additionally, any JavaScript files using Bootstrap 2 classes had to be updated with Bootstrap 4 classes to maintain functionality. Finally, moving on to CSS files, I realized that over time as new features were added to Snowcrash, more CSS was added but as features were revised or updated, the no-longer-needed CSS was not removed. This resulted in a good amount of unused CSS lingering in the codebase. Furthermore, the custom CSS on top of 3rd party stylesheets resulted in some messy CSS that could have been significantly reduced to achieve the same result. I found many instances of over-specified properties on child elements and re-defined properties that were already defined elsewhere for the same elements. I put off cleaning up the CSS until I had the new Tylium layout in place. I figured some of the CSS could be re-used since the design of the partials rendered in the layout would not significantly change.<\/p>\n\n\n\n<p>With the Bootstrap migration completed and out of the way, I was able to start coding the layout changes I&#8217;d designed in Adobe Xd. I implemented the design in roughly the same order as I designed it. I started with the sidebar and navbar, then moved to the main content areas of all views without a secondary-sidebar. I added the panel changes to each section of the views and adjusted things like header styles and font-sizes while utilized SASS variables for easy switching of colors between CE and Pro editions.\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-search.png\" alt=\"\" class=\"wp-image-1418\"\/><figcaption>Example of Tylium view without a secondary sidebar<\/figcaption><\/figure>\n\n\n\n<p>Last but not least, I worked on the secondary sidebar and adjusted all the view files that utilized this sidebar and updated panel styles, panel headers, page headers, etc . While coding the secondary-sidebar I quickly realized that it could be taller than the view content itself depending on the collection of items rendered within it. This would cause the view content to be unnecessarily scrollable. To solve this, I locked the secondary sidebar height to match the height of the browser window and made it scroll independently of the main view content. This would also be a more natural behavior in situations where both the secondary sidebar and view content have enough height that they both need to scroll vertically.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-5 is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/sidebar-broken.gif\" alt=\"\" data-id=\"1419\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1419\" class=\"wp-image-1419\"\/><figcaption>Broken: Entire view scrolling with secondary sidebar<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/sidebar-fixed.gif\" alt=\"\" data-id=\"1420\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1420\" class=\"wp-image-1420\"\/><figcaption>Fixed: Secondary sidebar scrolling independently <\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>Another challenge I ran into was caused by a bug where the Bootstrap 4 modals appeared under the modal backdrop rendering all modals useless. After many hours of digging through the code, scratching my head, and growing new strands of grey hair, I turned to <a href=\"https:\/\/stackoverflow.com\/\">StackOverflow<\/a>. It turns out this is a known Bootstrap 4 issue and the best way to solve it is to render all modals as direct children of the &lt;body&gt; tag. This required a refactor of the way we rendered modals in views. <\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-7 is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/modal-broken.png\" alt=\"\" data-id=\"1422\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1422\" class=\"wp-image-1422\"\/><figcaption>Broken: Modal under backdrop<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"3550\" height=\"1734\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/modal-fixed.png\" alt=\"\" data-id=\"1423\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1423\" class=\"wp-image-1423\"\/><figcaption>Fixed: Modal above backdrop<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>At this point, the layout had come together nicely and everything was working as expected. Any bugs and quirks that came up along the way were resolved. Just as I was feeling good about it, all kinds of specs in the test suite were failing. I dove into the specs and updated what I knew needed updating based on the layout changes and Bootstrap migration but I noticed I wasn\u2019t getting consistent failures. Some specs would fail sometimes and those same specs would pass other times. I had our developers, Aaron and Brian, step in to take a look. After many hours of debugging and researching, they finally realized the problem had to do with the sidebar toggle animation. The test suite was expecting the sidebar to be opened instantly so it could continue to go through the testing steps but the milliseconds of animation caused the test suite to intermittently break causing failures at different points. Ultimately, the solution was to disable animations for the test suite and all was well.<\/p>\n\n\n\n<p>The last piece of the puzzle was to clean up all that old CSS. I ended up restructuring the CSS using a modified version of the SMACSS methodology. While tediously combing through each stylesheet, I removed unused, redundant, and unnecessary CSS. I was able to further reduce the amount of CSS by improving specificity.<\/p>\n\n\n\n<p>Fun fact: Implementing Tylium modified 290 files and reduced the app\u2019s code by 1871 lines.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"842\" height=\"129\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/github.png\" alt=\"\" class=\"wp-image-1424\"\/><figcaption>GitHub stats<\/figcaption><\/figure>\n\n\n\n<p>Tylium was finally ready for release. Pleasantly, the new look was generally well-received and as more and more users started to use the updated version of Dradis, we started to get more constructive feedback. Both our internal team and our users realized that the auto-collapsing toolbar created a workflow issue in cases where users needed to frequently switch nodes or manually add many new nodes. I set out to fix this hindrance by eliminating the need to click the sidebar in order to create\/navigate nodes. After discussing a few options with the team, the decision was made to have users toggle the sidebar manually. To enable users to keep working regardless of the state of the sidebar, I removed the overlay that faded out the rest of the view. This allowed users to chose if they would like to have the sidebar open or closed and we implemented some logic to remember the sidebar state so users wouldn&#8217;t have to toggle it each time they returned to a project. This also helped with seamless navigation between views.<\/p>\n\n\n\n<ul class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-9 is-layout-flex\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-sidebar-2.gif\" alt=\"\" data-id=\"1426\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1426\" class=\"wp-image-1426\"\/><figcaption>Tylium sidebar v1<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"624\" src=\"https:\/\/dradisframework.com\/blog\/wp-content\/uploads\/2020\/07\/tylium-sidebar-v2-1.gif\" alt=\"\" data-id=\"1427\" data-link=\"https:\/\/dradisframework.com\/blog\/?attachment_id=1427\" class=\"wp-image-1427\"\/><figcaption>Tylium sidebar v2<\/figcaption><\/figure><\/li><\/ul>\n\n\n\n<p>Overall, the new layout improved the app by:<\/p>\n\n\n\n<ul><li>Increasing screen real-estate by 18-20%<\/li><li>Updating Bootstrap\u2019s version from the historic 2.3.2 to a more current 4.3.1<\/li><li>Improving accessibility by updating the text colors to meet at least Level AA of WCAG 2.0 standards.<\/li><li>Providing users with an app that has a modern look and feel while also increasing their productivity <\/li><\/ul>\n\n\n\n<p>This entire endeavor started in Oct 2019 with very early rough sketches and spanned about 6 months until it was finally publicly released in March 2020. Huge thanks to the <a href=\"https:\/\/dradisframework.com\/story.html#team\">entire team<\/a> for their help and input throughout the entire process. \u270c\ufe0f<\/p>\n\n\n\n<p>Matt,<br>Designer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On March 2nd, 2020 we released Tylium, a new layout for Dradis projects replacing the long-lived Snowcrash layout. Let\u2019s talk about some of the work that went into designing Tylium.<\/p>\n","protected":false},"author":10,"featured_media":1428,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[11,9],"tags":[],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Designing &amp; Developing Tylium - Dradis Framework Blog<\/title>\n<meta name=\"description\" content=\"Matt does a deep dive into the decicions and work of redesigning Dradis&#039; project theme, Tylium.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Designing &amp; Developing Tylium - Dradis Framework Blog\" \/>\n<meta property=\"og:description\" content=\"Matt does a deep dive into the decicions and work of redesigning Dradis&#039; project theme, Tylium.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/\" \/>\n<meta property=\"og:site_name\" content=\"Dradis Framework Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-04T07:00:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-03T19:28:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dradis.com\/blog\/wp-content\/uploads\/2020\/07\/prototype.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2806\" \/>\n\t<meta property=\"og:image:height\" content=\"2022\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matt Budz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nomadicmattbudz\" \/>\n<meta name=\"twitter:site\" content=\"@dradisfw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Budz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/\",\"url\":\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/\",\"name\":\"Designing & Developing Tylium - Dradis Framework Blog\",\"isPartOf\":{\"@id\":\"https:\/\/dradis.com\/blog\/#website\"},\"datePublished\":\"2020-08-04T07:00:18+00:00\",\"dateModified\":\"2020-08-03T19:28:19+00:00\",\"author\":{\"@id\":\"https:\/\/dradis.com\/blog\/#\/schema\/person\/ffd82d26c0792ae986cfe1e48adac324\"},\"description\":\"Matt does a deep dive into the decicions and work of redesigning Dradis' project theme, Tylium.\",\"breadcrumb\":{\"@id\":\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dradis.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Designing &#038; Developing Tylium\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dradis.com\/blog\/#website\",\"url\":\"https:\/\/dradis.com\/blog\/\",\"name\":\"Dradis Framework Blog\",\"description\":\"Information management for security teams\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dradis.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dradis.com\/blog\/#\/schema\/person\/ffd82d26c0792ae986cfe1e48adac324\",\"name\":\"Matt Budz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dradis.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dbb93060941ab3126e881f72ce6741f2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dbb93060941ab3126e881f72ce6741f2?s=96&d=mm&r=g\",\"caption\":\"Matt Budz\"},\"description\":\"Product Designer, Technology Enthusiast, Web Junkie and Formula 1 Fanatic.\",\"sameAs\":[\"https:\/\/twitter.com\/nomadicmattbudz\"],\"url\":\"https:\/\/dradis.com\/blog\/author\/matt\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Designing & Developing Tylium - Dradis Framework Blog","description":"Matt does a deep dive into the decicions and work of redesigning Dradis' project theme, Tylium.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/","og_locale":"en_US","og_type":"article","og_title":"Designing & Developing Tylium - Dradis Framework Blog","og_description":"Matt does a deep dive into the decicions and work of redesigning Dradis' project theme, Tylium.","og_url":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/","og_site_name":"Dradis Framework Blog","article_published_time":"2020-08-04T07:00:18+00:00","article_modified_time":"2020-08-03T19:28:19+00:00","og_image":[{"width":2806,"height":2022,"url":"https:\/\/dradis.com\/blog\/wp-content\/uploads\/2020\/07\/prototype.png","type":"image\/png"}],"author":"Matt Budz","twitter_card":"summary_large_image","twitter_creator":"@nomadicmattbudz","twitter_site":"@dradisfw","twitter_misc":{"Written by":"Matt Budz","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/","url":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/","name":"Designing & Developing Tylium - Dradis Framework Blog","isPartOf":{"@id":"https:\/\/dradis.com\/blog\/#website"},"datePublished":"2020-08-04T07:00:18+00:00","dateModified":"2020-08-03T19:28:19+00:00","author":{"@id":"https:\/\/dradis.com\/blog\/#\/schema\/person\/ffd82d26c0792ae986cfe1e48adac324"},"description":"Matt does a deep dive into the decicions and work of redesigning Dradis' project theme, Tylium.","breadcrumb":{"@id":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dradis.com\/blog\/2020\/08\/designing-developing-tylium\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dradis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Designing &#038; Developing Tylium"}]},{"@type":"WebSite","@id":"https:\/\/dradis.com\/blog\/#website","url":"https:\/\/dradis.com\/blog\/","name":"Dradis Framework Blog","description":"Information management for security teams","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dradis.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dradis.com\/blog\/#\/schema\/person\/ffd82d26c0792ae986cfe1e48adac324","name":"Matt Budz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dradis.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dbb93060941ab3126e881f72ce6741f2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dbb93060941ab3126e881f72ce6741f2?s=96&d=mm&r=g","caption":"Matt Budz"},"description":"Product Designer, Technology Enthusiast, Web Junkie and Formula 1 Fanatic.","sameAs":["https:\/\/twitter.com\/nomadicmattbudz"],"url":"https:\/\/dradis.com\/blog\/author\/matt\/"}]}},"jetpack_featured_media_url":"https:\/\/dradis.com\/blog\/wp-content\/uploads\/2020\/07\/prototype.png","jetpack_shortlink":"https:\/\/wp.me\/p3ijVs-mG","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1186,"url":"https:\/\/dradis.com\/blog\/2020\/03\/new-in-dradis-pro-v3-6\/","url_meta":{"origin":1406,"position":0},"title":"New in Dradis Pro v3.6","date":"March 3, 2020","format":false,"excerpt":"https:\/\/youtu.be\/4Oalk9c8AgM Hello, good looking. Tylium is included with Dradis Pro v3.6 and CE 3.16 We've introduced a new project theme for Dradis. Tylium* is more than sprucing up the design with sleek lines and modern styles. It incorporates thoughtful details to improve your workflow and provides us greater flexibility to\u2026","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2020\/02\/tylium-project-summary.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1683,"url":"https:\/\/dradis.com\/blog\/2022\/06\/new-in-dradis-pro-v4-4\/","url_meta":{"origin":1406,"position":1},"title":"New in Dradis Pro v4.4","date":"June 20, 2022","format":false,"excerpt":"https:\/\/youtu.be\/tgfLYwINo0c Plugin Manager Validation The Plugin Manager has new validation! Previously, you'd need a file like issue.txt to use when configuring the Plugin Manager. Now, you can simply associate the Plugin Manager with one of the report templates on your Dradis instance. You'll see a validation check on the right\u2026","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2022\/06\/Screen-Shot-2022-06-15-at-4.21.05-PM.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1640,"url":"https:\/\/dradis.com\/blog\/2022\/05\/new-in-dradis-pro-v4-3\/","url_meta":{"origin":1406,"position":2},"title":"New in Dradis Pro v4.3","date":"May 5, 2022","format":false,"excerpt":"https:\/\/youtu.be\/Oo9_d0Cqm80 Auto-update Charts in Word Previously, to include charts in Word templates, VBA macros were necessary to be able to update the charts in exported reports. This was a problem for the Mac users among us, as the relevant VBA is not supported in Office for Mac. We have now\u2026","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2022\/04\/sheet.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2326,"url":"https:\/\/dradis.com\/blog\/2024\/01\/new-in-dradis-pro-v4-11\/","url_meta":{"origin":1406,"position":3},"title":"New in Dradis Pro v4.11","date":"January 18, 2024","format":false,"excerpt":"Dradis v4.11.0 includes bug fixes for both the Dradis app and Word exporter plus a few technical updates.","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2024\/01\/Screen-Shot-2024-01-16-at-4.41.11-PM.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2295,"url":"https:\/\/dradis.com\/blog\/2023\/09\/new-in-dradis-pro-v4-10\/","url_meta":{"origin":1406,"position":4},"title":"New in Dradis Pro v4.10","date":"September 12, 2023","format":false,"excerpt":"Dradis version 4.10.0 includes validation before export, mappings manager for Azure DevOps\/Jira, and archiving projects.","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2023\/09\/Screen-Shot-2023-09-01-at-4.44.49-PM.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2233,"url":"https:\/\/dradis.com\/blog\/2023\/02\/new-in-dradis-pro-v4-7\/","url_meta":{"origin":1406,"position":5},"title":"New in Dradis Pro v4.7","date":"February 23, 2023","format":false,"excerpt":"https:\/\/youtu.be\/lm5SFUQHvjg Inline Code Support We already supported code blocks, but now, you can use @ symbols to create in-line code inside of your Dradis project: When you export this to a Word report that has a custom InlineCode character style, you'll get that code styled automatically: Custom Tag Management Previously,\u2026","rel":"","context":"In &quot;Dradis_Pro&quot;","img":{"alt_text":"Screenshot of the Dradis Pro inline code support feature update","src":"https:\/\/i0.wp.com\/dradis.com\/blog\/wp-content\/uploads\/2023\/02\/Screen-Shot-2023-02-17-at-5.10.38-PM.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/posts\/1406"}],"collection":[{"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/comments?post=1406"}],"version-history":[{"count":10,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/posts\/1406\/revisions"}],"predecessor-version":[{"id":1439,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/posts\/1406\/revisions\/1439"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/media\/1428"}],"wp:attachment":[{"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/media?parent=1406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/categories?post=1406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dradis.com\/blog\/wp-json\/wp\/v2\/tags?post=1406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}