Saman
  • Work
  • Projects
  • Gallery
  • Blog
  • Resume
  • Notes
GitHub
  • Home
  • Projects
  • Gallery
  • Blog
  • Resume
  • Notes
←All notes
Published June 14, 20257 min readSaman Sahraei

Design Systems That Survive Nx Monorepos

Shared UI packages, strict boundaries, and typed tokens so landing and dashboard apps do not fork the same button twice.

Design SystemsNxTypeScript
Design Systems That Survive Nx Monorepos

Monorepos fail when every app quietly becomes its own design system. The fix is not more documentation — it is a shared package with tree-shakable exports, typed props, and eslint boundaries that make the wrong import physically annoying.

Packages over copy-paste

Buttons, inputs, dialogs, and skeletons live in packages/ui. Apps consume them; features compose them. Business logic never leaks into primitives, and primitives never import from apps.

  • ◆Shared tsconfig and eslint-config packages
  • ◆Named exports for predictable tree shaking
  • ◆Storybook for visual regression on core components
  • ◆Tailwind v4 tokens mirrored across apps via CSS variables

More notes

November 12, 2025

Tile-Based Caching for Interactive Maps

How square tile keys, spatial caches, and zoom-aware fetching keep dense vendor maps responsive without blocking the UI thread.

October 3, 2025

React Query Patterns for Live Portfolio Demos

Stale times, refetch intervals, and optimistic UI for dashboards that look alive without pretending to be production infrastructure.

August 21, 2025

GPU-Friendly Overlays on Top of MapLibre

Synchronising Three.js with MapLibre, instancing markers, and keeping 60 FPS when the camera moves.