Design system
One set of building blocks your whole product is made of: website, app and dashboard. Designers and developers build with the same pieces, so the product grows faster and stays consistent along the way.
- Colour & typography
- Buttons
- Forms
- Components
- Dark mode
Revenue
1–30 September
Top channels
- Online store€4,980
- Mobile app€3,470
- Marketplace€1,900
- B2B sales€890
A design system is a shared language for designers and developers: a library of ready-made elements and rules that every screen of the product is built from.
From a single colour to a whole page
A system grows in layers. The smallest decisions, such as a colour, a spacing value or a typeface, add up to buttons and fields, those add up to bigger blocks, and those to finished screens. A change at the bottom flows through every layer above.
- Tokens01Named values: colours, font sizes, spacing, corner radii.
- Atoms02The smallest elements: a button, a field, an icon, a switch.
- Molecules03Simple combinations of atoms, e.g. a search field with a button.
- Organisms04Bigger blocks: a card, a table, navigation.
- Templates05The screen layout: which block goes where.
- Pages06A finished screen with real content.
Without a system, every screen is designed from scratch
A new feature, a new screen, new decisions: which shade, which spacing, how big a button. A year later the product has several versions of the “Save” button and three shades of the same colour. Users won’t name it, but they’ll feel it: the product seems less polished, and the team loses time agreeing which version is the right one.
- 3 different primary buttons
- 4 corner radii
- 3 shades of one colour
Colour
Every colour has a name, a role and nine shades. Nobody picks “some blue”. You reach for a token that tells you where it belongs.
Colours with roles
Screens don’t use shades directly. They use roles: “background”, “secondary text”, “action”. That makes dark mode a different set of values for the same roles, not a second design.
- Background#F4F4F5
- Surface#FFFFFF
- Text#131311
- Secondary text#6F6F6A
- Line#E5E5E6
- Action#6563FF
- Background#141518
- Surface#1D1E23
- Text#F5F4F0
- Secondary text#9A9A94
- Line#2E3036
- Action#7F7DFF
Typography
One typeface, a few weights and a fixed type scale. Every piece of text in the product has its place in the hierarchy.
General Sans
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
- Regular400
- Medium500
- Semibold600
- Bold700
- DisplayClear layout, readable text56/60
- Heading 1Clear layout, readable text40/48
- Heading 2Clear layout, readable text32/40
- Heading 3Clear layout, readable text24/32
- Body largeBody text, where most of the content is read. It has a comfortable line length and line height that’s easy on the eye.18/28
- BodyBody text, where most of the content is read. It has a comfortable line length and line height that’s easy on the eye.16/24
- CaptionBody text, where most of the content is read. It has a comfortable line length and line height that’s easy on the eye.13/18
Icons
A shared 24×24 grid and one stroke weight. Every new icon looks like it was part of the set from the start.
Icon set
Icons inherit the text colour, so they adapt to the element’s state and to dark mode on their own.
Spacing & radius
A fixed scale of spacing and radii creates rhythm. Every value is a token, so screens line up predictably, with no eyeballing.
Spacing
Margins and padding take their values from the scale. On the card, every gap is one of the tokens.
Corner radius
A few radii instead of any value. Small elements get a smaller one, cards and dialogs a bigger one.
Shadows
A few levels of depth instead of random shadows. The higher an element sits, the more important it is at that moment.
Buttons
One component, many situations. Size, type, state and icons are properties. Designers switch them in Figma, developers in code, and the result always matches.
Variants and states
Every combination of type and state is designed up front. Nobody has to guess what a disabled or hovered button looks like.
Change the properties. This is how the component works in Figma and in code.
Form fields
Label, field, helper text and error message work as one. A form behaves the same at sign-up, at checkout and in settings.
Field anatomy
A field can have an icon, a button, a dropdown or a prefix, always with the same spacing.
States and variants
Default, hover, typing, focus, error and disabled, all in two styles.
Component library
Ready-made elements built on shared tokens. Each follows the same spacing, sizing and state rules, in dark mode too.
- ButtonsSemantic colours and every state.
- FieldsLabel, field, help and validation.
- ANProject2ChipsFilters, tags and multi-select.
- ANPKML+5AvatarsPeople and teams, with status.
- ProjectsReportBreadcrumbsShow users where they are.
- NewNewBadgesStatus, priority or category.
- 123…12PaginationNavigating long lists.
- SelectionCheckboxes, radios and switches.
- TooltipTooltipsContext without interruption.
- …and 20+ more
Status badges
Status, priority or category, always in the same semantic colours. Green means “done” on every screen of the product.
Building blocks become whole screens
The table below isn’t a separate design. It’s fields, buttons, avatars, badges and pagination from the same library, assembled into a new view in hours, not days.
| Person | Status | Team | Tags | |||
|---|---|---|---|---|---|---|
| ANAnna NowakProduct Designer | Active | Product | anna@example.com | ResearchFigma+2 | ||
| PKPiotr KowalskiFrontend Developer | Active | Engineering | piotr@example.com | ReactUI | ||
| MLMarta LisProduct Manager | On leave | Product | marta@example.com | Strategy+1 | ||
| TMTomasz MazurMarketing | Onboarding | Marketing | tomasz@example.com | SEOResearch | ||
| EKEwa KaczmarekBackend Developer | Active | Engineering | ewa@example.com | APIReact+3 | ||
| JWJan WronaCustomer Success | Inactive | Support | jan@example.com | Support |
One component, many places
The widget adapts to its width. In a dashboard, in an app and on a phone it keeps the same rules.
Revenue
1–30 September
Top channels
- Online store€4,980
- Mobile app€3,470
- Marketplace€1,900
- B2B sales€890
Revenue
1–30 September
Top channels
- Online store€4,980
- Mobile app€3,470
- Marketplace€1,900
- B2B sales€890
Change one value and the whole product follows
Colours, corner radii and typefaces are stored as tokens: named values that every component uses. Changing a token flows through the entire product at once, without combing through hundreds of screens. Dark mode, a rebrand or a version of the product for another brand work the same way: the tokens change, the screens stay.
Revenue
1–30 September
Top channels
- Online store€4,980
- Mobile app€3,470
- Marketplace€1,900
- B2B sales€890
Fewer decisions on every screen, more time for what’s new
Faster delivery
A new screen is assembled from ready-made pieces. The team designs and builds what’s new, not the same form for the fifth time.
A consistent brand
Users see one product, not a collection of screens made by different people in different months.
Cheaper changes
Changing a colour, a typeface or a corner radius is one fix in the system, not an audit of the whole app.
Fewer design-to-code fixes
Designers and developers call the same elements by the same names. Fewer “it was supposed to look different” moments.
Accessibility from the start
Contrast, touch target sizes and focus states are checked once, in the system. Every new screen inherits them automatically.
Easier onboarding
A new developer, agency or freelancer gets ready-made rules instead of guessing from existing screens.
Not every project needs a design system
It’s worth it when…
- the product will be developed for months and years, not handed over once
- several people or several teams work on it
- you have more than one platform, e.g. a website, an app and a dashboard
- you sell the product under different brands or are planning a rebrand
- developers keep asking: “which button is this, exactly?”
Not yet, when…
- you need a single website or landing page
- you’re building an MVP to test an idea, in which case solid foundations are enough: colours, typography and a few components, which we’ll expand once the product proves itself
From audit to a library the whole team uses
- 01
Audit
I gather everything that already exists: screens, styles, components in code. I count the variants and show where the product drifts apart.
- 02
Foundations
I define the tokens: a colour palette with roles, a type scale, spacing, corner radii and shadows.
- 03
Components
I design the library in Figma: every element with all its variants and states, ready to use in new screens.
- 04
Documentation & handover
I write down the usage rules and hand the system over to developers, so that names and tokens in Figma match the ones in code.
What you get
- A component library in Figma
- Tokens ready to move into code
- Usage documentation
- Support for your team during implementation