This project is password protected
Designing Nearville’s Design System: Introducing Structure to Support Sustainable Product Growth
Creating shared foundations to help a growing marketplace scale with clarity and confidence
Design Systems Lead
5 months
Marketplace
P2P
Mobile
0→1
Nearville is a peer-to-peer rental marketplace navigating a 0→1 growth phase.
As Nearville grew, product velocity increased — but so did inconsistency, duplicated effort, and decision friction across teams. What initially helped the team move fast began to slow progress.
I led the design of Nearville’s design system to introduce shared foundations, clarify patterns, and support better decision-making as the product scaled. The goal was not visual consistency alone, but a system that balanced flexibility with structure — helping the team move faster with confidence, not just speed.
Role & Scope
As a Design Systems Lead, I:
Built and scaled a 0→1 design system with 800+ components and variants
Established documentation and governance
Audited and systematized fragmented UX gaps
Timeline
Discovery & foundations (3 mo.)
Early iterations (3 mo.)
Adoption & iteration (2 mo.)
Team
1 Design Systems Lead (Me)
2 Product Designers
3 Engineers
The Problem
As Nearville grew beyond its MVP, design decisions started to fragment across the product.
New features were built quickly, but patterns diverged, work was duplicated, and design reviews became more subjective. Over time, this made it harder for the team to move forward with confidence and increased complexity for both users and builders.
The Solution
I introduced a design system to give the team shared foundations without slowing development.
The system clarified core patterns, reduced repeated work, and helped designers and engineers make more consistent decisions as the product evolved. It was designed to remain flexible early on and strengthen over time as adoption grew.
Impact
↓ 40%
Design duplication
↑ 60%
Designer efficiency
50%+
Product adoption in 1st mo.
3 designers were shipping in parallel for 6 months in a growing 0→1 product.
Nearville operated in an early-stage environment with an evolving roadmap, where design decisions needed to support rapid iteration without fragmenting the user experience.
Alongside owning the design system, I also contributed as a product designer across core flows. This meant the system needed to be pragmatic, immediately usable, and able to evolve alongside active product work.
Key constraints shaped the approach:
Early-stage
Parallel Design Work
High shipping velocity
Future scalability
Given these constraints, the system was shaped by a few deliberate tradeoffs:
Foundations over completeness
→ Focus on shared patterns that appeared repeatedly, rather than trying to standardize everything upfront.
Adoption over perfection
→ Prioritize patterns the team was already using or struggling with, so the system could be adopted naturally.
Flexibility over rigidity
→ Leave room for exploration in emerging areas, tightening standards only when they clearly reduced friction.
Rather than aiming for a finished system from day one, the design system evolved in phases — adding structure only when it helped the team make clearer decisions or move forward more confidently.
To bring structure to a growing early-stage product, I broke the work into focused phases. Each phase reduced ambiguity, supported parallel design work, and added structure only when it clearly helped the team move forward.
To bring structure to a rapidly evolving early-stage product, I broke the work into focused phases — each designed to reduce ambiguity, support parallel design work, and enable scalable execution without slowing delivery.
Creating clarity by grounding decisions in real product usage
I reviewed live product flows to identify where patterns diverged and which inconsistencies were worth addressing first.
Before
After
Before
Use case 1: Info input designed in as a form.
Use case 2: Info input designed in as a card.
After
Define info input = form design
Define info output = card design
Establishing shared foundations to support parallel work
I focused on shared foundations designers relied on, enabling parallel work while allowing patterns to evolve.
Introducing governance to maintain clarity over time
I introduced simple governance and documentation to keep decisions visible and maintain clarity as the system scaled.
Several enablers supported the work throughout the process:
Engineering alignment
System decisions were validated early with engineering to ensure feasibility and reduce downstream rework.
Designer feedback loops
Regular check-ins with designers surfaced friction and informed where the system needed to expand, adjust, or stay flexible.
Real usage as signal
Adoption across live flows guided when to formalize patterns and when to leave them open.
As the system moved from early adoption to sustained use, decisions increasingly required balancing flexibility, accuracy, and long-term maintainability.
I focused on reducing risk and preserving clarity, rather than optimizing for completeness too early.
Calibrating component flexibility based on use-case rigidity
Decision
Not all components carried the same risk. High-impact surfaces required stricter structure, while others benefited from flexibility to support varied contexts.
Trade-off
Reduced freedom in high-risk components to ensure accuracy, while allowing more configurability in low-risk patterns to maintain speed.
Balancing Component Optimization with Usability
Instead of reducing complexity too early, I allowed component variation to emerge across real use cases. This approach helped distinguish meaningful differences from true redundancies, ensuring that system optimization supported usability rather than abstracting away important product behaviors.
450 button variants
Built an intentionally broad set of button variants to support rapid exploration and cover emerging use cases.
180 button variants
Re-audited real usage once patterns stabilized and reduced variants to remove redundancy while preserving valid use cases.
These decisions came together in a design system built for speed, consistency, and trust at scale.
Instead of optimizing for completeness upfront, I focused on building a flexible foundation—semantic tokens, clear patterns, and reusable components—that supported rapid iteration early and scaled as the product matured.
By reducing design debt, the system enabled confident, sustained velocity.
By grounding decisions in real usage and introducing structure only when it added value, the system reduced decision friction, aligned design and engineering, and created a scalable foundation for growth.
Design Duplication
Designer Efficiency
Product Adoption in 1st mo.
Qualitative feedback reinforced the system’s day-to-day impact
"Having a unified design system has made collaboration smoother and sped up our iteration cycles, helping me deliver designs with clarity and confidence."
Design Lead @ Nearville
"The well-established system has created a fast and efficient environment to work in. Collaborating with Moyai on systematizing design elements also helped me grow as a designer by thinking more systematically."
Product Designer @ Nearville
Through ongoing iteration, the system scaled from an initial foundation to 50+ components and continues to evolve alongside product complexity.
The new system unlocked:
Faster shipping through reusable, predictable patterns
Consistency across designers, platforms, and flows
Reduced engineering rework through shared logic and primitives
Safer brand evolution without breaking existing experiences
Faster onboarding with clear standards and documentation
More importantly, the system gave the team a shared language for making decisions as complexity increased.
This project reinforced that design systems aren’t about enforcing rules—they’re about creating clarity and trust as teams scale.
Working within early-stage constraints clarified what matters most:
Simplicity scales when it’s intentional
Keeping the system intentionally small made it easier to maintain, adopt, and evolve. Prioritizing clarity over completeness allowed it to scale as product needs matured.
Design for how teams actually work
Studying real usage patterns—what designers reused, where friction emerged, and why components were detached—shaped a system that supported real workflows. Adoption became a byproduct of usefulness, not rollout.
Structure creates alignment; flexibility creates momentum
Clear foundations established a shared rhythm, while intentional flexibility allowed designers to move fast without divergence. The system worked because it guided decisions—not because it restricted them.
What I would do differently …
Next time, I’d align earlier with cross-functional partners on when to introduce each layer of system structure. Calibrating system depth to product and organizational readiness would accelerate adoption and amplify impact.





















