← All projects
B2B · EnterpriseVue · PrimeVueProduct design

PMS

A B2B property management system on Vue and PrimeVue. A token-based design system and complex interface blocks with well-designed states.

Role
Designer · from support to lead
Timeline
January 2025 — June 2026
Team
Design — solo; product, analyst, frontend
Stack
Vue · PrimeVue
PMS

Context

A complex B2B product that has to stay predictable

PMS is a B2B property management system on Vue and PrimeVue (PrimeOne 3.1.0). I went from product support to lead designer: I own the whole UX, the design system and the design of complex interface blocks together with engineering and analytics.

Stack
Vue · PrimeVue
Theme
Light + dark
Role
From support to lead
Scope
Design system + UX

Goal

Bring order to a complex interface and make it scalable

An enterprise product quickly grows screens and edge cases. I had to build a unified visual language, reusable patterns and predictable behaviour of complex blocks — so the product could grow without chaos and rework.


What I did

Design system, patterns and well-designed states

A token-based design system

Built a design system from scratch on Figma Variables and tokens: colour, typography, light and dark themes. Wired it to PrimeVue (PrimeOne 3.1.0) so design and frontend speak the same language and new screens come together fast and consistently.

Tokens: colour, typography, light and dark themes
Tokens: colour, typography, light and dark themes

The price block: I design states, not a single screen

The key block of the product is the price calculation. I designed it as a system of five states with a manual recalculation trigger: the user changes parameters, sees that the data is stale, and consciously triggers a recalculation. No silent errors, no outdated numbers.

Idle

No parameters set yet

Loading

Calculating price…

Success
12 480 ₽

Price is up to date

Stale
12 480 ₽

Parameter changed · recalculate

Error
Calculation failed

Failed · retry

From support to lead designer

I started in product support and grew into the lead designer: I own the whole UX, the design system and consistency. I work closely with engineering and analytics — design solves real product problems, not just “draws screens”.

Path in the product
Path in the product

Principle

States are part of a block’s contract. For every block I design not just success but loading, empty, stale and error — which removes a lot of fixes already at the build stage.


Outcome

A scalable product with one language and predictable blocks

A token-based design system with light and dark themes, reusable patterns and well-designed states across all key blocks. New screens come together faster and without chaos.

What I’d do differently

I lacked usage analytics — with it I’d prioritise improvements by data rather than intuition; and I’d document the state patterns for engineering earlier.


Next