The home, login, and daily screens of the Cirrius weather application.
Role: Prototyping, UI Design
Tools: Figma
Duration: April 12th - April 27th

Overview

The Cirrius Weather app was my final project for Prototyping II. This design serves as the culmination of everything I learned in class.

Specifically, I constructed it to showcase the following:

Project

I built Cirrius for iPhone 16, deriving inspiration from the interface of the popular weather app, The Weather Channel. It contains seven unique screens, three of which are onboarding. Each of these is constructed around a soft 8-pt grid. This means that the elements are positioned apart from one another according to multiples of eight.

A screenshot of the Cirrius prototype layout grids.
Layout Grids

Cirrius' design system is comprised of variables and styles. These powerful tools allow for improved fine-tuning of the design, greater cohesion of design elements, and more control over spacing and typography values.

Furthermore, I utilized the power of interactive variables to allow the app to display the current temperature in either Celsius or Fahrenheit. Cirrius can also be viewed in both light and dark mode.

These facets are discussed in greater detail below.

Variables

To build a sleek, modern design system with differing modes, I used variables. First, I constructed a collection of primitives. These raw values consisted of neutral colors, brand colors, spacing measurements, and corner radii.

A collection of color primitives.
Color Primitives

I used Color Hunt to find inspiration for my color scheme. After I decided on these, I utilized the Figma plugin HueHue to generate nine color values for each category (i.e. 100-900 for brand, 100-900 for neutrals). I adjusted the hue, saturation, and brightness of the resulting colors as needed. I also employed the Contrast plugin to double check the accessibility of my color combinations. This way each screen was at least AA compliant.

For the spacing and corner radii, I calculated multiples of eight. Each value was associated with an increasing numeric value (i.e. 1 - 8, 2 - 16, and so on). This allowed me to keep track of the values as they grew larger.

Once my Primitives collection was complete, I created collections for Color, Spacing, and Corner Radius Tokens.

A screenshot of the Colors Collection.
Colors Collection

I divided the Colors Collection into the following categories:

The creation of these collections allowed for finer control of these associated values, as well as further cohesion across the design. Ensuring consistency is one of the most important aspects of designing. Variables help make this possible.

I also created a Typography collection. This held the font families for any text I planned to use. Additionally, it included font weight, font size, and line height. I determined the proper sizing through research regarding guidelines on the scale of mobile typography. Once I decided on these, I calculated a line height for each. I used the multiplier 1.5 divided by 8 to gain the proper line height for each font size.

A screenshot of the Typography Collection.
Typography Collection

Because Figma currently lacks the ability to create typography tokens, I assigned my typography variables to Styles. I created H1-H3 headers, body/paragraph text, and special text for the current weather. Each of these was assignd the appropriate variable value for font family, size, line height, and weight. I utilized these throughout my design to maintain continuous consistency.

The font styles used for Cirrius.
Font Styles

Components & Component Properties

Another tool I used to maintain consistency across the design was components. Components allow designers to create a parent copy of an element which can be reused throughout the design. Any changes necessary can be made to this parent element and will be enacted across every instance of it. This gives greater control over elements, reduced work load, and a smaller margin of error when working aross multiple screens.

The collection of components used in Cirrius.
Components

With this in mind, I assessed which elements I would need to reuse. I stored these elements as components. Some, such as the tab bar, required simple interactions between variations — or variants — of themselves. Others were part of a more complex string of interactions controlled by variables. I utilized component properties to bring these interactions to life. To achive this I used text, variant, and boolean properties.

Advanced Prototyping

One of my main goals in designing Cirrius was to enhance my ability to work with interactive variables. These variables possess a power beyond mere hover or click interactions. They allow algebraic input for conversions and math problems, as well as control over specific color and element transformations within specific frames.

A collection of interactive variables.
Interactive Variables Collection

For Cirrius I used them to do two things:

  1. Build a switch that controls variable modes. This allowed users to view the app in either light or dark mode.
  2. Build a switch that controls whether the current temperature is in Fahrenheit or Celsius. This allowed users to see the temperature in their preferred metric.

Harnessing the capabilities of number and boolean variables, I brought these controls to life.

The Cirrius home screen displaying temps in Celsius.
Home screen displaying Celsius temps

Conclusion

When I proposed the Cirrius weather application for my final project, my aim was to showcase my mastery of the subjects we had learned throughout my time in class. Through use of variables, components, and advanced prototyping techniques I was able to both display these skills and grow in them. Prototyping II was a highly informative experience. My confidence in and knowledge of Figma has grown exponentially as a result of this course. Cirrius makes this fact clear.

The final prototype for Cirrius in its default dark mode.
Final Design (Dark Mode)
The final design of Cirrius in light mode.
Final Design (Light Mode)

Takeaways

Figma is an essential skill for every UX/UI designer to master. Prototyping II made this even more obvious to me. But that is not the only insight I gained from this course. I learned that...