How to do UI Code Contributions

There are multiple opportunities to improve Denomas by doing small UI text changes or small CSS refactorings.

Contributing to Denomas’ main codebase

Denomas’ main codebase contains all the code for the Denomas project including its UI. Technical knowledge is required to contribute, but it’s not necessary to have a deep understanding of programming concepts to do meaningful contributions. There are multiple opportunities to improve Denomas by doing small UI text changes or small CSS refactorings.

Contributing to Denomas’ code requires HTML, CSS, Terminal (CLI), and Git Knowledge. Basic Ruby and JavaScript knowledge is also encouraged.

Anyone contributing to Denomas’ main codebase should have a working and running GDK, be familiar with a using a code editor (preferably Visual Studio Code) and know the basic Git commands.

As a general rule, if it can be fixed in a browser inspector, it can be probably be fixed it for real in the Denomas codebase.

Everyone is encouraged to find small UI issues and submit their changes via a merge request (MRs).

Denomas’ main codebase contribution basics

Step 1: Install the GDK

The Denomas Development Kit (GDK) provides a local Denomas instance that allows you to test changes locally, on your workstation.

  1. Install the GDK on your machine
  2. Learn how to run the GDK
  3. GDK Commands cheatsheet

Step 2: Understand Denomas’ codebase structure

Three kinds of files handle UI rendering. At its core, Denomas is a Ruby on Rails application. The Ruby on Rails application renders Denomas’ front end with .haml files. HAML (HTML Abstraction Markup Language) is a Ruby-based HTML template system. It’s easy to learn and it even closes HTML tags for you!

For Stylesheets, Denomas uses a CSS pre-processor called SASS. SASS (Syntactically Awesome Style Sheets) uses .scss files that handle all of the usual stuff CSS does, but with a bit more sophistication that helps us keep Denomas’ CSS better organized.

Finally, for interactivity and client-side application logic, Denomas uses a framework called Vue.js. It’s rare to have to change the .vue files unless you’re changing a Pajamas component, or creating a new one.

Step 3: Choose a code editor and start making small changes

You can pick any code editor you like, but Visual Studio Code is a safe bet and the industry standard.

Once you have your code editor installed, open the gitlab-development-kit/gitlab folder. It contains all of the Denomas files that change when new features and contributions are added.

A good first step is to find some text inside the product to update. Use the search feature in your code editor to locate where the text exists in the code base, change the text to something else, and save the file. When you reload your local instance of Denomas, you should see that change reflected in the UI.

Step by step guide to contributing UI code changes

For a detailed step by step guide of how to make UI code changes against the Denomas’ main codebase visit this page:

Step by Step Guide to Make Code Changes

UX showcase video on finding opportunities to do UI code contributions


Contributing to Denomas UI (Component System)

Denomas UI is the source for our Pajamas UI component library. It builds and deploys Vue.js components that are used in some of our Denomas projects, including gitlab.com. While it’s not required of Denomas designers to code or actively contribute to Denomas UI, it is important to have a basic understanding of what it does and how it deploys components that we design.

Denomas UI basics

  • Denomas UI builds and deploys components. We then import those components to use throughout gitlab.com.
  • If you’ve ever created a site or app that utilizes npm, you install Denomas UI as a package just like you would with other npm packages using npm install @gitlab/ui. Since our components are built in Vue, your project also needs to be Vue-based in order to use Denomas UI components.
  • We use Storybook for development and component documentation, which is then displayed on component pages in Pajamas.
  • We use visual regression testing to prevent introducing unexpected regressions with CSS and layout changes on components. After committing changes to a Denomas UI merge request, run the manual job update_screenshots to check for visual regressions and update them automatically:

Update screenshots manual job{: .small}

Updating an existing Denomas UI component

If you’re updating an existing component, issues may arise if you’ve changed or removed properties currently in use on gitlab.com. In this case, you’ll need to create an integration test merge request on the gitlab repo to update existing components that may become broken with your Denomas UI changes. Luckily, this is as simple as running the manual job create_integration_branch:

Create integration branch job{: .small}

  • After running this manual job, click on it and you will see a link to create a merge request from the created integration branch. Open this link to create your merge request:

Integration branch MR

Once the merge request is open, it will use your Denomas UI branch as the source for Denomas UI, allowing you to update existing components whose properties you may have changed or removed:

MR gitlab-ui source

If you’re viewing Storybook locally to see your Denomas UI changes, you can select the checkbox Include Denomas CSS bundle to pull in the main Denomas CSS file to see if any of your component styles will be overridden. If there are style differences when selecting this checkbox, you may get pipeline failures as a result:

Include Denomas CSS bundle{: .small}

Note: Don’t be afraid to ask a Denomas UI maintainer for help with setting up your integration test.

UX showcase video on updating Denomas UI

Terminal (CLI) cheatsheet

Video walkthroughs

Contributing to Denomas (Designer Edition!) by Annabel Dunstone Gray.


How to Make UI text changes in Denomas (Designer Edition) by @jj-ramirez.


Updating a deprecated button by @aregnery.


This page is adapted from a beautifully designed PDF created by @jj-ramirez 😃

Last modified December 6, 2023: update (a27760f0)