This page showcases my UI design and prototyping skills, presenting all the design work from my 16-week Prototyping II course in college. These class projects encompass a diverse array of user interface designs crafted through prototyping techniques using Figma. Within this page, you'll find detailed explanations of the tools and concepts applied in each design.
User Interface, Visual Design, Prototyping
Figma, Illustrator, Photoshop
16 Weeks (August - December 2023)
One of the projects that I worked on in class involved designing four unique UI interfaces using Figma, each with distinct text, color, and effect styles. Text styles include varied font weights, and color palettes are customized for each theme (e.g., Sprout with earthy colors). Designs feature effects like drop shadows and background blur. To ensure adaptability, I considered specific UI elements, incorporating necessary status bars and home indicators.
Visuals demonstrating these styles, along with my emphasis on file hygiene and layer organization, are provided below utilizing the second design, Nuggies, as an example.
For these designs, I used Figma's “Auto Layout” feature, a powerful tool that ensures responsive design. This functionality played a crucial role in maintaining a consistent design flow throughout my UI designs, allowing content to adapt dynamically. Within this section, I’ll show how I utilized Auto Layout with a section from my first design, Sprout.
Redlining is a technique that involves adding annotations to a UI design using lines to specify the exact spacing and dimensions of design elements. This thorough approach serves several important functions: it simplifies the process of passing the design to developers, enhances the visual appeal by keeping a consistent rhythm, and contributes to creating a visually unified layout. In the context of these four UI designs, I consistently applied an 8-point grid and incorporated redlining, and I’ve provided some redlining examples below.
Variables are something that can vary in value or take on multiple values. Variables in Figma store reusable values, like color values and numbers, that can be applied to all kinds of design properties and prototypes. A variable’s values can also reference other variables, making updating design systems easy to do.
To demonstrate my use of variables in Figma, I created a single UI design that will be implemented in three viewports (desktop, tablet, and mobile) and in four modes (light/dark & modern/brutal). In total, I have created 12 screens across 3 sections, all with auto layout and with the 8-point grid.
To accomplish this, I created variables for my design using collections: Primitives, Tokens, Breakpoints/Viewports. I’ll demonstrate my use for each of these collections in detail.
For the Primitives collection, they consist of the basic color, space, and radius values. As for the colors, they’re laid out with a numerical numbering method, and I utilized the color selector, Eva Design System. I’ve also created four color groups: Primary (brand color), Accents (sparingly used to emphasize actions/information), Neutrals, and Semantics (colors associated with success, warning, error, and info).
For spacing, I utilized the 8-point grid. The naming system was created to be multiples of 8. For instance, the variable "1" corresponds to 8 points, and the variable "3" corresponds to 24 points. Whereas with radius, it indicates the degree of roundness for the corners of elements. The variable "sm" is assigned a small value of 24.
With the Tokens collection, it contains semantic values where color and sizing (space and radius) values should be applied. The Tokens inherit their values from the Primitive value, and they have a logical and consistent naming convention.
Tokens Collection Inheriting Values from the Primitives Collection
The breakpoints/viewports collection includes instructions on how the design adapts to different viewports. Consequently, certain elements may be visible or hidden based on the viewport (e.g., the search bar is exclusively visible for the desktop viewport), and the sizing of elements may also change. In summary, establishing these variables facilitates seamless adjustments for the design across various viewports.
Variables make it easy for your design to adjust to different viewports and styles/colors. As an example, I can easily change the mode (light/dark & modern/brutal) of the UI design.
Additionally, as an example for prototyping with variables, I created two screens that are light and dark mode. With one button, I can easily allow the screen to change between the two modes.
Components were created for elements used repeatedly, ensuring consistency and enabling reuse as needed. Additionally, for elements with various variations, I used component properties—specific, customizable aspects of a component that can be defined. This approach facilitates the creation of multiple variations for elements like the macaron card.
To combine all the techniques that I’ve learned in class, I created a League of Legends Champion Resource guide for desktop. To add, this project shows my ability to interpret and apply an existing brand guideline. Rather than introducing entirely new elements, I focused on extending the existing framework.
Centered around the popular game League of Legends, a competitive online multiplayer game developed by Riot Games, this project specifically targets patch 13.23. The prototype serves as a comprehensive resource guide for champions, consolidating essential details such as name, titles, class, difficulty, abilities, cost (in Riot Points and Blue Essence), skinline, regions, and champion lore. This concise resource streamlines user interaction, providing a seamless experience for accessing key information within the League of Legends universe.
I utilized components since there were multiple reusable elements, and components allowed me to create variations of elements as needed. Below, I’ve included some examples of the components: navigation bar, footer, and a sidebar for the “Champions” page.
While I created multiple components, I'll spotlight a key component primarily utilized in this prototype—the champion cards. With League of Legends' patch 13.23 featuring 165 different champions, I had to create a corresponding number of champion cards, each possessing distinct properties such as name, cost, role, and more. To streamline this process, I established component properties enabling swift modification of information for each of these cards:
In addition, leveraging component variants allowed me to incorporate a hover effect into these components. Upon user hover, these elements will change slightly to add a layer of interactivity to the prototype. Below, I've provided some examples of this:
After creating 165 champion cards, I aimed to simplify the user's search for specific champions. I implemented a sidebar to serve as a filter, enabling users to navigate through various categories. As a proof of concept, users can choose the initial options in the sidebar for each category, and subsequently select the first champion card.
Upon selecting a champion card, the user can access their dedicated page. Each page features a visual representation of the chosen champion integrated into the background. The content includes details such as their skinline, name, lore, cost, and role. As the user scrolls down, the page systematically presents each of the champion's abilities, accompanied by corresponding gifs illustrating the abilities in action. Alongside these gifs, I provide descriptive text outlining the functionality of each ability, allowing users to both visually and textually comprehend their champion's capabilities.
At the top of the page, users can utilize a carousel/slider to browse through the skinline of the champion. This functionality was implemented using variables and components. Below is a screenshot illustrating the components in action and the configuration of the variables.
Then, for the section with abilities, I mainly utilized component variants to show the different abilities for each champion.
Lastly, I wanted to create a page that shows the world map of League of Legends, Runeterra, with different nations. When the user first clicks on the page, they would see the map of Runeterra as a background. It would then zoom out to reveal the name of the page and a button. As they click on the button, they’re zoomed into the background where it shows all the nations of Runeterra.
As a proof of concept, they can select the first nation in the list, Bandle City, to view and learn about the nation. Then, when they scroll down, they can view the list of champions that are from Bandle City, and if they select a champion, it shows their champion page.
The Prototyping II course has been transformative, delving deep into advanced UI and prototyping techniques using Figma. Through practical projects creating diverse UI interfaces and interactive elements, I've honed my skills with Figma's features like variables, components, redlining, and Auto Layout. This immersive learning journey has focused on applying these techniques, leading to a noticeable improvement in crafting cohesive, user-friendly interfaces and prototypes. The course has helped me grow tremendously as a designer, boosting my confidence in navigating Figma's intricacies and elevating the quality of my design work.
After completing the course, these were some of the key takeaways that I've learned: