Use case: checkout
Payment feedback state machine
Loading, approved, declined, and retry states built as a small Rive system.
Problem solved: users get clear feedback while developers connect app events to named animation inputs.
Projects
These examples show the type of interface problems I solve: feedback states, onboarding clarity, component consistency, and developer-controlled interaction logic.
Use case: checkout
Loading, approved, declined, and retry states built as a small Rive system.
Problem solved: users get clear feedback while developers connect app events to named animation inputs.
Use case: onboarding
Step transitions, completed states, and subtle encouragement for a multi-step setup flow.
Problem solved: the flow feels guided without adding heavy video assets or distracting motion.
Use case: dashboard
Motion language for analytics cards, skeleton loading, empty charts, and data refresh feedback.
Problem solved: the product communicates what is happening instead of leaving users waiting.
Use case: navigation
Hover, active, pressed, and disabled states designed for app navigation components.
Problem solved: interaction feedback feels consistent across the UI and remains easy for developers to implement.
Use case: button system
A reusable motion pattern for button press, waiting, success, and failure outcomes.
Problem solved: important actions feel responsive while the interface preserves layout stability.
Use case: empty state
Lightweight animation that guides users toward the next useful action in a new workspace.
Problem solved: empty screens become understandable without looking like marketing illustrations.