UI/UX Pro Max

design/ui-ux

UI/UX design intelligence with searchable database

#design#ui#ux#design-system

Files

28 files

Expand to preview CSV and code files. Default collapsed for scanability.

  • data/24 files
    • stacks/13 files
      • astro.csv11.6 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1ArchitectureUse Islands ArchitectureAstro's partial hydration only loads JS for interactive componentsInteractive components with client directivesHydrate entire page like traditional SPA<Counter client:load />Everything as client componentHighhttps://docs.astro.build/en/concepts/islands/
        2ArchitectureDefault to zero JSAstro ships zero JS by default - add only when neededStatic components without client directiveAdd client:load to everything<Header /> (static)<Header client:load /> (unnecessary)Highhttps://docs.astro.build/en/basics/astro-components/
        3ArchitectureChoose right client directiveDifferent directives for different hydration timingclient:visible for below-fold client:idle for non-criticalclient:load for everything<Comments client:visible /><Comments client:load />Mediumhttps://docs.astro.build/en/reference/directives-reference/#client-directives
        4ArchitectureUse content collectionsType-safe content management for blogs docsContent collections for structured contentLoose markdown files without schemaconst posts = await getCollection('blog')import.meta.glob('./posts/*.md')Highhttps://docs.astro.build/en/guides/content-collections/
        5ArchitectureDefine collection schemasZod schemas for content validationSchema with required fields and typesNo schema validationdefineCollection({ schema: z.object({...}) })defineCollection({})Highhttps://docs.astro.build/en/guides/content-collections/#defining-a-collection-schema
        6RoutingUse file-based routingCreate routes by adding .astro files in pages/pages/ directory for routesManual route configurationsrc/pages/about.astroCustom router setupMediumhttps://docs.astro.build/en/basics/astro-pages/
        7RoutingDynamic routes with bracketsUse [param] for dynamic routesBracket notation for paramsQuery strings for dynamic contentpages/blog/[slug].astropages/blog.astro?slug=xMediumhttps://docs.astro.build/en/guides/routing/#dynamic-routes
        8RoutingUse getStaticPaths for SSGGenerate static pages at build timegetStaticPaths for known dynamic routesFetch at runtime for static contentexport async function getStaticPaths() { return [...] }No getStaticPaths with dynamic routeHighhttps://docs.astro.build/en/reference/api-reference/#getstaticpaths
        9RoutingEnable SSR when neededServer-side rendering for dynamic contentoutput: 'server' or 'hybrid' for dynamicSSR for purely static sitesexport const prerender = false;SSR for static blogMediumhttps://docs.astro.build/en/guides/server-side-rendering/
        10ComponentsKeep .astro for staticUse .astro components for static contentAstro components for layout structureReact/Vue for static markup<Layout><slot /></Layout><ReactLayout>{children}</ReactLayout>High
        11ComponentsUse framework components for interactivityReact Vue Svelte for complex interactivityFramework component with client directiveAstro component with inline scripts<ReactCounter client:load /><script> in .astro for complex stateMediumhttps://docs.astro.build/en/guides/framework-components/
        12ComponentsPass data via propsAstro components receive props in frontmatterAstro.props for component dataGlobal state for simple dataconst { title } = Astro.props;Import global storeLowhttps://docs.astro.build/en/basics/astro-components/#component-props
        13ComponentsUse slots for compositionNamed and default slots for flexible layouts<slot /> for child contentProps for HTML content<slot name=header /><Component header={<div>...</div>} />Mediumhttps://docs.astro.build/en/basics/astro-components/#slots
        14ComponentsColocate component stylesScoped styles in component file<style> in same .astro fileSeparate CSS files for component styles<style> .card { } </style>import './Card.css'Low
        15StylingUse scoped styles by defaultAstro scopes styles to component automatically<style> for component-specific stylesGlobal styles for everything<style> h1 { } </style> (scoped)<style is:global> for everythingMediumhttps://docs.astro.build/en/guides/styling/#scoped-styles
        16StylingUse is:global sparinglyGlobal styles only when truly neededis:global for base styles or overridesis:global for component styles<style is:global> body { } </style><style is:global> .card { } </style>Medium
        17StylingIntegrate Tailwind properlyUse @astrojs/tailwind integrationOfficial Tailwind integrationManual Tailwind setupnpx astro add tailwindManual PostCSS configLowhttps://docs.astro.build/en/guides/integrations-guide/tailwind/
        18StylingUse CSS variables for themingDefine tokens in :rootCSS custom properties for themesHardcoded colors everywhere:root { --primary: #3b82f6; }color: #3b82f6; everywhereMedium
        19DataFetch in frontmatterData fetching in component frontmatterTop-level await in frontmatteruseEffect for initial dataconst data = await fetch(url)client-side fetch on mountHighhttps://docs.astro.build/en/guides/data-fetching/
        20DataUse Astro.glob for local filesImport multiple local filesAstro.glob for markdown/data filesManual imports for each fileconst posts = await Astro.glob('./posts/*.md')import post1; import post2;Medium
        21DataPrefer content collections over globType-safe collections for structured contentgetCollection() for blog/docsAstro.glob for structured contentawait getCollection('blog')await Astro.glob('./blog/*.md')High
        22DataUse environment variables correctlyImport.meta.env for env varsPUBLIC_ prefix for client varsExpose secrets to clientimport.meta.env.PUBLIC_API_URLimport.meta.env.SECRET in clientHighhttps://docs.astro.build/en/guides/environment-variables/
        23PerformancePreload critical assetsUse link preload for important resourcesPreload fonts above-fold imagesNo preload hints<link rel="preload" href="font.woff2" as="font">No preload for critical assetsMedium
        24PerformanceOptimize images with astro:assetsBuilt-in image optimization<Image /> component for optimization<img> for local imagesimport { Image } from 'astro:assets';<img src="./image.jpg">Highhttps://docs.astro.build/en/guides/images/
        25PerformanceUse picture for responsive imagesMultiple formats and sizes<Picture /> for art directionSingle image size for all screens<Picture /> with multiple sources<Image /> with single sizeMedium
        26PerformanceLazy load below-fold contentDefer loading non-critical contentloading=lazy for images client:visible for componentsLoad everything immediately<img loading="lazy">No lazy loadingMedium
        27PerformanceMinimize client directivesEach directive adds JS bundleAudit client: usage regularlySprinkle client:load everywhereOnly interactive components hydratedEvery component with client:loadHigh

        Preview truncated.

      • flutter.csv10.2 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1WidgetsUse StatelessWidget when possibleImmutable widgets are simplerStatelessWidget for static UIStatefulWidget for everythingclass MyWidget extends StatelessWidgetclass MyWidget extends StatefulWidget (static)Mediumhttps://api.flutter.dev/flutter/widgets/StatelessWidget-class.html
        2WidgetsKeep widgets smallSingle responsibility principleExtract widgets into smaller piecesLarge build methodsColumn(children: [Header() Content()])500+ line build methodMedium
        3WidgetsUse const constructorsCompile-time constants for performanceconst MyWidget() when possibleNon-const for static widgetsconst Text('Hello')Text('Hello') for literalsHighhttps://dart.dev/guides/language/language-tour#constant-constructors
        4WidgetsPrefer composition over inheritanceCombine widgets using childrenCompose widgetsExtend widget classesContainer(child: MyContent())class MyContainer extends ContainerMedium
        5StateUse setState correctlyMinimal state in StatefulWidgetsetState for UI state changessetState for business logicsetState(() { _counter++; })Complex logic in setStateMediumhttps://api.flutter.dev/flutter/widgets/State/setState.html
        6StateAvoid setState in buildNever call setState during buildsetState in callbacks onlysetState in build methodonPressed: () => setState(() {})build() { setState(); }High
        7StateUse state management for complex appsProvider Riverpod BLoCState management for shared statesetState for global stateProvider.of<MyState>(context)Global setState callsMedium
        8StatePrefer Riverpod or ProviderRecommended state solutionsRiverpod for new projectsInheritedWidget manuallyref.watch(myProvider)Custom InheritedWidgetMediumhttps://riverpod.dev/
        9StateDispose resourcesClean up controllers and subscriptionsdispose() for cleanupMemory leaks from subscriptions@override void dispose() { controller.dispose(); }No dispose implementationHigh
        10LayoutUse Column and RowBasic layout widgetsColumn Row for linear layoutsStack for simple layoutsColumn(children: [Text(), Button()])Stack for vertical listMediumhttps://api.flutter.dev/flutter/widgets/Column-class.html
        11LayoutUse Expanded and FlexibleControl flex behaviorExpanded to fill spaceFixed sizes in flex containersExpanded(child: Container())Container(width: 200) in RowMedium
        12LayoutUse SizedBox for spacingConsistent spacingSizedBox for gapsContainer for spacing onlySizedBox(height: 16)Container(height: 16)Low
        13LayoutUse LayoutBuilder for responsiveRespond to constraintsLayoutBuilder for adaptive layoutsFixed sizes for responsiveLayoutBuilder(builder: (context constraints) {})Container(width: 375)Mediumhttps://api.flutter.dev/flutter/widgets/LayoutBuilder-class.html
        14LayoutAvoid deep nestingKeep widget tree shallowExtract deeply nested widgets10+ levels of nestingExtract widget to method or classColumn(Row(Column(Row(...))))Medium
        15ListsUse ListView.builderLazy list buildingListView.builder for long listsListView with children for large listsListView.builder(itemCount: 100, itemBuilder: ...)ListView(children: items.map(...).toList())Highhttps://api.flutter.dev/flutter/widgets/ListView-class.html
        16ListsProvide itemExtent when knownSkip measurementitemExtent for fixed height itemsNo itemExtent for uniform listsListView.builder(itemExtent: 50)ListView.builder without itemExtentMedium
        17ListsUse keys for stateful itemsPreserve widget stateKey for stateful list itemsNo key for dynamic listsListTile(key: ValueKey(item.id))ListTile without keyHigh
        18ListsUse SliverList for custom scrollCustom scroll effectsCustomScrollView with SliversNested ListViewsCustomScrollView(slivers: [SliverList()])ListView inside ListViewMediumhttps://api.flutter.dev/flutter/widgets/SliverList-class.html
        19NavigationUse Navigator 2.0 or GoRouterDeclarative routinggo_router for navigationNavigator.push for complex appsGoRouter(routes: [...])Navigator.push everywhereMediumhttps://pub.dev/packages/go_router
        20NavigationUse named routesOrganized navigationNamed routes for clarityAnonymous routesNavigator.pushNamed(context '/home')Navigator.push(context MaterialPageRoute())Low
        21NavigationHandle back button (PopScope)Android back behavior and predictive back (Android 14+)Use PopScope widget (WillPopScope is deprecated)Use WillPopScopePopScope(canPop: false, onPopInvoked: (didPop) => ...)WillPopScope(onWillPop: ...)Highhttps://api.flutter.dev/flutter/widgets/PopScope-class.html
        22NavigationPass typed argumentsType-safe route argumentsTyped route argumentsDynamic argumentsMyRoute(id: '123')arguments: {'id': '123'}Medium
        23AsyncUse FutureBuilderAsync UI buildingFutureBuilder for async datasetState for asyncFutureBuilder(future: fetchData())fetchData().then((d) => setState())Mediumhttps://api.flutter.dev/flutter/widgets/FutureBuilder-class.html
        24AsyncUse StreamBuilderStream UI buildingStreamBuilder for streamsManual stream subscriptionStreamBuilder(stream: myStream)stream.listen in initStateMediumhttps://api.flutter.dev/flutter/widgets/StreamBuilder-class.html
        25AsyncHandle loading and error statesComplete async UI statesConnectionState checksOnly success stateif (snapshot.connectionState == ConnectionState.waiting)No loading indicatorHigh
        26AsyncCancel subscriptionsClean up stream subscriptionsCancel in disposeMemory leakssubscription.cancel() in disposeNo subscription cleanupHigh
        27ThemingUse ThemeDataConsistent themingThemeData for app themeHardcoded colorsTheme.of(context).primaryColorColor(0xFF123456) everywhereMediumhttps://api.flutter.dev/flutter/material/ThemeData-class.html

        Preview truncated.

      • html-tailwind.csv11.1 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1AnimationUse Tailwind animate utilitiesBuilt-in animations are optimized and respect reduced-motionUse animate-pulse animate-spin animate-pingCustom @keyframes for simple effectsanimate-pulse@keyframes pulse {...}Mediumhttps://tailwindcss.com/docs/animation
        2AnimationLimit bounce animationsContinuous bounce is distracting and causes motion sicknessUse animate-bounce sparingly on CTAs onlyMultiple bounce animations on pageSingle CTA with animate-bounce5+ elements with animate-bounceHigh
        3AnimationTransition durationUse appropriate transition speeds for UI feedbackduration-150 to duration-300 for UIduration-1000 or longer for UI elementstransition-all duration-200transition-all duration-1000Mediumhttps://tailwindcss.com/docs/transition-duration
        4AnimationHover transitionsAdd smooth transitions on hover state changesAdd transition class with hover statesInstant hover changes without transitionhover:bg-gray-100 transition-colorshover:bg-gray-100 (no transition)Low
        5Z-IndexUse Tailwind z-* scaleConsistent stacking context with predefined scalez-0 z-10 z-20 z-30 z-40 z-50Arbitrary z-index valuesz-50 for modalsz-[9999]Mediumhttps://tailwindcss.com/docs/z-index
        6Z-IndexFixed elements z-indexFixed navigation and modals need explicit z-indexz-50 for nav z-40 for dropdownsRelying on DOM order for stackingfixed top-0 z-50fixed top-0 (no z-index)High
        7Z-IndexNegative z-index for backgroundsUse negative z-index for decorative backgroundsz-[-1] for background elementsPositive z-index for backgrounds-z-10 for decorativez-10 for backgroundLow
        8LayoutContainer max-widthLimit content width for readabilitymax-w-7xl mx-auto for main contentFull-width content on large screensmax-w-7xl mx-auto px-4w-full (no max-width)Mediumhttps://tailwindcss.com/docs/container
        9LayoutResponsive paddingAdjust padding for different screen sizespx-4 md:px-6 lg:px-8Same padding all sizespx-4 sm:px-6 lg:px-8px-8 (same all sizes)Medium
        10LayoutGrid gapsUse consistent gap utilities for spacinggap-4 gap-6 gap-8Margins on individual itemsgrid gap-6grid with mb-4 on each itemMediumhttps://tailwindcss.com/docs/gap
        11LayoutFlexbox alignmentUse flex utilities for alignmentitems-center justify-betweenMultiple nested wrappersflex items-center justify-betweenNested divs for alignmentLow
        12ImagesAspect ratioMaintain consistent image aspect ratiosaspect-video aspect-squareNo aspect ratio on containersaspect-video rounded-lgNo aspect controlMediumhttps://tailwindcss.com/docs/aspect-ratio
        13ImagesObject fitControl image scaling within containersobject-cover object-containStretched distorted imagesobject-cover w-full h-fullNo object-fitMediumhttps://tailwindcss.com/docs/object-fit
        14ImagesLazy loadingDefer loading of off-screen imagesloading='lazy' on imagesAll images eager load<img loading='lazy'><img> without lazyHigh
        15ImagesResponsive imagesServe appropriate image sizessrcset and sizes attributesSame large image all devicessrcset with multiple sizes4000px image everywhereHigh
        16TypographyProse pluginUse @tailwindcss/typography for rich textprose prose-lg for article contentCustom styles for markdownprose prose-lg max-w-noneCustom text stylingMediumhttps://tailwindcss.com/docs/typography-plugin
        17TypographyLine heightUse appropriate line height for readabilityleading-relaxed for body textDefault tight line heightleading-relaxed (1.625)leading-none or leading-tightMediumhttps://tailwindcss.com/docs/line-height
        18TypographyFont size scaleUse consistent text size scaletext-sm text-base text-lg text-xlArbitrary font sizestext-lgtext-[17px]Lowhttps://tailwindcss.com/docs/font-size
        19TypographyText truncationHandle long text gracefullytruncate or line-clamp-*Overflow breaking layoutline-clamp-2No overflow handlingMediumhttps://tailwindcss.com/docs/text-overflow
        20ColorsOpacity utilitiesUse color opacity utilitiesbg-black/50 text-white/80Separate opacity classbg-black/50bg-black opacity-50Lowhttps://tailwindcss.com/docs/background-color
        21ColorsDark modeSupport dark mode with dark: prefixdark:bg-gray-900 dark:text-whiteNo dark mode supportdark:bg-gray-900Only light themeMediumhttps://tailwindcss.com/docs/dark-mode
        22ColorsSemantic colorsUse semantic color naming in configprimary secondary danger successGeneric color names in componentsbg-primarybg-blue-500 everywhereMedium
        23SpacingConsistent spacing scaleUse Tailwind spacing scale consistentlyp-4 m-6 gap-8Arbitrary pixel valuesp-4 (1rem)p-[15px]Lowhttps://tailwindcss.com/docs/customizing-spacing
        24SpacingNegative marginsUse sparingly for overlapping effects-mt-4 for overlapping elementsNegative margins for layout fixing-mt-8 for card overlap-m-2 to fix spacing issuesMedium
        25SpacingSpace betweenUse space-y-* for vertical listsspace-y-4 on flex/grid columnMargin on each childspace-y-4Each child has mb-4Lowhttps://tailwindcss.com/docs/space
        26FormsFocus statesAlways show focus indicatorsfocus:ring-2 focus:ring-blue-500Remove focus outlinefocus:ring-2 focus:ring-offset-2focus:outline-none (no replacement)High
        27FormsInput sizingConsistent input dimensionsh-10 px-3 for inputsInconsistent input heightsh-10 w-full px-3Various heights per inputMedium

        Preview truncated.

      • jetpack-compose.csv8.00 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1ComposablePure UI composablesComposable functions should only render UIAccept state and callbacksCalling usecase/repoPure UI composableBusiness logic in UIHighhttps://developer.android.com/jetpack/compose/mental-model
        2ComposableSmall composablesEach composable has single responsibilitySplit into componentsHuge composableReusable UIMonolithic UIMedium
        3ComposableStateless by defaultPrefer stateless composablesHoist stateLocal mutable stateStateless UIHidden stateHighhttps://developer.android.com/jetpack/compose/state#state-hoisting
        4StateSingle source of truthUI state comes from one sourceStateFlow from VMMultiple statesUnified UiStateScattered stateHighhttps://developer.android.com/topic/architecture/ui-layer
        5StateModel UI StateUse sealed interface/data classUiState.LoadingBoolean flagsExplicit stateFlag hellHigh
        6Stateremember only UI stateremember for UI-only stateScroll, animationBusiness stateCorrect rememberMisuse rememberHighhttps://developer.android.com/jetpack/compose/state
        7StaterememberSaveablePersist state across configrememberSaveablerememberState survivesState lostHighhttps://developer.android.com/jetpack/compose/state#restore-ui-state
        8StatederivedStateOfOptimize recompositionderivedStateOfRecompute alwaysOptimizedJankMediumhttps://developer.android.com/jetpack/compose/performance
        9SideEffectLaunchedEffect keysUse correct keysLaunchedEffect(id)LaunchedEffect(Unit)Scoped effectInfinite loopHighhttps://developer.android.com/jetpack/compose/side-effects
        10SideEffectrememberUpdatedStateAvoid stale lambdasrememberUpdatedStateCapture directlySafe callbackStale stateMediumhttps://developer.android.com/jetpack/compose/side-effects
        11SideEffectDisposableEffectClean up resourcesonDisposeNo cleanupNo leakMemory leakHigh
        12ArchitectureUnidirectional data flowUI → VM → StateonEventTwo-way bindingPredictable flowHard debugHighhttps://developer.android.com/topic/architecture
        13ArchitectureNo business logic in UILogic belongs to VMCollect stateCall repoClean UIFat UIHigh
        14ArchitectureExpose immutable stateExpose StateFlowasStateFlowMutable exposedSafe APIState mutationHigh
        15LifecycleLifecycle-aware collectUse collectAsStateWithLifecycleLifecycle awarecollectAsStateNo leakLeakHighhttps://developer.android.com/jetpack/compose/lifecycle
        16NavigationEvent-based navigationVM emits navigation eventVM: Channel + receiveAsFlow(), V: Collect with Dispatchers.Main.immediateNav in UIDecoupled navUsing State / SharedFlow for navigation -> event is replayed and navigation fires again (StateFlow)Highhttps://developer.android.com/jetpack/compose/navigation
        17NavigationTyped routesUse sealed routessealed class RouteString routesType-safeRuntime crashMedium
        18PerformanceStable parametersPrefer immutable/stable params@ImmutableMutable paramsStable recompositionExtra recompositionHighhttps://developer.android.com/jetpack/compose/performance
        19PerformanceUse key in LazyProvide stable keyskey=idNo keyStable listItem jumpHigh
        20PerformanceAvoid heavy workNo heavy computation in UIPrecompute in VMCompute in UISmooth UIJankHigh
        21PerformanceRemember expensive objectsremember heavy objectsrememberRecreate each recompositionEfficientWastefulMedium
        22ThemingDesign systemCentralized themeMaterial3 tokensHardcoded valuesConsistent UIInconsistentHighhttps://developer.android.com/jetpack/compose/themes
        23ThemingDark mode supportTheme-based colorscolorSchemeFixed colorAdaptive UIBroken darkMedium
        24LayoutPrefer Modifier over extra layoutsUse Modifier to adjust layout instead of adding wrapper composablesUse Modifier.padding()Wrap content with extra BoxPadding via modifierBox just for paddingHighhttps://developer.android.com/jetpack/compose/modifiers
        25LayoutAvoid deep layout nestingDeep layout trees increase measure & layout costKeep layout flatBox ? Column ? Box ? RowFlat hierarchyDeep nested treeHigh
        26LayoutUse Row/Column for linear layoutLinear layouts are simpler and more performantUse Row / ColumnCustom layout for simple casesRow/Column usageOver-engineered layoutHigh
        27LayoutUse Box only for overlapping contentBox should be used only when children overlapStack elementsUse Box as ColumnProper overlayMisused BoxMedium

        Preview truncated.

      • nextjs.csv12.3 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1RoutingUse App Router for new projectsApp Router is the recommended approach in Next.js 14+app/ directory with page.tsxpages/ for new projectsapp/dashboard/page.tsxpages/dashboard.tsxMediumhttps://nextjs.org/docs/app
        2RoutingUse file-based routingCreate routes by adding files in app directorypage.tsx for routes layout.tsx for layoutsManual route configurationapp/blog/[slug]/page.tsxCustom router setupMediumhttps://nextjs.org/docs/app/building-your-application/routing
        3RoutingColocate related filesKeep components styles tests with their routesComponent files alongside page.tsxSeparate components folderapp/dashboard/_components/components/dashboard/Low
        4RoutingUse route groups for organizationGroup routes without affecting URLParentheses for route groupsNested folders affecting URL(marketing)/about/page.tsxmarketing/about/page.tsxLowhttps://nextjs.org/docs/app/building-your-application/routing/route-groups
        5RoutingHandle loading statesUse loading.tsx for route loading UIloading.tsx alongside page.tsxManual loading state managementapp/dashboard/loading.tsxuseState for loading in pageMediumhttps://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming
        6RoutingHandle errors with error.tsxCatch errors at route levelerror.tsx with reset functiontry/catch in every componentapp/dashboard/error.tsxtry/catch in page componentHighhttps://nextjs.org/docs/app/building-your-application/routing/error-handling
        7RenderingUse Server Components by defaultServer Components reduce client JS bundleKeep components server by defaultAdd 'use client' unnecessarilyexport default function Page()('use client') for static contentHighhttps://nextjs.org/docs/app/building-your-application/rendering/server-components
        8RenderingMark Client Components explicitly'use client' for interactive componentsAdd 'use client' only when neededServer Component with hooks/events('use client') for onClick useStateNo directive with useStateHighhttps://nextjs.org/docs/app/building-your-application/rendering/client-components
        9RenderingPush Client Components downKeep Client Components as leaf nodesClient wrapper for interactive parts onlyMark page as Client Component<InteractiveButton/> in Server Page('use client') on page.tsxHigh
        10RenderingUse streaming for better UXStream content with Suspense boundariesSuspense for slow data fetchesWait for all data before render<Suspense><SlowComponent/></Suspense>await allData then renderMediumhttps://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming
        11RenderingChoose correct rendering strategySSG for static SSR for dynamic ISR for semi-staticgenerateStaticParams for known pathsSSR for static contentexport const revalidate = 3600fetch without cache configMedium
        12DataFetchingFetch data in Server ComponentsFetch directly in async Server Componentsasync function Page() { const data = await fetch() }useEffect for initial dataconst data = await fetch(url)useEffect(() => fetch(url))Highhttps://nextjs.org/docs/app/building-your-application/data-fetching
        13DataFetchingConfigure caching explicitly (Next.js 15+)Next.js 15 changed defaults to uncached for fetchExplicitly set cache: 'force-cache' for static dataAssume default is cached (it's not in Next.js 15)fetch(url { cache: 'force-cache' })fetch(url) // Uncached in v15Highhttps://nextjs.org/docs/app/building-your-application/upgrading/version-15
        14DataFetchingDeduplicate fetch requestsReact and Next.js dedupe same requestsSame fetch call in multiple componentsManual request deduplicationMultiple components fetch same URLCustom cache layerLow
        15DataFetchingUse Server Actions for mutationsServer Actions for form submissionsaction={serverAction} in formsAPI route for every mutation<form action={createPost}><form onSubmit={callApiRoute}>Mediumhttps://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations
        16DataFetchingRevalidate data appropriatelyUse revalidatePath/revalidateTag after mutationsRevalidate after Server Action'use client' with manual refetchrevalidatePath('/posts')router.refresh() everywhereMediumhttps://nextjs.org/docs/app/building-your-application/caching#revalidating
        17ImagesUse next/image for optimizationAutomatic image optimization and lazy loading<Image> component for all images<img> tags directly<Image src={} alt={} width={} height={}><img src={}/>Highhttps://nextjs.org/docs/app/building-your-application/optimizing/images
        18ImagesProvide width and heightPrevent layout shift with dimensionswidth and height props or fillMissing dimensions<Image width={400} height={300}/><Image src={url}/>High
        19ImagesUse fill for responsive imagesFill container with object-fitfill prop with relative parentFixed dimensions for responsive<Image fill className="object-cover"/><Image width={window.width}/>Medium
        20ImagesConfigure remote image domainsWhitelist external image sourcesremotePatterns in next.config.jsAllow all domainsremotePatterns: [{ hostname: 'cdn.example.com' }]domains: ['*']Highhttps://nextjs.org/docs/app/api-reference/components/image#remotepatterns
        21ImagesUse priority for LCP imagesMark above-fold images as prioritypriority prop on hero imagesAll images with priority<Image priority src={hero}/><Image priority/> on every imageMedium
        22FontsUse next/font for fontsSelf-hosted fonts with zero layout shiftnext/font/google or next/font/localExternal font linksimport { Inter } from 'next/font/google'<link href="fonts.googleapis.com"/>Mediumhttps://nextjs.org/docs/app/building-your-application/optimizing/fonts
        23FontsApply font to layoutSet font in root layout for consistencyclassName on body in layout.tsxFont in individual pages<body className={inter.className}>Each page imports fontLow
        24FontsUse variable fontsVariable fonts reduce bundle sizeSingle variable font fileMultiple font weights as filesInter({ subsets: ['latin'] })Inter_400 Inter_500 Inter_700Low
        25MetadataUse generateMetadata for dynamicGenerate metadata based on paramsexport async function generateMetadata()Hardcoded metadata everywheregenerateMetadata({ params })export const metadata = {}Mediumhttps://nextjs.org/docs/app/building-your-application/optimizing/metadata
        26MetadataInclude OpenGraph imagesAdd OG images for social sharingopengraph-image.tsx or og propertyMissing social preview imagesopengraph: { images: ['/og.png'] }No OG configurationMedium
        27MetadataUse metadata APIExport metadata object for static metadataexport const metadata = {}Manual head tagsexport const metadata = { title: 'Page' }<head><title>Page</title></head>Medium

        Preview truncated.

      • nuxt-ui.csv13.7 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1InstallationAdd Nuxt UI moduleInstall and configure Nuxt UI in your Nuxt projectpnpm add @nuxt/ui and add to modulesManual component importsmodules: ['@nuxt/ui']import { UButton } from '@nuxt/ui'Highhttps://ui.nuxt.com/docs/getting-started/installation/nuxt
        2InstallationImport Tailwind and Nuxt UI CSSRequired CSS imports in main.css file@import tailwindcss and @import @nuxt/uiSkip CSS imports@import "tailwindcss"; @import "@nuxt/ui";No CSS importsHighhttps://ui.nuxt.com/docs/getting-started/installation/nuxt
        3InstallationWrap app with UApp componentUApp provides global configs for Toast Tooltip and overlays<UApp> wrapper in app.vueSkip UApp wrapper<UApp><NuxtPage/></UApp><NuxtPage/> without wrapperHighhttps://ui.nuxt.com/docs/components/app
        4ComponentsUse U prefix for componentsAll Nuxt UI components use U prefix by defaultUButton UInput UModalButton Input Modal<UButton>Click</UButton><Button>Click</Button>Mediumhttps://ui.nuxt.com/docs/getting-started/installation/nuxt
        5ComponentsUse semantic color propsUse semantic colors like primary secondary errorcolor=primary color=errorHardcoded colors<UButton color="primary"><UButton class="bg-green-500">Mediumhttps://ui.nuxt.com/docs/getting-started/theme/design-system
        6ComponentsUse variant prop for stylingNuxt UI provides solid outline soft subtle ghost link variantsvariant=soft variant=outlineCustom button classes<UButton variant="soft"><UButton class="border bg-transparent">Mediumhttps://ui.nuxt.com/docs/components/button
        7ComponentsUse size prop consistentlyComponents support xs sm md lg xl sizessize=sm size=lgArbitrary sizing classes<UButton size="lg"><UButton class="text-xl px-6">Lowhttps://ui.nuxt.com/docs/components/button
        8IconsUse icon prop with Iconify formatNuxt UI supports Iconify icons via icon propicon=lucide:home icon=heroicons:useri-lucide-home format<UButton icon="lucide:home"><UButton icon="i-lucide-home">Mediumhttps://ui.nuxt.com/docs/getting-started/integrations/icons/nuxt
        9IconsUse leadingIcon and trailingIconPosition icons with dedicated props for clarityleadingIcon=lucide:plus trailingIcon=lucide:arrow-rightManual icon positioning<UButton leadingIcon="lucide:plus"><UButton><Icon name="lucide:plus"/>Add</UButton>Lowhttps://ui.nuxt.com/docs/components/button
        10ThemingConfigure colors in app.config.tsRuntime color configuration without restartui.colors.primary in app.config.tsHardcoded colors in componentsdefineAppConfig({ ui: { colors: { primary: 'blue' } } })<UButton class="bg-blue-500">Highhttps://ui.nuxt.com/docs/getting-started/theme/design-system
        11ThemingUse @theme directive for custom colorsDefine design tokens in CSS with Tailwind @theme@theme { --color-brand-500: #xxx }Inline color definitions@theme { --color-brand-500: #ef4444; }:style={ color: '#ef4444' }Mediumhttps://ui.nuxt.com/docs/getting-started/theme/design-system
        12ThemingExtend semantic colors in nuxt.configRegister new colors like tertiary in theme.colorstheme.colors array in ui configUse undefined colorsui: { theme: { colors: ['primary', 'tertiary'] } }<UButton color="tertiary"> without configMediumhttps://ui.nuxt.com/docs/getting-started/theme/design-system
        13FormsUse UForm with schema validationUForm supports Zod Yup Joi Valibot schemas:schema prop with validation schemaManual form validation<UForm :schema="schema" :state="state">Manual @blur validationHighhttps://ui.nuxt.com/docs/components/form
        14FormsUse UFormField for field wrapperProvides label error message and validation displayUFormField with name propManual error handling<UFormField name="email" label="Email"><div><label>Email</label><UInput/><span>error</span></div>Mediumhttps://ui.nuxt.com/docs/components/form-field
        15FormsHandle form submit with @submitUForm emits submit event with validated data@submit handler on UForm@click on submit button<UForm @submit="onSubmit"><UButton @click="onSubmit">Mediumhttps://ui.nuxt.com/docs/components/form
        16FormsUse validateOn prop for validation timingControl when validation triggers (blur change input)validateOn=['blur'] for performanceAlways validate on input<UForm :validateOn="['blur', 'change']"><UForm> (validates on every keystroke)Lowhttps://ui.nuxt.com/docs/components/form
        17OverlaysUse v-model:open for overlay controlModal Slideover Drawer use v-model:openv-model:open for controlled stateManual show/hide logic<UModal v-model:open="isOpen"><UModal v-if=isOpen>Mediumhttps://ui.nuxt.com/docs/components/modal
        18OverlaysUse useOverlay composable for programmatic overlaysOpen overlays programmatically without template refsuseOverlay().open(MyModal)Template ref and manual controlconst overlay = useOverlay(); overlay.open(MyModal, { props })const modal = ref(); modal.value.open()Mediumhttps://ui.nuxt.com/docs/components/modal
        19OverlaysUse title and description propsBuilt-in header support for overlaystitle=Confirm description=Are you sure?Manual header content<UModal title="Confirm" description="Are you sure?"><UModal><template #header><h2>Confirm</h2></template>Lowhttps://ui.nuxt.com/docs/components/modal
        20DashboardUse UDashboardSidebar for navigationProvides collapsible resizable sidebar with mobile supportUDashboardSidebar with header default footer slotsCustom sidebar implementation<UDashboardSidebar><template #header>...</template></UDashboardSidebar><aside class=w-64 border-r>Mediumhttps://ui.nuxt.com/docs/components/dashboard-sidebar
        21DashboardUse UDashboardGroup for layoutWraps dashboard components with sidebar state managementUDashboardGroup > UDashboardSidebar + UDashboardPanelManual layout flex containers<UDashboardGroup><UDashboardSidebar/><UDashboardPanel/></UDashboardGroup><div class="flex"><aside/><main/></div>Mediumhttps://ui.nuxt.com/docs/components/dashboard-group
        22DashboardUse UDashboardNavbar for top navigationResponsive navbar with mobile menu supportUDashboardNavbar in dashboard layoutCustom navbar implementation<UDashboardNavbar :links=navLinks/><nav class=border-b>Lowhttps://ui.nuxt.com/docs/components/dashboard-navbar
        23TablesUse UTable with data and columns propsPowered by TanStack Table with built-in features:data and :columns propsManual table markup<UTable :data="users" :columns="columns"/><table><tr v-for="user in users">Highhttps://ui.nuxt.com/docs/components/table
        24TablesDefine columns with accessorKeyColumn definitions use accessorKey for data bindingaccessorKey: 'email' in column defString column names only{ accessorKey: 'email', header: 'Email' }['name', 'email']Mediumhttps://ui.nuxt.com/docs/components/table
        25TablesUse cell slot for custom renderingCustomize cell content with scoped slots#cell-columnName slotOverride entire table<template #cell-status={ row }>Manual column render functionMediumhttps://ui.nuxt.com/docs/components/table
        26TablesEnable sorting with sortable column optionAdd sortable: true to column definitionsortable: true in columnManual sort implementation{ accessorKey: 'name', sortable: true }@click=sortBy('name')Lowhttps://ui.nuxt.com/docs/components/table
        27NavigationUse UNavigationMenu for nav linksHorizontal or vertical navigation with dropdown supportUNavigationMenu with items arrayManual nav with v-for<UNavigationMenu :items="navItems"/><nav><a v-for="item in items">Mediumhttps://ui.nuxt.com/docs/components/navigation-menu

        Preview truncated.

      • nuxtjs.csv16.2 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1RoutingUse file-based routingCreate routes by adding files in pages directorypages/ directory with index.vueManual route configurationpages/dashboard/index.vueCustom router setupMediumhttps://nuxt.com/docs/getting-started/routing
        2RoutingUse dynamic route parametersCreate dynamic routes with bracket syntax[id].vue for dynamic paramsHardcoded routes for dynamic contentpages/posts/[id].vuepages/posts/post1.vueMediumhttps://nuxt.com/docs/getting-started/routing
        3RoutingUse catch-all routesHandle multiple path segments with [...slug][...slug].vue for catch-allMultiple nested dynamic routespages/[...slug].vuepages/[a]/[b]/[c].vueLowhttps://nuxt.com/docs/getting-started/routing
        4RoutingDefine page metadata with definePageMetaSet page-level configuration and middlewaredefinePageMeta for layout middleware titleManual route meta configurationdefinePageMeta({ layout: 'admin', middleware: 'auth' })router.beforeEach for page configHighhttps://nuxt.com/docs/api/utils/define-page-meta
        5RoutingUse validate for route paramsValidate dynamic route parameters before renderingvalidate function in definePageMetaManual validation in setupdefinePageMeta({ validate: (route) => /^\d+$/.test(route.params.id) })if (!valid) navigateTo('/404')Mediumhttps://nuxt.com/docs/api/utils/define-page-meta
        6RenderingUse SSR by defaultServer-side rendering is enabled by defaultKeep ssr: true (default)Disable SSR unnecessarilyssr: true (default)ssr: false for all pagesHighhttps://nuxt.com/docs/guide/concepts/rendering
        7RenderingUse .client suffix for client-only componentsMark components to render only on clientComponentName.client.vue suffixv-if with process.client checkComments.client.vue<div v-if=process.client><Comments/></div>Mediumhttps://nuxt.com/docs/guide/directory-structure/components
        8RenderingUse .server suffix for server-only componentsMark components to render only on serverComponentName.server.vue suffixManual server checkHeavyMarkdown.server.vuev-if=process.serverLowhttps://nuxt.com/docs/guide/directory-structure/components
        9DataFetchingUse useFetch for simple data fetchingWrapper around useAsyncData for URL fetchinguseFetch for API calls$fetch in onMountedconst { data } = await useFetch('/api/posts')onMounted(async () => { data.value = await $fetch('/api/posts') })Highhttps://nuxt.com/docs/api/composables/use-fetch
        10DataFetchingUse useAsyncData for complex fetchingFine-grained control over async datauseAsyncData for CMS or custom fetchinguseFetch for non-URL data sourcesconst { data } = await useAsyncData('posts', () => cms.getPosts())const { data } = await useFetch(() => cms.getPosts())Mediumhttps://nuxt.com/docs/api/composables/use-async-data
        11DataFetchingUse $fetch for non-reactive requests$fetch for event handlers and non-component code$fetch in event handlers or server routesuseFetch in click handlersasync function submit() { await $fetch('/api/submit', { method: 'POST' }) }async function submit() { await useFetch('/api/submit') }Highhttps://nuxt.com/docs/api/utils/dollarfetch
        12DataFetchingUse lazy option for non-blocking fetchDefer data fetching for better initial loadlazy: true for below-fold contentBlocking fetch for non-critical datauseFetch('/api/comments', { lazy: true })await useFetch('/api/comments') for footerMediumhttps://nuxt.com/docs/api/composables/use-fetch
        13DataFetchingUse server option to control fetch locationChoose where data is fetchedserver: false for client-only dataServer fetch for user-specific client datauseFetch('/api/user-preferences', { server: false })useFetch for localStorage-dependent dataMediumhttps://nuxt.com/docs/api/composables/use-fetch
        14DataFetchingUse pick to reduce payload sizeSelect only needed fields from responsepick option for large responsesFetching entire objects when few fields neededuseFetch('/api/user', { pick: ['id', 'name'] })useFetch('/api/user') then destructureLowhttps://nuxt.com/docs/api/composables/use-fetch
        15DataFetchingUse transform for data manipulationTransform data before storing in statetransform option for data shapingManual transformation after fetchuseFetch('/api/posts', { transform: (posts) => posts.map(p => p.title) })const titles = data.value.map(p => p.title)Lowhttps://nuxt.com/docs/api/composables/use-fetch
        16DataFetchingHandle loading and error statesAlways handle pending and error statesCheck status pending error refsIgnoring loading states<div v-if="status === 'pending'">Loading...</div>No loading indicatorHighhttps://nuxt.com/docs/getting-started/data-fetching
        17LifecycleAvoid side effects in script setup rootMove side effects to lifecycle hooksSide effects in onMountedsetInterval in root script setuponMounted(() => { interval = setInterval(...) })<script setup>setInterval(...)</script>Highhttps://nuxt.com/docs/guide/concepts/nuxt-lifecycle
        18LifecycleUse onMounted for DOM accessAccess DOM only after component is mountedonMounted for DOM manipulationDirect DOM access in setuponMounted(() => { document.getElementById('el') })<script setup>document.getElementById('el')</script>Highhttps://nuxt.com/docs/api/composables/on-mounted
        19LifecycleUse nextTick for post-render accessWait for DOM updates before accessing elementsawait nextTick() after state changesImmediate DOM access after state changecount.value++; await nextTick(); el.value.focus()count.value++; el.value.focus()Mediumhttps://nuxt.com/docs/api/utils/next-tick
        20LifecycleUse onPrehydrate for pre-hydration logicRun code before Nuxt hydrates the pageonPrehydrate for client setuponMounted for hydration-critical codeonPrehydrate(() => { console.log(window) })onMounted for pre-hydration needsLowhttps://nuxt.com/docs/api/composables/on-prehydrate
        21ServerUse server/api for API routesCreate API endpoints in server/api directoryserver/api/users.ts for /api/usersManual Express setupserver/api/hello.ts -> /api/helloapp.get('/api/hello')Highhttps://nuxt.com/docs/guide/directory-structure/server
        22ServerUse defineEventHandler for handlersDefine server route handlersdefineEventHandler for all handlersexport default functionexport default defineEventHandler((event) => { return { hello: 'world' } })export default function(req, res) {}Highhttps://nuxt.com/docs/guide/directory-structure/server
        23ServerUse server/routes for non-api routesRoutes without /api prefixserver/routes for custom pathsserver/api for non-api routesserver/routes/sitemap.xml.tsserver/api/sitemap.xml.tsMediumhttps://nuxt.com/docs/guide/directory-structure/server
        24ServerUse getQuery and readBody for inputAccess query params and request bodygetQuery(event) readBody(event)Direct event accessconst { id } = getQuery(event)event.node.req.queryMediumhttps://nuxt.com/docs/guide/directory-structure/server
        25ServerValidate server inputAlways validate input in server handlersZod or similar for validationTrust client inputconst body = await readBody(event); schema.parse(body)const body = await readBody(event)Highhttps://nuxt.com/docs/guide/directory-structure/server
        26StateUse useState for shared reactive stateSSR-friendly shared state across componentsuseState for cross-component stateref for shared stateconst count = useState('count', () => 0)const count = ref(0) in composableHighhttps://nuxt.com/docs/api/composables/use-state
        27StateUse unique keys for useStatePrevent state conflicts with unique keysDescriptive unique keys for each stateGeneric or duplicate keysuseState('user-preferences', () => ({}))useState('data') in multiple placesMediumhttps://nuxt.com/docs/api/composables/use-state

        Preview truncated.

      • react-native.csv9.80 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1ComponentsUse functional componentsHooks-based components are standardFunctional components with hooksClass componentsconst App = () => { }class App extends ComponentMediumhttps://reactnative.dev/docs/intro-react
        2ComponentsKeep components smallSingle responsibility principleSplit into smaller componentsLarge monolithic components<Header /><Content /><Footer />500+ line componentMedium
        3ComponentsUse TypeScriptType safety for props and stateTypeScript for new projectsJavaScript without typesconst Button: FC<Props> = () => { }const Button = (props) => { }Medium
        4ComponentsColocate component filesKeep related files togetherComponent folder with stylesFlat structurecomponents/Button/index.tsx styles.tscomponents/Button.tsx styles/button.tsLow
        5StylingUse StyleSheet.createOptimized style objectsStyleSheet for all stylesInline style objectsStyleSheet.create({ container: {} })style={{ margin: 10 }}Highhttps://reactnative.dev/docs/stylesheet
        6StylingAvoid inline stylesPrevent object recreationStyles in StyleSheetInline style objects in renderstyle={styles.container}style={{ margin: 10, padding: 5 }}Medium
        7StylingUse flexbox for layoutReact Native uses flexboxflexDirection alignItems justifyContentAbsolute positioning everywhereflexDirection: 'row'position: 'absolute' everywhereMediumhttps://reactnative.dev/docs/flexbox
        8StylingHandle platform differencesPlatform-specific stylesPlatform.select or .ios/.android filesSame styles for both platformsPlatform.select({ ios: {}, android: {} })Hardcoded iOS valuesMediumhttps://reactnative.dev/docs/platform-specific-code
        9StylingUse responsive dimensionsScale for different screensDimensions or useWindowDimensionsFixed pixel valuesuseWindowDimensions()width: 375Medium
        10NavigationUse React NavigationStandard navigation libraryReact Navigation for routingManual navigation managementcreateStackNavigator()Custom navigation stateMediumhttps://reactnavigation.org/
        11NavigationType navigation paramsType-safe navigationTyped navigation propsUntyped navigationnavigation.navigate<RootStackParamList>('Home', { id })navigation.navigate('Home', { id })Medium
        12NavigationUse deep linkingSupport URL-based navigationConfigure linking propNo deep link supportlinking: { prefixes: [] }No linking configurationMediumhttps://reactnavigation.org/docs/deep-linking/
        13NavigationHandle back buttonAndroid back button handlinguseFocusEffect with BackHandlerIgnore back buttonBackHandler.addEventListenerNo back handlerHigh
        14StateUse useState for local stateSimple component stateuseState for UI stateClass component stateconst [count, setCount] = useState(0)this.state = { count: 0 }Medium
        15StateUse useReducer for complex stateComplex state logicuseReducer for related stateMultiple useState for related valuesuseReducer(reducer initialState)5+ useState callsMedium
        16StateUse context sparinglyContext for global stateContext for theme auth localeContext for frequently changing dataThemeContext for app themeContext for list item dataMedium
        17StateConsider Zustand or ReduxExternal state managementZustand for simple Redux for complexuseState for global statecreate((set) => ({ }))Prop drilling global stateMedium
        18ListsUse FlatList for long listsVirtualized list renderingFlatList for 50+ itemsScrollView with map<FlatList data={items} /><ScrollView>{items.map()}</ScrollView>Highhttps://reactnative.dev/docs/flatlist
        19ListsProvide keyExtractorUnique keys for list itemskeyExtractor with stable IDIndex as keykeyExtractor={(item) => item.id}keyExtractor={(_, index) => index}High
        20ListsOptimize renderItemMemoize list item componentsReact.memo for list itemsInline render functionrenderItem={({ item }) => <MemoizedItem item={item} />}renderItem={({ item }) => <View>...</View>}High
        21ListsUse getItemLayout for fixed heightSkip measurement for performancegetItemLayout when height knownDynamic measurement for fixed itemsgetItemLayout={(_, index) => ({ length: 50, offset: 50 * index, index })}No getItemLayout for fixed heightMedium
        22ListsImplement windowSizeControl render windowSmaller windowSize for memoryDefault windowSize for large listswindowSize={5}windowSize={21} for huge listsMedium
        23PerformanceUse React.memoPrevent unnecessary re-rendersmemo for pure componentsNo memoizationexport default memo(MyComponent)export default MyComponentMedium
        24PerformanceUse useCallback for handlersStable function referencesuseCallback for propsNew function on every renderuseCallback(() => {}, [deps])() => handlePress()Medium
        25PerformanceUse useMemo for expensive opsCache expensive calculationsuseMemo for heavy computationsRecalculate every renderuseMemo(() => expensive(), [deps])const result = expensive()Medium
        26PerformanceAvoid anonymous functions in JSXPrevent re-rendersNamed handlers or useCallbackInline arrow functionsonPress={handlePress}onPress={() => doSomething()}Medium
        27PerformanceUse Hermes engineImproved startup and memoryEnable Hermes in buildJavaScriptCore for new projectshermes_enabled: truehermes_enabled: falseMediumhttps://reactnative.dev/docs/hermes

        Preview truncated.

      • react.csv12.7 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1StateUse useState for local stateSimple component state should use useState hookuseState for form inputs toggles countersClass components this.stateconst [count, setCount] = useState(0)this.state = { count: 0 }Mediumhttps://react.dev/reference/react/useState
        2StateLift state up when neededShare state between siblings by lifting to parentLift shared state to common ancestorProp drilling through many levelsParent holds state passes downDeep prop chainsMediumhttps://react.dev/learn/sharing-state-between-components
        3StateUse useReducer for complex stateComplex state logic benefits from reducer patternuseReducer for state with multiple sub-valuesMultiple useState for related valuesuseReducer with action types5+ useState calls that update togetherMediumhttps://react.dev/reference/react/useReducer
        4StateAvoid unnecessary stateDerive values from existing state when possibleCompute derived values in renderStore derivable values in stateconst total = items.reduce(...)const [total, setTotal] = useState(0)Highhttps://react.dev/learn/choosing-the-state-structure
        5StateInitialize state lazilyUse function form for expensive initial stateuseState(() => computeExpensive())useState(computeExpensive())useState(() => JSON.parse(data))useState(JSON.parse(data))Mediumhttps://react.dev/reference/react/useState#avoiding-recreating-the-initial-state
        6EffectsClean up effectsReturn cleanup function for subscriptions timersReturn cleanup function in useEffectNo cleanup for subscriptionsuseEffect(() => { sub(); return unsub; })useEffect(() => { subscribe(); })Highhttps://react.dev/reference/react/useEffect#connecting-to-an-external-system
        7EffectsSpecify dependencies correctlyInclude all values used inside effect in deps arrayAll referenced values in dependency arrayEmpty deps with external references[value] when using value in effect[] when using props/state in effectHighhttps://react.dev/reference/react/useEffect#specifying-reactive-dependencies
        8EffectsAvoid unnecessary effectsDon't use effects for transforming data or eventsTransform data during render handle events directlyuseEffect for derived state or event handlingconst filtered = items.filter(...)useEffect(() => setFiltered(items.filter(...)))Highhttps://react.dev/learn/you-might-not-need-an-effect
        9EffectsUse refs for non-reactive valuesStore values that don't trigger re-renders in refsuseRef for interval IDs DOM elementsuseState for values that don't need renderconst intervalRef = useRef(null)const [intervalId, setIntervalId] = useState()Mediumhttps://react.dev/reference/react/useRef
        10RenderingUse keys properlyStable unique keys for list itemsUse stable IDs as keysArray index as key for dynamic listskey={item.id}key={index}Highhttps://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key
        11RenderingMemoize expensive calculationsUse useMemo for costly computationsuseMemo for expensive filtering/sortingRecalculate every renderuseMemo(() => expensive(), [deps])const result = expensiveCalc()Mediumhttps://react.dev/reference/react/useMemo
        12RenderingMemoize callbacks passed to childrenUse useCallback for functions passed as propsuseCallback for handlers passed to memoized childrenNew function reference every renderuseCallback(() => {}, [deps])const handler = () => {}Mediumhttps://react.dev/reference/react/useCallback
        13RenderingUse React.memo wiselyWrap components that render often with same propsmemo for pure components with stable propsmemo everything or nothingmemo(ExpensiveList)memo(SimpleButton)Lowhttps://react.dev/reference/react/memo
        14RenderingAvoid inline object/array creation in JSXCreate objects outside render or memoizeDefine style objects outside componentInline objects in props<div style={styles.container}><div style={{ margin: 10 }}>Medium
        15ComponentsKeep components small and focusedSingle responsibility for each componentOne concern per componentLarge multi-purpose components<UserAvatar /><UserName /><UserCard /> with 500 linesMedium
        16ComponentsUse composition over inheritanceCompose components using children and propsUse children prop for flexibilityInheritance hierarchies<Card>{content}</Card>class SpecialCard extends CardMediumhttps://react.dev/learn/thinking-in-react
        17ComponentsColocate related codeKeep related components and hooks togetherRelated files in same directoryFlat structure with many filescomponents/User/UserCard.tsxcomponents/UserCard.tsx + hooks/useUser.tsLow
        18ComponentsUse fragments to avoid extra DOMFragment or <> for multiple elements without wrapper<> for grouping without DOM nodeExtra div wrappers<>{items.map(...)}</><div>{items.map(...)}</div>Lowhttps://react.dev/reference/react/Fragment
        19PropsDestructure propsDestructure props for cleaner component codeDestructure in function signatureprops.name props.value throughoutfunction User({ name, age })function User(props)Low
        20PropsProvide default props valuesUse default parameters or defaultPropsDefault values in destructuringUndefined checks throughoutfunction Button({ size = 'md' })if (size === undefined) size = 'md'Low
        21PropsAvoid prop drillingUse context or composition for deeply nested dataContext for global data composition for UIPassing props through 5+ levels<UserContext.Provider><A user={u}><B user={u}><C user={u}>Mediumhttps://react.dev/learn/passing-data-deeply-with-context
        22PropsValidate props with TypeScriptUse TypeScript interfaces for prop typesinterface Props { name: string }PropTypes or no validationinterface ButtonProps { onClick: () => void }Button.propTypes = {}Medium
        23EventsUse synthetic events correctlyReact normalizes events across browserse.preventDefault() e.stopPropagation()Access native event unnecessarilyonClick={(e) => e.preventDefault()}onClick={(e) => e.nativeEvent.preventDefault()}Lowhttps://react.dev/reference/react-dom/components/common#react-event-object
        24EventsAvoid binding in renderUse arrow functions in class or hooksArrow functions in functional componentsbind in render or constructorconst handleClick = () => {}this.handleClick.bind(this)Medium
        25EventsPass event handlers not call resultsPass function reference not invocationonClick={handleClick}onClick={handleClick()} causing immediate callonClick={handleClick}onClick={handleClick()}High
        26FormsControlled components for formsUse state to control form inputsvalue + onChange for inputsUncontrolled inputs with refs<input value={val} onChange={setVal}><input ref={inputRef}>Mediumhttps://react.dev/reference/react-dom/components/input#controlling-an-input-with-a-state-variable
        27FormsHandle form submission properlyPrevent default and handle in submit handleronSubmit with preventDefaultonClick on submit button only<form onSubmit={handleSubmit}><button onClick={handleSubmit}>Medium

        Preview truncated.

      • shadcn.csv15.5 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1SetupUse CLI for installationInstall components via shadcn CLI for proper setupnpx shadcn@latest add component-nameManual copy-paste from docsnpx shadcn@latest add buttonCopy component code manuallyHighhttps://ui.shadcn.com/docs/cli
        2SetupInitialize project properlyRun init command to set up components.json and globals.cssnpx shadcn@latest init before adding componentsSkip init and add components directlynpx shadcn@latest initnpx shadcn@latest add button (without init)Highhttps://ui.shadcn.com/docs/installation
        3SetupConfigure path aliasesSet up proper import aliases in tsconfig and components.jsonUse @/components/ui path aliasesRelative imports like ../../componentsimport { Button } from @/components/ui/buttonimport { Button } from ../../components/ui/buttonMediumhttps://ui.shadcn.com/docs/installation
        4ThemingUse CSS variables for colorsDefine colors as CSS variables in globals.css for themingCSS variables in :root and .darkHardcoded color values in componentsbg-primary text-primary-foregroundbg-blue-500 text-whiteHighhttps://ui.shadcn.com/docs/theming
        5ThemingFollow naming conventionUse semantic color names with foreground patternprimary/primary-foreground secondary/secondary-foregroundGeneric color names--primary --primary-foreground--blue --light-blueMediumhttps://ui.shadcn.com/docs/theming
        6ThemingSupport dark modeInclude .dark class styles for all custom CSSDefine both :root and .dark color schemesOnly light mode colors.dark { --background: 240 10% 3.9%; }No .dark class stylesHighhttps://ui.shadcn.com/docs/dark-mode
        7ComponentsUse component variantsLeverage cva variants for consistent stylingUse variant prop for different stylesInline conditional classes<Button variant=destructive><Button className={isError ? bg-red-500 : bg-blue-500}>Mediumhttps://ui.shadcn.com/docs/components/button
        8ComponentsCompose with classNameAdd custom classes via className prop for overridesExtend with className for one-off customizationsModify component source directly<Button className=w-full>Edit button.tsx to add w-fullMediumhttps://ui.shadcn.com/docs/components/button
        9ComponentsUse size variants consistentlyApply size prop for consistent sizing across componentssize=sm size=lg for sizingMix size classes inconsistently<Button size=lg><Button className=text-lg px-8 py-4>Mediumhttps://ui.shadcn.com/docs/components/button
        10ComponentsPrefer compound componentsUse provided sub-components for complex UICard + CardHeader + CardContent patternSingle component with many props<Card><CardHeader><CardTitle><Card title=x content=y footer=z>Mediumhttps://ui.shadcn.com/docs/components/card
        11DialogUse Dialog for modal contentDialog component for overlay modal windowsDialog for confirmations forms detailsAlert for modal content<Dialog><DialogContent><Alert> styled as modalHighhttps://ui.shadcn.com/docs/components/dialog
        12DialogHandle dialog state properlyUse open and onOpenChange for controlled dialogsControlled state with useStateUncontrolled with default open only<Dialog open={open} onOpenChange={setOpen}><Dialog defaultOpen={true}>Mediumhttps://ui.shadcn.com/docs/components/dialog
        13DialogInclude proper dialog structureUse DialogHeader DialogTitle DialogDescriptionComplete semantic structureMissing title or description<DialogHeader><DialogTitle><DialogDescription><DialogContent><p>Content</p></DialogContent>Highhttps://ui.shadcn.com/docs/components/dialog
        14SheetUse Sheet for side panelsSheet component for slide-out panels and drawersSheet for navigation filters settingsDialog for side content<Sheet side=right><Dialog> with slide animationMediumhttps://ui.shadcn.com/docs/components/sheet
        15SheetSpecify sheet sideSet side prop for sheet slide directionExplicit side=left or side=rightDefault side without consideration<Sheet><SheetContent side=left><Sheet><SheetContent>Lowhttps://ui.shadcn.com/docs/components/sheet
        16FormUse Form with react-hook-formIntegrate Form component with react-hook-form for validationuseForm + Form + FormField patternCustom form handling without Form<Form {...form}><FormField control={form.control}><form onSubmit={handleSubmit}>Highhttps://ui.shadcn.com/docs/components/form
        17FormUse FormField for inputsWrap inputs in FormField for proper labeling and errorsFormField + FormItem + FormLabel + FormControlInput without FormField wrapper<FormField><FormItem><FormLabel><FormControl><Input><Input onChange={...}>Highhttps://ui.shadcn.com/docs/components/form
        18FormDisplay form messagesUse FormMessage for validation error displayFormMessage after FormControlCustom error text without FormMessage<FormControl><Input/></FormControl><FormMessage/><Input/>{error && <span>{error}</span>}Mediumhttps://ui.shadcn.com/docs/components/form
        19FormUse Zod for validationDefine form schema with Zod for type-safe validationzodResolver with form schemaManual validation logiczodResolver(formSchema)validate: (values) => { if (!values.email) }Mediumhttps://ui.shadcn.com/docs/components/form
        20SelectUse Select for dropdownsSelect component for option selectionSelect for choosing from listNative select element<Select><SelectTrigger><SelectContent><select><option>Mediumhttps://ui.shadcn.com/docs/components/select
        21SelectStructure Select properlyInclude Trigger Value Content and ItemsComplete Select structureMissing SelectValue or SelectContent<SelectTrigger><SelectValue/></SelectTrigger><SelectContent><SelectItem><Select><option>Highhttps://ui.shadcn.com/docs/components/select
        22CommandUse Command for searchCommand component for searchable lists and palettesCommand for command palette searchInput with custom dropdown<Command><CommandInput><CommandList><Input><div className=dropdown>Mediumhttps://ui.shadcn.com/docs/components/command
        23CommandGroup command itemsUse CommandGroup for categorized itemsCommandGroup with heading for sectionsFlat list without grouping<CommandGroup heading=Suggestions><CommandItem><CommandItem> without groupsLowhttps://ui.shadcn.com/docs/components/command
        24TableUse Table for data displayTable component for structured dataTable for tabular data displayDiv grid for table-like layouts<Table><TableHeader><TableBody><TableRow><div className=grid>Mediumhttps://ui.shadcn.com/docs/components/table
        25TableInclude proper table structureUse TableHeader TableBody TableRow TableCellSemantic table structureMissing thead or tbody<TableHeader><TableRow><TableHead><Table><TableRow> without headerHighhttps://ui.shadcn.com/docs/components/table
        26DataTableUse DataTable for complex tablesCombine Table with TanStack Table for featuresDataTable pattern for sorting filtering paginationCustom table implementationuseReactTable + Table componentsCustom sort filter pagination logicMediumhttps://ui.shadcn.com/docs/components/data-table
        27TabsUse Tabs for content switchingTabs component for tabbed interfacesTabs for related content sectionsCustom tab implementation<Tabs><TabsList><TabsTrigger><TabsContent><div onClick={() => setTab(...)}Mediumhttps://ui.shadcn.com/docs/components/tabs

        Preview truncated.

      • svelte.csv10.8 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1ReactivityUse $: for reactive statementsAutomatic dependency tracking$: for derived valuesManual recalculation$: doubled = count * 2let doubled; count && (doubled = count * 2)Mediumhttps://svelte.dev/docs/svelte-components#script-3-$-marks-a-statement-as-reactive
        2ReactivityTrigger reactivity with assignmentSvelte tracks assignments not mutationsReassign arrays/objects to trigger updateMutate without reassignmentitems = [...items, newItem]items.push(newItem)Highhttps://svelte.dev/docs/svelte-components#script-2-assignments-are-reactive
        3ReactivityUse $state in Svelte 5Runes for explicit reactivitylet count = $state(0)Implicit reactivity in Svelte 5let count = $state(0)let count = 0 (Svelte 5)Mediumhttps://svelte.dev/blog/runes
        4ReactivityUse $derived for computed values$derived replaces $: in Svelte 5let doubled = $derived(count * 2)$: in Svelte 5let doubled = $derived(count * 2)$: doubled = count * 2 (Svelte 5)Medium
        5ReactivityUse $effect for side effects$effect replaces $: side effectsUse $effect for subscriptions$: for side effects in Svelte 5$effect(() => console.log(count))$: console.log(count) (Svelte 5)Medium
        6PropsExport let for propsDeclare props with export letexport let propNameProps without exportexport let count = 0let count = 0Highhttps://svelte.dev/docs/svelte-components#script-1-export-creates-a-component-prop
        7PropsUse $props in Svelte 5$props rune for prop accesslet { name } = $props()export let in Svelte 5let { name, age = 0 } = $props()export let name; export let age = 0Medium
        8PropsProvide default valuesDefault props with assignmentexport let count = 0Required props without defaultsexport let count = 0export let countLow
        9PropsUse spread propsPass through unknown props{...$$restProps} on elementsManual prop forwarding<button {...$$restProps}><button class={$$props.class}>Lowhttps://svelte.dev/docs/basic-markup#attributes-and-props
        10BindingsUse bind: for two-way bindingSimplified input handlingbind:value for inputson:input with manual update<input bind:value={name}><input value={name} on:input={e => name = e.target.value}>Lowhttps://svelte.dev/docs/element-directives#bind-property
        11BindingsBind to DOM elementsReference DOM nodesbind:this for element referencequerySelector in onMount<div bind:this={el}>onMount(() => el = document.querySelector())Medium
        12BindingsUse bind:group for radios/checkboxesSimplified group handlingbind:group for radio/checkbox groupsManual checked handling<input type="radio" bind:group={selected}><input type="radio" checked={selected === value}>Low
        13EventsUse on: for event handlersEvent directive syntaxon:click={handler}addEventListener in onMount<button on:click={handleClick}>onMount(() => btn.addEventListener())Mediumhttps://svelte.dev/docs/element-directives#on-eventname
        14EventsForward events with on:eventPass events to parenton:click without handlercreateEventDispatcher for DOM events<button on:click>dispatch('click', event)Low
        15EventsUse createEventDispatcherCustom component eventsdispatch for custom eventson:event for custom eventsdispatch('save', { data })on:save without dispatchMediumhttps://svelte.dev/docs/svelte#createeventdispatcher
        16LifecycleUse onMount for initializationRun code after component mountsonMount for setup and data fetchingCode in script body for side effectsonMount(() => fetchData())fetchData() in script bodyHighhttps://svelte.dev/docs/svelte#onmount
        17LifecycleReturn cleanup from onMountAutomatic cleanup on destroyReturn function from onMountSeparate onDestroy for paired cleanuponMount(() => { sub(); return unsub })onMount(sub); onDestroy(unsub)Medium
        18LifecycleUse onDestroy sparinglyOnly when onMount cleanup not possibleonDestroy for non-mount cleanuponDestroy for mount-related cleanuponDestroy for store unsubscribeonDestroy(() => clearInterval(id))Low
        19LifecycleAvoid beforeUpdate/afterUpdateUsually not neededReactive statements insteadbeforeUpdate for derived state$: if (x) doSomething()beforeUpdate(() => doSomething())Low
        20StoresUse writable for mutable stateBasic reactive storewritable for shared mutable stateLocal variables for shared stateconst count = writable(0)let count = 0 in moduleMediumhttps://svelte.dev/docs/svelte-store#writable
        21StoresUse readable for read-only stateExternal data sourcesreadable for derived/external datawritable for read-only datareadable(0, set => interval(set))writable(0) for timerLowhttps://svelte.dev/docs/svelte-store#readable
        22StoresUse derived for computed storesCombine or transform storesderived for computed valuesManual subscription for derivedderived(count, $c => $c * 2)count.subscribe(c => doubled = c * 2)Mediumhttps://svelte.dev/docs/svelte-store#derived
        23StoresUse $ prefix for auto-subscriptionAutomatic subscribe/unsubscribe$storeName in componentsManual subscription{$count}count.subscribe(c => value = c)High
        24StoresClean up custom subscriptionsUnsubscribe when component destroysReturn unsubscribe from onMountLeave subscriptions openonMount(() => store.subscribe(fn))store.subscribe(fn) in scriptHigh
        25SlotsUse slots for compositionContent projection<slot> for flexible contentProps for all content<slot>Default</slot><Component content="text"/>Mediumhttps://svelte.dev/docs/special-elements#slot
        26SlotsName slots for multiple areasMultiple content areas<slot name="header">Single slot for complex layouts<slot name="header"><slot name="footer"><slot> with complex conditionalsLow
        27SlotsCheck slot content with $$slotsConditional slot rendering$$slots.name for conditional renderingAlways render slot wrapper{#if $$slots.footer}<slot name="footer"/>{/if}<div><slot name="footer"/></div>Low

        Preview truncated.

      • swiftui.csv10.6 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1ViewsUse struct for viewsSwiftUI views are value typesstruct MyView: Viewclass MyView: Viewstruct ContentView: View { var body: some View }class ContentView: ViewHighhttps://developer.apple.com/documentation/swiftui/view
        2ViewsKeep views small and focusedSingle responsibility for each viewExtract subviews for complex layoutsLarge monolithic viewsExtract HeaderView FooterView500+ line View structMedium
        3ViewsUse body computed propertybody returns the view hierarchyvar body: some View { }func body() -> some Viewvar body: some View { Text("Hello") }func body() -> TextHigh
        4ViewsPrefer composition over inheritanceCompose views using ViewBuilderCombine smaller viewsInheritance hierarchiesVStack { Header() Content() }class SpecialView extends BaseViewMedium
        5StateUse @State for local stateSimple value types owned by view@State for view-local primitives@State for shared data@State private var count = 0@State var sharedData: ModelHighhttps://developer.apple.com/documentation/swiftui/state
        6StateUse @Binding for two-way dataPass mutable state to child views@Binding for child input@State in child for parent data@Binding var isOn: Bool$isOn to pass bindingMediumhttps://developer.apple.com/documentation/swiftui/binding
        7StateUse @StateObject for reference typesObservableObject owned by view@StateObject for view-created objects@ObservedObject for owned objects@StateObject private var vm = ViewModel()@ObservedObject var vm = ViewModel()Highhttps://developer.apple.com/documentation/swiftui/stateobject
        8StateUse @ObservedObject for injected objectsReference types passed from parent@ObservedObject for injected dependencies@StateObject for injected objects@ObservedObject var vm: ViewModel@StateObject var vm: ViewModel (injected)Highhttps://developer.apple.com/documentation/swiftui/observedobject
        9StateUse @EnvironmentObject for shared stateApp-wide state injection@EnvironmentObject for global stateProp drilling through views@EnvironmentObject var settings: SettingsPass settings through 5 viewsMediumhttps://developer.apple.com/documentation/swiftui/environmentobject
        10StateUse @Published in ObservableObjectAutomatically publish property changes@Published for observed propertiesManual objectWillChange calls@Published var items: [Item] = []var items: [Item] { didSet { objectWillChange.send() } }Medium
        11ObservableUse @Observable macro (iOS 17+)Modern observation without Combine@Observable class for view modelsObservableObject for new projects@Observable class ViewModel { }class ViewModel: ObservableObjectMediumhttps://developer.apple.com/documentation/observation
        12ObservableUse @Bindable for @ObservableCreate bindings from @Observable@Bindable var vm for bindings@Binding with @Observable@Bindable var viewModel$viewModel.name with @ObservableMedium
        13LayoutUse VStack HStack ZStackStandard stack-based layoutsStacks for linear arrangementsGeometryReader for simple layoutsVStack { Text() Image() }GeometryReader for vertical listMediumhttps://developer.apple.com/documentation/swiftui/vstack
        14LayoutUse LazyVStack LazyHStack for listsLazy loading for performanceLazy stacks for long listsRegular stacks for 100+ itemsLazyVStack { ForEach(items) }VStack { ForEach(largeArray) }Highhttps://developer.apple.com/documentation/swiftui/lazyvstack
        15LayoutUse GeometryReader sparinglyOnly when needed for sizingGeometryReader for responsive layoutsGeometryReader everywhereGeometryReader for aspect ratioGeometryReader wrapping everythingMedium
        16LayoutUse spacing and padding consistentlyConsistent spacing throughout appDesign system spacing valuesMagic numbers for spacing.padding(16) or .padding().padding(13), .padding(17)Low
        17LayoutUse frame modifiers correctlySet explicit sizes when needed.frame(maxWidth: .infinity)Fixed sizes for responsive content.frame(maxWidth: .infinity).frame(width: 375)Medium
        18ModifiersOrder modifiers correctlyModifier order affects renderingBackground before padding for full coverageWrong modifier order.padding().background(Color.red).background(Color.red).padding()High
        19ModifiersCreate custom ViewModifiersReusable modifier combinationsViewModifier for repeated stylingDuplicate modifier chainsstruct CardStyle: ViewModifier.shadow().cornerRadius() everywhereMediumhttps://developer.apple.com/documentation/swiftui/viewmodifier
        20ModifiersUse conditional modifiers carefullyAvoid changing view identityif-else with same view typeConditional that changes view identityText(title).foregroundColor(isActive ? .blue : .gray)if isActive { Text().bold() } else { Text() }Medium
        21NavigationUse NavigationStack (iOS 16+)Modern navigation with type-safe pathsNavigationStack with navigationDestinationNavigationView for new projectsNavigationStack { }NavigationView { } (deprecated)Mediumhttps://developer.apple.com/documentation/swiftui/navigationstack
        22NavigationUse navigationDestinationType-safe navigation destinations.navigationDestination(for:)NavigationLink(destination:).navigationDestination(for: Item.self)NavigationLink(destination: DetailView())Medium
        23NavigationUse @Environment for dismissProgrammatic navigation dismissal@Environment(\.dismiss) var dismisspresentationMode (deprecated)@Environment(\.dismiss) var dismiss@Environment(\.presentationMode)Low
        24ListsUse List for scrollable contentBuilt-in scrolling and stylingList for standard scrollable contentScrollView + VStack for simple listsList { ForEach(items) { } }ScrollView { VStack { ForEach } }Lowhttps://developer.apple.com/documentation/swiftui/list
        25ListsProvide stable identifiersUse Identifiable or explicit idIdentifiable protocol or id parameterIndex as identifierForEach(items) where Item: IdentifiableForEach(items.indices, id: \.self)High
        26ListsUse onDelete and onMoveStandard list editingonDelete for swipe to deleteCustom delete implementation.onDelete(perform: delete).onTapGesture for deleteLow
        27FormsUse Form for settingsGrouped input controlsForm for settings screensManual grouping for formsForm { Section { Toggle() } }VStack { Toggle() }Lowhttps://developer.apple.com/documentation/swiftui/form

        Preview truncated.

      • vue.csv10.8 KB
        NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
        1CompositionUse Composition API for new projectsComposition API offers better TypeScript support and logic reuse<script setup> for componentsOptions API for new projects<script setup>export default { data() }Mediumhttps://vuejs.org/guide/extras/composition-api-faq.html
        2CompositionUse script setup syntaxCleaner syntax with automatic exports<script setup> with definePropssetup() function manually<script setup><script> setup() { return {} }Lowhttps://vuejs.org/api/sfc-script-setup.html
        3ReactivityUse ref for primitivesref() for primitive values that need reactivityref() for strings numbers booleansreactive() for primitivesconst count = ref(0)const count = reactive(0)Mediumhttps://vuejs.org/guide/essentials/reactivity-fundamentals.html
        4ReactivityUse reactive for objectsreactive() for complex objects and arraysreactive() for objects with multiple propertiesref() for complex objectsconst state = reactive({ user: null })const state = ref({ user: null })Medium
        5ReactivityAccess ref values with .valueRemember .value in script unwrap in templateUse .value in scriptForget .value in scriptcount.value++count++ (in script)High
        6ReactivityUse computed for derived stateComputed properties cache and update automaticallycomputed() for derived valuesMethods for derived valuesconst doubled = computed(() => count.value * 2)const doubled = () => count.value * 2Mediumhttps://vuejs.org/guide/essentials/computed.html
        7ReactivityUse shallowRef for large objectsAvoid deep reactivity for performanceshallowRef for large data structuresref for large nested objectsconst bigData = shallowRef(largeObject)const bigData = ref(largeObject)Mediumhttps://vuejs.org/api/reactivity-advanced.html#shallowref
        8WatchersUse watchEffect for simple casesAuto-tracks dependencieswatchEffect for simple reactive effectswatch with explicit deps when not neededwatchEffect(() => console.log(count.value))watch(count, (val) => console.log(val))Lowhttps://vuejs.org/guide/essentials/watchers.html
        9WatchersUse watch for specific sourcesExplicit control over what to watchwatch with specific refswatchEffect for complex conditional logicwatch(userId, fetchUser)watchEffect with conditionalsMedium
        10WatchersClean up side effectsReturn cleanup function in watchersReturn cleanup in watchEffectLeave subscriptions openwatchEffect((onCleanup) => { onCleanup(unsub) })watchEffect without cleanupHigh
        11PropsDefine props with definePropsType-safe prop definitionsdefineProps with TypeScriptProps without typesdefineProps<{ msg: string }>()defineProps(['msg'])Mediumhttps://vuejs.org/guide/typescript/composition-api.html#typing-component-props
        12PropsUse withDefaults for default valuesProvide defaults for optional propswithDefaults with definePropsDefaults in destructuringwithDefaults(defineProps<Props>(), { count: 0 })const { count = 0 } = defineProps()Medium
        13PropsAvoid mutating propsProps should be read-onlyEmit events to parent for changesDirect prop mutationemit('update:modelValue', newVal)props.modelValue = newValHigh
        14EmitsDefine emits with defineEmitsType-safe event emissionsdefineEmits with typesEmit without definitiondefineEmits<{ change: [id: number] }>()emit('change', id) without defineMediumhttps://vuejs.org/guide/typescript/composition-api.html#typing-component-emits
        15EmitsUse v-model for two-way bindingSimplified parent-child data flowv-model with modelValue prop:value + @input manually<Child v-model="value"/><Child :value="value" @input="value = $event"/>Lowhttps://vuejs.org/guide/components/v-model.html
        16LifecycleUse onMounted for DOM accessDOM is ready in onMountedonMounted for DOM operationsAccess DOM in setup directlyonMounted(() => el.value.focus())el.value.focus() in setupHighhttps://vuejs.org/api/composition-api-lifecycle.html
        17LifecycleClean up in onUnmountedRemove listeners and subscriptionsonUnmounted for cleanupLeave listeners attachedonUnmounted(() => window.removeEventListener())No cleanup on unmountHigh
        18LifecycleAvoid onBeforeMount for dataUse onMounted or setup for data fetchingFetch in onMounted or setupFetch in onBeforeMountonMounted(async () => await fetchData())onBeforeMount(async () => await fetchData())Low
        19ComponentsUse single-file componentsKeep template script style together.vue files for componentsSeparate template/script filesComponent.vue with all partsComponent.js + Component.htmlLow
        20ComponentsUse PascalCase for componentsConsistent component namingPascalCase in imports and templateskebab-case in script<MyComponent/><my-component/>Lowhttps://vuejs.org/style-guide/rules-strongly-recommended.html
        21ComponentsPrefer composition over mixinsComposables replace mixinsComposables for shared logicMixins for code reuseconst { data } = useApi()mixins: [apiMixin]Medium
        22ComposablesName composables with use prefixConvention for composable functionsuseFetch useAuth useFormgetData or fetchApiexport function useFetch()export function fetchData()Mediumhttps://vuejs.org/guide/reusability/composables.html
        23ComposablesReturn refs from composablesMaintain reactivity when destructuringReturn ref valuesReturn reactive objects that lose reactivityreturn { data: ref(null) }return reactive({ data: null })Medium
        24ComposablesAccept ref or value paramsUse toValue for flexible inputstoValue() or unref() for paramsOnly accept ref or only valueconst val = toValue(maybeRef)const val = maybeRef.valueLowhttps://vuejs.org/api/reactivity-utilities.html#tovalue
        25TemplatesUse v-bind shorthandCleaner template syntax:prop instead of v-bind:propFull v-bind syntax<div :class="cls"><div v-bind:class="cls">Low
        26TemplatesUse v-on shorthandCleaner event binding@event instead of v-on:eventFull v-on syntax<button @click="handler"><button v-on:click="handler">Low
        27TemplatesAvoid v-if with v-forv-if has higher priority causes issuesWrap in template or computed filterv-if on same element as v-for<template v-for><div v-if><div v-for v-if>Highhttps://vuejs.org/style-guide/rules-essential.html#avoid-v-if-with-v-for

        Preview truncated.

    • charts.csv7.47 KB
      NoData TypeKeywordsBest Chart TypeSecondary OptionsColor GuidancePerformance ImpactAccessibility NotesLibrary RecommendationInteractive Level
      1Trend Over Timetrend, time-series, line, growth, timeline, progressLine ChartArea Chart, Smooth AreaPrimary: #0080FF. Multiple series: use distinct colors. Fill: 20% opacity⚡ Excellent (optimized)✓ Clear line patterns for colorblind users. Add pattern overlays.Chart.js, Recharts, ApexChartsHover + Zoom
      2Compare Categoriescompare, categories, bar, comparison, rankingBar Chart (Horizontal or Vertical)Column Chart, Grouped BarEach bar: distinct color. Category: grouped same color. Sorted: descending order⚡ Excellent✓ Easy to compare. Add value labels on bars for clarity.Chart.js, Recharts, D3.jsHover + Sort
      3Part-to-Wholepart-to-whole, pie, donut, percentage, proportion, sharePie Chart or DonutStacked Bar, TreemapColors: 5-6 max. Contrasting palette. Large slices first. Use labels.⚡ Good (limit 6 slices)⚠ Hard for accessibility. Better: Stacked bar with legend. Avoid pie if >5 items.Chart.js, Recharts, D3.jsHover + Drill
      4Correlation/Distributioncorrelation, distribution, scatter, relationship, patternScatter Plot or Bubble ChartHeat Map, MatrixColor axis: gradient (blue-red). Size: relative. Opacity: 0.6-0.8 to show density⚠ Moderate (many points)⚠ Provide data table alternative. Use pattern + color distinction.D3.js, Plotly, RechartsHover + Brush
      5Heatmap/Intensityheatmap, heat-map, intensity, density, matrixHeat Map or ChoroplethGrid Heat Map, Bubble HeatGradient: Cool (blue) to Hot (red). Scale: clear legend. Divergent for ±data⚡ Excellent (color CSS)⚠ Colorblind: Use pattern overlay. Provide numerical legend.D3.js, Plotly, ApexChartsHover + Zoom
      6Geographic Datageographic, map, location, region, geo, spatialChoropleth Map, Bubble MapGeographic Heat MapRegional: single color gradient or categorized colors. Legend: clear scale⚠ Moderate (rendering)⚠ Include text labels for regions. Provide data table alternative.D3.js, Mapbox, LeafletPan + Zoom + Drill
      7Funnel/Flowfunnel/flowFunnel Chart, SankeyWaterfall (for flows)Stages: gradient (starting color → ending color). Show conversion %⚡ Good✓ Clear stage labels + percentages. Good for accessibility if labeled.D3.js, Recharts, Custom SVGHover + Drill
      8Performance vs Targetperformance-vs-targetGauge Chart or Bullet ChartDial, ThermometerPerformance: Red→Yellow→Green gradient. Target: marker line. Threshold colors⚡ Good✓ Add numerical value + percentage label beside gauge.D3.js, ApexCharts, Custom SVGHover
      9Time-Series Forecasttime-series-forecastLine with Confidence BandRibbon ChartActual: solid line #0080FF. Forecast: dashed #FF9500. Band: light shading⚡ Good✓ Clearly distinguish actual vs forecast. Add legend.Chart.js, ApexCharts, PlotlyHover + Toggle
      10Anomaly Detectionanomaly-detectionLine Chart with HighlightsScatter with AlertNormal: blue #0080FF. Anomaly: red #FF0000 circle/square marker + alert⚡ Good✓ Circle/marker for anomalies. Add text alert annotation.D3.js, Plotly, ApexChartsHover + Alert
      11Hierarchical/Nested Datahierarchical/nested-dataTreemapSunburst, Nested Donut, IcicleParent: distinct hues. Children: lighter shades. White borders 2-3px.⚠ Moderate⚠ Poor - provide table alternative. Label large areas.D3.js, Recharts, ApexChartsHover + Drilldown
      12Flow/Process Dataflow/process-dataSankey DiagramAlluvial, Chord DiagramGradient from source to target. Opacity 0.4-0.6 for flows.⚠ Moderate⚠ Poor - provide flow table alternative.D3.js (d3-sankey), PlotlyHover + Drilldown
      13Cumulative Changescumulative-changesWaterfall ChartStacked Bar, CascadeIncreases: #4CAF50. Decreases: #F44336. Start: #2196F3. End: #0D47A1.⚡ Good✓ Good - clear directional colors with labels.ApexCharts, Highcharts, PlotlyHover
      14Multi-Variable Comparisonmulti-variable-comparisonRadar/Spider ChartParallel Coordinates, Grouped BarSingle: #0080FF 20% fill. Multiple: distinct colors per dataset.⚡ Good⚠ Moderate - limit 5-8 axes. Add data table.Chart.js, Recharts, ApexChartsHover + Toggle
      15Stock/Trading OHLCstock/trading-ohlcCandlestick ChartOHLC Bar, Heikin-AshiBullish: #26A69A. Bearish: #EF5350. Volume: 40% opacity below.⚡ Good⚠ Moderate - provide OHLC data table.Lightweight Charts (TradingView), ApexChartsReal-time + Hover + Zoom
      16Relationship/Connection Datarelationship/connection-dataNetwork GraphHierarchical Tree, Adjacency MatrixNode types: categorical colors. Edges: #90A4AE 60% opacity.❌ Poor (500+ nodes struggles)❌ Very Poor - provide adjacency list alternative.D3.js (d3-force), Vis.js, Cytoscape.jsDrilldown + Hover + Drag
      17Distribution/Statisticaldistribution/statisticalBox PlotViolin Plot, BeeswarmBox: #BBDEFB. Border: #1976D2. Median: #D32F2F. Outliers: #F44336.⚡ Excellent✓ Good - include stats table (min, Q1, median, Q3, max).Plotly, D3.js, Chart.js (plugin)Hover
      18Performance vs Target (Compact)performance-vs-target-(compact)Bullet ChartGauge, Progress BarRanges: #FFCDD2, #FFF9C4, #C8E6C9. Performance: #1976D2. Target: black 3px.⚡ Excellent✓ Excellent - compact with clear values.D3.js, Plotly, Custom SVGHover
      19Proportional/Percentageproportional/percentageWaffle ChartPictogram, Stacked Bar 100%10x10 grid. 3-5 categories max. 2-3px spacing between squares.⚡ Good✓ Good - better than pie for accessibility.D3.js, React-Waffle, Custom CSS GridHover
      20Hierarchical Proportionalhierarchical-proportionalSunburst ChartTreemap, Icicle, Circle PackingCenter to outer: darker to lighter. 15-20% lighter per level.⚠ Moderate⚠ Poor - provide hierarchy table alternative.D3.js (d3-hierarchy), Recharts, ApexChartsDrilldown + Hover
      21Root Cause Analysisroot cause, decomposition, tree, hierarchy, drill-down, ai-splitDecomposition TreeDecision Tree, Flow ChartNodes: #2563EB (Primary) vs #EF4444 (Negative impact). Connectors: Neutral grey.⚠ Moderate (calculation heavy)✓ clear hierarchy. Allow keyboard navigation for nodes.Power BI (native), React-Flow, Custom D3.jsDrill + Expand
      223D Spatial Data3d, spatial, immersive, terrain, molecular, volumetric3D Scatter/Surface PlotVolumetric Rendering, Point CloudDepth cues: lighting/shading. Z-axis: color gradient (cool to warm).❌ Heavy (WebGL required)❌ Poor - requires alternative 2D view or data table.Three.js, Deck.gl, Plotly 3DRotate + Zoom + VR
      23Real-Time Streamingstreaming, real-time, ticker, live, velocity, pulseStreaming Area ChartTicker Tape, Moving GaugeCurrent: Bright Pulse (#00FF00). History: Fading opacity. Grid: Dark.⚡ Optimized (canvas/webgl)⚠ Flashing elements - provide pause button. High contrast.Smoothed D3.js CanvasJS
      24Sentiment/Emotionsentiment, emotion, nlp, opinion, feelingWord Cloud with SentimentSentiment Arc, Radar ChartPositive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Size = Frequency.⚡ Good⚠ Word clouds poor for screen readers. Use list view.D3-cloud, Highcharts, NivoHover + Filter
      25Process Miningprocess, mining, variants, path, bottleneck, logProcess Map / GraphDirected Acyclic Graph (DAG), Petri NetHappy path: #10B981 (Thick). Deviations: #F59E0B (Thin). Bottlenecks: #EF4444.⚠ Moderate to Heavy⚠ Complex graphs hard to navigate. Provide path summary.React-Flow, Cytoscape.js, RechartsDrag + Node-Click
    • colors.csv9.49 KB
      NoProduct TypePrimary (Hex)Secondary (Hex)CTA (Hex)Background (Hex)Text (Hex)Border (Hex)Notes
      1SaaS (General)#2563EB#3B82F6#F97316#F8FAFC#1E293B#E2E8F0Trust blue + orange CTA contrast
      2Micro SaaS#6366F1#818CF8#10B981#F5F3FF#1E1B4B#E0E7FFIndigo primary + emerald CTA
      3E-commerce#059669#10B981#F97316#ECFDF5#064E3B#A7F3D0Success green + urgency orange
      4E-commerce Luxury#1C1917#44403C#CA8A04#FAFAF9#0C0A09#D6D3D1Premium dark + gold accent
      5Service Landing Page#0EA5E9#38BDF8#F97316#F0F9FF#0C4A6E#BAE6FDSky blue trust + warm CTA
      6B2B Service#0F172A#334155#0369A1#F8FAFC#020617#E2E8F0Professional navy + blue CTA
      7Financial Dashboard#0F172A#1E293B#22C55E#020617#F8FAFC#334155Dark bg + green positive indicators
      8Analytics Dashboard#1E40AF#3B82F6#F59E0B#F8FAFC#1E3A8A#DBEAFEBlue data + amber highlights
      9Healthcare App#0891B2#22D3EE#059669#ECFEFF#164E63#A5F3FCCalm cyan + health green
      10Educational App#4F46E5#818CF8#F97316#EEF2FF#1E1B4B#C7D2FEPlayful indigo + energetic orange
      11Creative Agency#EC4899#F472B6#06B6D4#FDF2F8#831843#FBCFE8Bold pink + cyan accent
      12Portfolio/Personal#18181B#3F3F46#2563EB#FAFAFA#09090B#E4E4E7Monochrome + blue accent
      13Gaming#7C3AED#A78BFA#F43F5E#0F0F23#E2E8F0#4C1D95Neon purple + rose action
      14Government/Public Service#0F172A#334155#0369A1#F8FAFC#020617#E2E8F0High contrast navy + blue
      15Fintech/Crypto#F59E0B#FBBF24#8B5CF6#0F172A#F8FAFC#334155Gold trust + purple tech
      16Social Media App#E11D48#FB7185#2563EB#FFF1F2#881337#FECDD3Vibrant rose + engagement blue
      17Productivity Tool#0D9488#14B8A6#F97316#F0FDFA#134E4A#99F6E4Teal focus + action orange
      18Design System/Component Library#4F46E5#6366F1#F97316#EEF2FF#312E81#C7D2FEIndigo brand + doc hierarchy
      19AI/Chatbot Platform#7C3AED#A78BFA#06B6D4#FAF5FF#1E1B4B#DDD6FEAI purple + cyan interactions
      20NFT/Web3 Platform#8B5CF6#A78BFA#FBBF24#0F0F23#F8FAFC#4C1D95Purple tech + gold value
      21Creator Economy Platform#EC4899#F472B6#F97316#FDF2F8#831843#FBCFE8Creator pink + engagement orange
      22Sustainability/ESG Platform#059669#10B981#0891B2#ECFDF5#064E3B#A7F3D0Nature green + ocean blue
      23Remote Work/Collaboration Tool#6366F1#818CF8#10B981#F5F3FF#312E81#E0E7FFCalm indigo + success green
      24Mental Health App#8B5CF6#C4B5FD#10B981#FAF5FF#4C1D95#EDE9FECalming lavender + wellness green
      25Pet Tech App#F97316#FB923C#2563EB#FFF7ED#9A3412#FED7AAPlayful orange + trust blue
      26Smart Home/IoT Dashboard#1E293B#334155#22C55E#0F172A#F8FAFC#475569Dark tech + status green
      27EV/Charging Ecosystem#0891B2#22D3EE#22C55E#ECFEFF#164E63#A5F3FCElectric cyan + eco green

      Preview truncated.

    • icons.csv13.1 KB
      NoCategoryIcon NameKeywordsLibraryImport CodeUsageBest ForStyle
      1Navigationmenuhamburger menu navigation toggle barsLucideimport { Menu } from 'lucide-react'<Menu />Mobile navigation drawer toggle sidebarOutline
      2Navigationarrow-leftback previous return navigateLucideimport { ArrowLeft } from 'lucide-react'<ArrowLeft />Back button breadcrumb navigationOutline
      3Navigationarrow-rightnext forward continue navigateLucideimport { ArrowRight } from 'lucide-react'<ArrowRight />Forward button next step CTAOutline
      4Navigationchevron-downdropdown expand accordion selectLucideimport { ChevronDown } from 'lucide-react'<ChevronDown />Dropdown toggle accordion headerOutline
      5Navigationchevron-upcollapse close accordion minimizeLucideimport { ChevronUp } from 'lucide-react'<ChevronUp />Accordion collapse minimizeOutline
      6Navigationhomehomepage main dashboard startLucideimport { Home } from 'lucide-react'<Home />Home navigation main pageOutline
      7Navigationxclose cancel dismiss remove exitLucideimport { X } from 'lucide-react'<X />Modal close dismiss buttonOutline
      8Navigationexternal-linkopen new tab external linkLucideimport { ExternalLink } from 'lucide-react'<ExternalLink />External link indicatorOutline
      9Actionplusadd create new insertLucideimport { Plus } from 'lucide-react'<Plus />Add button create new itemOutline
      10Actionminusremove subtract decrease deleteLucideimport { Minus } from 'lucide-react'<Minus />Remove item quantity decreaseOutline
      11Actiontrash-2delete remove discard binLucideimport { Trash2 } from 'lucide-react'<Trash2 />Delete action destructiveOutline
      12Actioneditpencil modify change updateLucideimport { Edit } from 'lucide-react'<Edit />Edit button modify contentOutline
      13Actionsavedisk store persist saveLucideimport { Save } from 'lucide-react'<Save />Save button persist changesOutline
      14Actiondownloadexport save file downloadLucideimport { Download } from 'lucide-react'<Download />Download file exportOutline
      15Actionuploadimport file attach uploadLucideimport { Upload } from 'lucide-react'<Upload />Upload file importOutline
      16Actioncopyduplicate clipboard pasteLucideimport { Copy } from 'lucide-react'<Copy />Copy to clipboardOutline
      17Actionsharesocial distribute sendLucideimport { Share } from 'lucide-react'<Share />Share button socialOutline
      18Actionsearchfind lookup filter queryLucideimport { Search } from 'lucide-react'<Search />Search input barOutline
      19Actionfiltersort refine narrow optionsLucideimport { Filter } from 'lucide-react'<Filter />Filter dropdown sortOutline
      20Actionsettingsgear cog preferences configLucideimport { Settings } from 'lucide-react'<Settings />Settings page configurationOutline
      21Statuschecksuccess done complete verifiedLucideimport { Check } from 'lucide-react'<Check />Success state checkmarkOutline
      22Statuscheck-circlesuccess verified approved completeLucideimport { CheckCircle } from 'lucide-react'<CheckCircle />Success badge verifiedOutline
      23Statusx-circleerror failed cancel rejectedLucideimport { XCircle } from 'lucide-react'<XCircle />Error state failedOutline
      24Statusalert-trianglewarning caution attention dangerLucideimport { AlertTriangle } from 'lucide-react'<AlertTriangle />Warning message cautionOutline
      25Statusalert-circleinfo notice information helpLucideimport { AlertCircle } from 'lucide-react'<AlertCircle />Info notice alertOutline
      26Statusinfoinformation help tooltip detailsLucideimport { Info } from 'lucide-react'<Info />Information tooltip helpOutline
      27Statusloaderloading spinner processing waitLucideimport { Loader } from 'lucide-react'<Loader className=animate-spin />Loading state spinnerOutline

      Preview truncated.

    • landing.csv14.1 KB
      NoPattern NameKeywordsSection OrderPrimary CTA PlacementColor StrategyRecommended EffectsConversion Optimization
      1Hero + Features + CTAhero, hero-centric, features, feature-rich, cta, call-to-action1. Hero with headline/image, 2. Value prop, 3. Key features (3-5), 4. CTA section, 5. FooterHero (sticky) + BottomHero: Brand primary or vibrant. Features: Card bg #FAFAFA. CTA: Contrasting accent colorHero parallax, feature card hover lift, CTA glow on hoverDeep CTA placement. Use contrasting color (at least 7:1 contrast ratio). Sticky navbar CTA.
      2Hero + Testimonials + CTAhero, testimonials, social-proof, trust, reviews, cta1. Hero, 2. Problem statement, 3. Solution overview, 4. Testimonials carousel, 5. CTAHero (sticky) + Post-testimonialsHero: Brand color. Testimonials: Light bg #F5F5F5. Quotes: Italic, muted color #666. CTA: VibrantTestimonial carousel slide animations, quote marks animations, avatar fade-inSocial proof before CTA. Use 3-5 testimonials. Include photo + name + role. CTA after social proof.
      3Product Demo + Featuresdemo, product-demo, features, showcase, interactive1. Hero, 2. Product video/mockup (center), 3. Feature breakdown per section, 4. Comparison (optional), 5. CTAVideo center + CTA right/bottomVideo surround: Brand color overlay. Features: Icon color #0080FF. Text: Dark #222Video play button pulse, feature scroll reveals, demo interaction highlightsEmbedded product demo increases engagement. Use interactive mockup if possible. Auto-play video muted.
      4Minimal Single Columnminimal, simple, direct, single-column, clean1. Hero headline, 2. Short description, 3. Benefit bullets (3 max), 4. CTA, 5. FooterCenter, large CTA buttonMinimalist: Brand + white #FFFFFF + accent. Buttons: High contrast 7:1+. Text: Black/Dark greyMinimal hover effects. Smooth scroll. CTA scale on hover (subtle)Single CTA focus. Large typography. Lots of whitespace. No nav clutter. Mobile-first.
      5Funnel (3-Step Conversion)funnel, conversion, steps, wizard, onboarding1. Hero, 2. Step 1 (problem), 3. Step 2 (solution), 4. Step 3 (action), 5. CTA progressionEach step: mini-CTA. Final: main CTAStep colors: 1 (Red/Problem), 2 (Orange/Process), 3 (Green/Solution). CTA: Brand colorStep number animations, progress bar fill, step transitions smooth scrollProgressive disclosure. Show only essential info per step. Use progress indicators. Multiple CTAs.
      6Comparison Table + CTAcomparison, table, compare, versus, cta1. Hero, 2. Problem intro, 3. Comparison table (product vs competitors), 4. Pricing (optional), 5. CTATable: Right column. CTA: Below tableTable: Alternating rows (white/light grey). Your product: Highlight #FFFACD (light yellow) or green. Text: DarkTable row hover highlight, price toggle animations, feature checkmark animationsUse comparison to show unique value. Highlight your product row. Include 'free trial' in pricing row.
      7Lead Magnet + Formlead, form, signup, capture, email, magnet1. Hero (benefit headline), 2. Lead magnet preview (ebook cover, checklist, etc), 3. Form (minimal fields), 4. CTA submitForm CTA: Submit buttonLead magnet: Professional design. Form: Clean white bg. Inputs: Light border #CCCCCC. CTA: Brand colorForm focus state animations, input validation animations, success confirmation animationForm fields ≤ 3 for best conversion. Offer valuable lead magnet preview. Show form submission progress.
      8Pricing Page + CTApricing, plans, tiers, comparison, cta1. Hero (pricing headline), 2. Price comparison cards, 3. Feature comparison table, 4. FAQ section, 5. Final CTAEach card: CTA button. Sticky CTA in navFree: Grey, Starter: Blue, Pro: Green/Gold, Enterprise: Dark. Cards: 1px border, shadowPrice toggle animation (monthly/yearly), card comparison highlight, FAQ accordion open/closeRecommend starter plan (pre-select/highlight). Show annual discount (20-30%). Use FAQs to address concerns.
      9Video-First Herovideo, hero, media, visual, engaging1. Hero with video background, 2. Key features overlay, 3. Benefits section, 4. CTAOverlay on video (center/bottom) + Bottom sectionDark overlay 60% on video. Brand accent for CTA. White text on dark.Video autoplay muted, parallax scroll, text fade-in on scroll86% higher engagement with video. Add captions for accessibility. Compress video for performance.
      10Scroll-Triggered Storytellingstorytelling, scroll, narrative, story, immersive1. Intro hook, 2. Chapter 1 (problem), 3. Chapter 2 (journey), 4. Chapter 3 (solution), 5. Climax CTAEnd of each chapter (mini) + Final climax CTAProgressive reveal. Each chapter has distinct color. Building intensity.ScrollTrigger animations, parallax layers, progressive disclosure, chapter transitionsNarrative increases time-on-page 3x. Use progress indicator. Mobile: simplify animations.
      11AI Personalization Landingai, personalization, smart, recommendation, dynamic1. Dynamic hero (personalized), 2. Relevant features, 3. Tailored testimonials, 4. Smart CTAContext-aware placement based on user segmentAdaptive based on user data. A/B test color variations per segment.Dynamic content swap, fade transitions, personalized product recommendations20%+ conversion with personalization. Requires analytics integration. Fallback for new users.
      12Waitlist/Coming Soonwaitlist, coming-soon, launch, early-access, notify1. Hero with countdown, 2. Product teaser/preview, 3. Email capture form, 4. Social proof (waitlist count)Email form prominent (above fold) + Sticky form on scrollAnticipation: Dark + accent highlights. Countdown in brand color. Urgency indicators.Countdown timer animation, email validation feedback, success confetti, social share buttonsScarcity + exclusivity. Show waitlist count. Early access benefits. Referral program.
      13Comparison Table Focuscomparison, table, versus, compare, features1. Hero (problem statement), 2. Comparison matrix (you vs competitors), 3. Feature deep-dive, 4. Winner CTAAfter comparison table (highlighted row) + BottomYour product column highlighted (accent bg or green). Competitors neutral. Checkmarks green.Table row hover highlight, feature checkmark animations, sticky comparison headerShow value vs competitors. 35% higher conversion. Be factual. Include pricing if favorable.
      14Pricing-Focused Landingpricing, price, cost, plans, subscription1. Hero (value proposition), 2. Pricing cards (3 tiers), 3. Feature comparison, 4. FAQ, 5. Final CTAEach pricing card + Sticky CTA in nav + BottomPopular plan highlighted (brand color border/bg). Free: grey. Enterprise: dark/premium.Price toggle monthly/annual animation, card hover lift, FAQ accordion smooth openAnnual discount 20-30%. Recommend mid-tier (most popular badge). Address objections in FAQ.
      15App Store Style Landingapp, mobile, download, store, install1. Hero with device mockup, 2. Screenshots carousel, 3. Features with icons, 4. Reviews/ratings, 5. Download CTAsDownload buttons prominent (App Store + Play Store) throughoutDark/light matching app store feel. Star ratings in gold. Screenshots with device frames.Device mockup rotations, screenshot slider, star rating animations, download button pulseShow real screenshots. Include ratings (4.5+ stars). QR code for mobile. Platform-specific CTAs.
      16FAQ/Documentation Landingfaq, documentation, help, support, questions1. Hero with search bar, 2. Popular categories, 3. FAQ accordion, 4. Contact/support CTASearch bar prominent + Contact CTA for unresolved questionsClean, high readability. Minimal color. Category icons in brand color. Success green for resolved.Search autocomplete, smooth accordion open/close, category hover, helpful feedback buttonsReduce support tickets. Track search analytics. Show related articles. Contact escalation path.
      17Immersive/Interactive Experienceimmersive, interactive, experience, 3d, animation1. Full-screen interactive element, 2. Guided product tour, 3. Key benefits revealed, 4. CTA after completionAfter interaction complete + Skip option for impatient usersImmersive experience colors. Dark background for focus. Highlight interactive elements.WebGL, 3D interactions, gamification elements, progress indicators, reward animations40% higher engagement. Performance trade-off. Provide skip option. Mobile fallback essential.
      18Event/Conference Landingevent, conference, meetup, registration, schedule1. Hero (date/location/countdown), 2. Speakers grid, 3. Agenda/schedule, 4. Sponsors, 5. Register CTARegister CTA sticky + After speakers + BottomUrgency colors (countdown). Event branding. Speaker cards professional. Sponsor logos neutral.Countdown timer, speaker hover cards with bio, agenda tabs, early bird countdownEarly bird pricing with deadline. Social proof (past attendees). Speaker credibility. Multi-ticket discounts.
      19Product Review/Ratings Focusedreviews, ratings, testimonials, social-proof, stars1. Hero (product + aggregate rating), 2. Rating breakdown, 3. Individual reviews, 4. Buy/CTAAfter reviews summary + Buy button alongside reviewsTrust colors. Star ratings gold. Verified badge green. Review sentiment colors.Star fill animations, review filtering, helpful vote interactions, photo lightboxUser-generated content builds trust. Show verified purchases. Filter by rating. Respond to negative reviews.
      20Community/Forum Landingcommunity, forum, social, members, discussion1. Hero (community value prop), 2. Popular topics/categories, 3. Active members showcase, 4. Join CTAJoin button prominent + After member showcaseWarm, welcoming. Member photos add humanity. Topic badges in brand colors. Activity indicators green.Member avatars animation, activity feed live updates, topic hover previews, join success celebrationShow active community (member count, posts today). Highlight benefits. Preview content. Easy onboarding.
      21Before-After Transformationbefore-after, transformation, results, comparison1. Hero (problem state), 2. Transformation slider/comparison, 3. How it works, 4. Results CTAAfter transformation reveal + BottomContrast: muted/grey (before) vs vibrant/colorful (after). Success green for results.Slider comparison interaction, before/after reveal animations, result counters, testimonial videosVisual proof of value. 45% higher conversion. Real results. Specific metrics. Guarantee offer.
      22Marketplace / Directorymarketplace, directory, search, listing1. Hero (Search focused), 2. Categories, 3. Featured Listings, 4. Trust/Safety, 5. CTA (Become a host/seller)Hero Search Bar + Navbar 'List your item'Search: High contrast. Categories: Visual icons. Trust: Blue/Green.Search autocomplete animation map hover pins, card carousel, Search bar is the CTA. Reduce friction to search. Popular searches suggestions.
      23Newsletter / Content Firstnewsletter, content, writer, blog, subscribe1. Hero (Value Prop + Form), 2. Recent Issues/Archives, 3. Social Proof (Subscriber count), 4. About AuthorHero inline form + Sticky header formMinimalist. Paper-like background. Text focus. Accent color for Subscribe.Text highlight animations typewriter effect, subtle fade-in, Single field form (Email only). Show 'Join X, 000 readers'. Read sample link.
      24Webinar Registrationwebinar, registration, event, training, live1. Hero (Topic + Timer + Form), 2. What you'll learn, 3. Speaker Bio, 4. Urgency/Bonuses, 5. Form (again)Hero (Right side form) + Bottom anchorUrgency: Red/Orange. Professional: Blue/Navy. Form: High contrast white.Countdown timer speaker avatar float, urgent ticker, Limited seats logic. 'Live' indicator. Auto-fill timezone.
      25Enterprise Gatewayenterprise, corporate, gateway, solutions, portal1. Hero (Video/Mission), 2. Solutions by Industry, 3. Solutions by Role, 4. Client Logos, 5. Contact SalesContact Sales (Primary) + Login (Secondary)Corporate: Navy/Grey. High integrity. Conservative accents.Slow video background logo carousel, tab switching for industries, Path selection (I am a...). Mega menu navigation. Trust signals prominent.
      26Portfolio Gridportfolio, grid, showcase, gallery, masonry1. Hero (Name/Role), 2. Project Grid (Masonry), 3. About/Philosophy, 4. ContactProject Card Hover + Footer ContactNeutral background (let work shine). Text: Black/White. Accent: Minimal.Image lazy load reveal hover overlay info, lightbox view, Visuals first. Filter by category. Fast loading essential.
      27Horizontal Scroll Journeyhorizontal, scroll, journey, gallery, storytelling, panoramic1. Intro (Vertical), 2. The Journey (Horizontal Track), 3. Detail Reveal, 4. Vertical FooterFloating Sticky CTA or End of Horizontal TrackContinuous palette transition. Chapter colors. Progress bar #000000.Scroll-jacking (careful), parallax layers, horizontal slide, progress indicatorImmersive product discovery. High engagement. Keep navigation visible. 28,Bento Grid Showcase,bento, grid, features, modular, apple-style, showcase", 1. Hero, 2. Bento Grid (Key Features), 3. Detail Cards, 4. Tech Specs, 5. CTA, Floating Action Button or Bottom of Grid, Card backgrounds: #F5F5F7 or Glass. Icons: Vibrant brand colors. Text: Dark., Hover card scale (1.02), video inside cards, tilt effect, staggered reveal, Scannable value props. High information density without clutter. Mobile stack. 29,Interactive 3D Configurator,3d, configurator, customizer, interactive, product", 1. Hero (Configurator), 2. Feature Highlight (synced), 3. Price/Specs, 4. Purchase, Inside Configurator UI + Sticky Bottom Bar, Neutral studio background. Product: Realistic materials. UI: Minimal overlay., Real-time rendering, material swap animation, camera rotate/zoom, light reflection, Increases ownership feeling. 360 view reduces return rates. Direct add-to-cart. 30,AI-Driven Dynamic Landing,ai, dynamic, personalized, adaptive, generative", 1. Prompt/Input Hero, 2. Generated Result Preview, 3. How it Works, 4. Value Prop, Input Field (Hero) + 'Try it' Buttons, Adaptive to user input. Dark mode for compute feel. Neon accents., Typing text effects, shimmering generation loaders, morphing layouts, Immediate value demonstration. 'Show, don't tell'. Low friction start.

      Preview truncated.

    • products.csv29.1 KB
      NoProduct TypeKeywordsPrimary Style RecommendationSecondary StylesLanding Page PatternDashboard Style (if applicable)Color Palette FocusKey Considerations
      1SaaS (General)app, b2b, cloud, general, saas, software, subscriptionGlassmorphism + Flat DesignSoft UI Evolution, MinimalismHero + Features + CTAData-Dense + Real-Time MonitoringTrust blue + accent contrastBalance modern feel with clarity. Focus on CTAs.
      2Micro SaaSapp, b2b, cloud, indie, micro, micro-saas, niche, saas, small, software, solo, subscriptionFlat Design + Vibrant & BlockMotion-Driven, Micro-interactionsMinimal & Direct + DemoExecutive DashboardVibrant primary + white spaceKeep simple, show product quickly. Speed is key.
      3E-commercebuy, commerce, e, ecommerce, products, retail, sell, shop, storeVibrant & Block-basedAurora UI, Motion-DrivenFeature-Rich ShowcaseSales Intelligence DashboardBrand primary + success greenEngagement & conversions. High visual hierarchy.
      4E-commerce Luxurybuy, commerce, e, ecommerce, elegant, exclusive, high-end, luxury, premium, products, retail, sell, shop, storeLiquid Glass + Glassmorphism3D & Hyperrealism, Aurora UIFeature-Rich ShowcaseSales Intelligence DashboardPremium colors + minimal accentElegance & sophistication. Premium materials.
      5Service Landing Pageappointment, booking, consultation, conversion, landing, marketing, page, serviceHero-Centric + Trust & AuthoritySocial Proof-Focused, StorytellingHero-Centric DesignN/A - Analytics for conversionsBrand primary + trust colorsSocial proof essential. Show expertise.
      6B2B Serviceappointment, b, b2b, booking, business, consultation, corporate, enterprise, serviceTrust & Authority + MinimalFeature-Rich, Conversion-OptimizedFeature-Rich ShowcaseSales Intelligence DashboardProfessional blue + neutral greyCredibility essential. Clear ROI messaging.
      7Financial Dashboardadmin, analytics, dashboard, data, financial, panelDark Mode (OLED) + Data-DenseMinimalism, Accessible & EthicalN/A - Dashboard focusedFinancial DashboardDark bg + red/green alerts + trust blueHigh contrast, real-time updates, accuracy paramount.
      8Analytics Dashboardadmin, analytics, dashboard, data, panelData-Dense + Heat Map & HeatmapMinimalism, Dark Mode (OLED)N/A - Analytics focusedDrill-Down Analytics + ComparativeCool→Hot gradients + neutral greyClarity > aesthetics. Color-coded data priority.
      9Healthcare Appapp, clinic, health, healthcare, medical, patientNeumorphism + Accessible & EthicalSoft UI Evolution, Claymorphism (for patients)Social Proof-FocusedUser Behavior AnalyticsCalm blue + health green + trustAccessibility mandatory. Calming aesthetic.
      10Educational Appapp, course, education, educational, learning, school, trainingClaymorphism + Micro-interactionsVibrant & Block-based, Flat DesignStorytelling-DrivenUser Behavior AnalyticsPlayful colors + clear hierarchyEngagement & ease of use. Age-appropriate design.
      11Creative Agencyagency, creative, design, marketing, studioBrutalism + Motion-DrivenRetro-Futurism, Storytelling-DrivenStorytelling-DrivenN/A - Portfolio focusedBold primaries + artistic freedomDifferentiation key. Wow-factor necessary.
      12Portfolio/Personalcreative, personal, portfolio, projects, showcase, workMotion-Driven + MinimalismBrutalism, Aurora UIStorytelling-DrivenN/A - Personal brandingBrand primary + artistic interpretationShowcase work. Personality shine through.
      13Gamingentertainment, esports, game, gaming, play3D & Hyperrealism + Retro-FuturismMotion-Driven, Vibrant & BlockFeature-Rich ShowcaseN/A - Game focusedVibrant + neon + immersive colorsImmersion priority. Performance critical.
      14Government/Public Serviceappointment, booking, consultation, government, public, serviceAccessible & Ethical + MinimalismFlat Design, Inclusive DesignMinimal & DirectExecutive DashboardProfessional blue + high contrastWCAG AAA mandatory. Trust paramount.
      15Fintech/Cryptobanking, blockchain, crypto, defi, finance, fintech, money, nft, payment, web3Glassmorphism + Dark Mode (OLED)Retro-Futurism, Motion-DrivenConversion-OptimizedReal-Time Monitoring + PredictiveDark tech colors + trust + vibrant accentsSecurity perception. Real-time data critical.
      16Social Media Appapp, community, content, entertainment, media, network, sharing, social, streaming, users, videoVibrant & Block-based + Motion-DrivenAurora UI, Micro-interactionsFeature-Rich ShowcaseUser Behavior AnalyticsVibrant + engagement colorsEngagement & retention. Addictive design ethics.
      17Productivity Toolcollaboration, productivity, project, task, tool, workflowFlat Design + Micro-interactionsMinimalism, Soft UI EvolutionInteractive Product DemoDrill-Down AnalyticsClear hierarchy + functional colorsEase of use. Speed & efficiency focus.
      18Design System/Component Librarycomponent, design, library, systemMinimalism + Accessible & EthicalFlat Design, Zero InterfaceFeature-Rich ShowcaseN/A - Dev focusedClear hierarchy + code-like structureConsistency. Developer-first approach.
      19AI/Chatbot Platformai, artificial-intelligence, automation, chatbot, machine-learning, ml, platformAI-Native UI + MinimalismZero Interface, GlassmorphismInteractive Product DemoAI/ML Analytics DashboardNeutral + AI Purple (#6366F1)Conversational UI. Streaming text. Context awareness. Minimal chrome.
      20NFT/Web3 Platformnft, platform, webCyberpunk UI + GlassmorphismAurora UI, 3D & HyperrealismFeature-Rich ShowcaseCrypto/Blockchain DashboardDark + Neon + Gold (#FFD700)Wallet integration. Transaction feedback. Gas fees display. Dark mode essential.
      21Creator Economy Platformcreator, economy, platformVibrant & Block-based + Bento Box GridMotion-Driven, Aurora UISocial Proof-FocusedUser Behavior AnalyticsVibrant + Brand colorsCreator profiles. Monetization display. Engagement metrics. Social proof.
      22Sustainability/ESG Platformai, artificial-intelligence, automation, esg, machine-learning, ml, platform, sustainabilityOrganic Biophilic + MinimalismAccessible & Ethical, Flat DesignTrust & AuthorityEnergy/Utilities DashboardGreen (#228B22) + Earth tonesCarbon footprint visuals. Progress indicators. Certification badges. Eco-friendly imagery.
      23Remote Work/Collaboration Toolcollaboration, remote, tool, workSoft UI Evolution + MinimalismGlassmorphism, Micro-interactionsFeature-Rich ShowcaseDrill-Down AnalyticsCalm Blue + Neutral greyReal-time collaboration. Status indicators. Video integration. Notification management.
      24Mental Health Appapp, health, mentalNeumorphism + Accessible & EthicalClaymorphism, Soft UI EvolutionSocial Proof-FocusedHealthcare AnalyticsCalm Pastels + Trust colorsCalming aesthetics. Privacy-first. Crisis resources. Progress tracking. Accessibility mandatory.
      25Pet Tech Appapp, pet, techClaymorphism + Vibrant & Block-basedMicro-interactions, Flat DesignStorytelling-DrivenUser Behavior AnalyticsPlayful + Warm colorsPet profiles. Health tracking. Playful UI. Photo galleries. Vet integration.
      26Smart Home/IoT Dashboardadmin, analytics, dashboard, data, home, iot, panel, smartGlassmorphism + Dark Mode (OLED)Minimalism, AI-Native UIInteractive Product DemoReal-Time MonitoringDark + Status indicator colorsDevice status. Real-time controls. Energy monitoring. Automation rules. Quick actions.
      27EV/Charging Ecosystemcharging, ecosystem, evMinimalism + Aurora UIGlassmorphism, Organic BiophilicHero-Centric DesignEnergy/Utilities DashboardElectric Blue (#009CD1) + GreenCharging station maps. Range estimation. Cost calculation. Environmental impact.

      Preview truncated.

    • react-performance.csv14.5 KB
      NoCategoryIssueKeywordsPlatformDescriptionDoDon'tCode Example GoodCode Example BadSeverity
      1Async WaterfallDefer Awaitasync await defer branchReact/Next.jsMove await into branches where actually used to avoid blocking unused code pathsMove await operations into branches where they're neededAwait at top of function blocking all branchesif (skip) return { skipped: true }; const data = await fetch()const data = await fetch(); if (skip) return { skipped: true }Critical
      2Async WaterfallPromise.all Parallelpromise all parallel concurrentReact/Next.jsExecute independent async operations concurrently using Promise.all()Use Promise.all() for independent operationsSequential await for independent operationsconst [user, posts] = await Promise.all([fetchUser(), fetchPosts()])const user = await fetchUser(); const posts = await fetchPosts()Critical
      3Async WaterfallDependency Parallelizationbetter-all dependency parallelReact/Next.jsUse better-all for operations with partial dependencies to maximize parallelismUse better-all to start each task at earliest possible momentWait for unrelated data before starting dependent fetchawait all({ user() {}, config() {}, profile() { return fetch((await this.$.user).id) } })const [user, config] = await Promise.all([...]); const profile = await fetchProfile(user.id)Critical
      4Async WaterfallAPI Route Optimizationapi route waterfall promiseReact/Next.jsIn API routes start independent operations immediately even if not awaited yetStart promises early and await lateSequential awaits in API handlersconst sessionP = auth(); const configP = fetchConfig(); const session = await sessionPconst session = await auth(); const config = await fetchConfig()Critical
      5Async WaterfallSuspense Boundariessuspense streaming boundaryReact/Next.jsUse Suspense to show wrapper UI faster while data loadsWrap async components in Suspense boundariesAwait data blocking entire page render<Suspense fallback={<Skeleton />}><DataDisplay /></Suspense>const data = await fetchData(); return <DataDisplay data={data} />High
      6Bundle SizeBarrel Importsbarrel import direct pathReact/Next.jsImport directly from source files instead of barrel files to avoid loading unused modulesImport directly from source pathImport from barrel/index filesimport Check from 'lucide-react/dist/esm/icons/check'import { Check } from 'lucide-react'Critical
      7Bundle SizeDynamic Importsdynamic import lazy nextReact/Next.jsUse next/dynamic to lazy-load large components not needed on initial renderUse dynamic() for heavy componentsImport heavy components at top levelconst Monaco = dynamic(() => import('./monaco'), { ssr: false })import { MonacoEditor } from './monaco-editor'Critical
      8Bundle SizeDefer Third Partyanalytics defer third-partyReact/Next.jsLoad analytics and logging after hydration since they don't block interactionLoad non-critical scripts after hydrationInclude analytics in main bundleconst Analytics = dynamic(() => import('@vercel/analytics'), { ssr: false })import { Analytics } from '@vercel/analytics/react'Medium
      9Bundle SizeConditional Loadingconditional module lazyReact/Next.jsLoad large data or modules only when a feature is activatedDynamic import when feature enabledImport large modules unconditionallyuseEffect(() => { if (enabled) import('./heavy.js') }, [enabled])import { heavyData } from './heavy.js'High
      10Bundle SizePreload Intentpreload hover focus intentReact/Next.jsPreload heavy bundles on hover/focus before they're neededPreload on user intent signalsLoad only on clickonMouseEnter={() => import('./editor')}onClick={() => import('./editor')}Medium
      11ServerReact.cache Dedupreact cache deduplicate requestReact/Next.jsUse React.cache() for server-side request deduplication within single requestWrap data fetchers with cache()Fetch same data multiple times in treeexport const getUser = cache(async () => await db.user.find())export async function getUser() { return await db.user.find() }Medium
      12ServerLRU Cache Cross-Requestlru cache cross requestReact/Next.jsUse LRU cache for data shared across sequential requestsUse LRU for cross-request cachingRefetch same data on every requestconst cache = new LRUCache({ max: 1000, ttl: 5*60*1000 })Always fetch from databaseHigh
      13ServerMinimize Serializationserialization rsc boundaryReact/Next.jsOnly pass fields that client actually uses across RSC boundariesPass only needed fields to client componentsPass entire objects to client<Profile name={user.name} /><Profile user={user} /> // 50 fields serializedHigh
      14ServerParallel Fetchingparallel fetch component compositionReact/Next.jsRestructure components to parallelize data fetching in RSCUse component composition for parallel fetchesSequential fetches in parent component<Header /><Sidebar /> // both fetch in parallelconst header = await fetchHeader(); return <><div>{header}</div><Sidebar /></>Critical
      15ServerAfter Non-blockingafter non-blocking loggingReact/Next.jsUse Next.js after() to schedule work after response is sentUse after() for logging/analyticsBlock response for non-critical operationsafter(async () => { await logAction() }); return Response.json(data)await logAction(); return Response.json(data)Medium
      16ClientSWR Deduplicationswr dedup cache revalidateReact/Next.jsUse SWR for automatic request deduplication and cachingUse useSWR for client data fetchingManual fetch in useEffectconst { data } = useSWR('/api/users', fetcher)useEffect(() => { fetch('/api/users').then(setUsers) }, [])Medium-High
      17ClientEvent Listener Dedupevent listener deduplicate globalReact/Next.jsShare global event listeners across component instancesUse useSWRSubscription for shared listenersRegister listener per component instanceuseSWRSubscription('global-keydown', () => { window.addEventListener... })useEffect(() => { window.addEventListener('keydown', handler) }, [])Low
      18RerenderDefer State Readsstate read callback subscriptionReact/Next.jsDon't subscribe to state only used in callbacksRead state on-demand in callbacksSubscribe to state used only in handlersconst handleClick = () => { const params = new URLSearchParams(location.search) }const params = useSearchParams(); const handleClick = () => { params.get('ref') }Medium
      19RerenderMemoized Componentsmemo extract expensiveReact/Next.jsExtract expensive work into memoized components for early returnsExtract to memo() componentsCompute expensive values before early returnconst UserAvatar = memo(({ user }) => ...); if (loading) return <Skeleton />const avatar = useMemo(() => compute(user)); if (loading) return <Skeleton />Medium
      20RerenderNarrow Dependencieseffect dependency primitiveReact/Next.jsSpecify primitive dependencies instead of objects in effectsUse primitive values in dependency arraysUse object references as dependenciesuseEffect(() => { console.log(user.id) }, [user.id])useEffect(() => { console.log(user.id) }, [user])Low
      21RerenderDerived Statederived boolean subscriptionReact/Next.jsSubscribe to derived booleans instead of continuous valuesUse derived boolean stateSubscribe to continuous valuesconst isMobile = useMediaQuery('(max-width: 767px)')const width = useWindowWidth(); const isMobile = width < 768Medium
      22RerenderFunctional setStatefunctional setstate callbackReact/Next.jsUse functional setState updates for stable callbacks and no stale closuresUse functional form: setState(curr => ...)Reference state directly in setStatesetItems(curr => [...curr, newItem])setItems([...items, newItem]) // items in depsMedium
      23RerenderLazy State Initusestate lazy initializationReact/Next.jsPass function to useState for expensive initial valuesUse function form for expensive initCompute expensive value directlyuseState(() => buildSearchIndex(items))useState(buildSearchIndex(items)) // runs every renderMedium
      24RerenderTransitionsstarttransition non-urgentReact/Next.jsMark frequent non-urgent state updates as transitionsUse startTransition for non-urgent updatesBlock UI on every state changestartTransition(() => setScrollY(window.scrollY))setScrollY(window.scrollY) // blocks on every scrollMedium
      25RenderingSVG Animation Wrappersvg animation wrapper divReact/Next.jsWrap SVG in div and animate wrapper for hardware accelerationAnimate div wrapper around SVGAnimate SVG element directly<div class='animate-spin'><svg>...</svg></div><svg class='animate-spin'>...</svg>Low
      26RenderingContent Visibilitycontent-visibility autoReact/Next.jsApply content-visibility: auto to defer off-screen renderingUse content-visibility for long listsRender all list items immediately.item { content-visibility: auto; contain-intrinsic-size: 0 80px }Render 1000 items without optimizationHigh
      27RenderingHoist Static JSXhoist static jsx elementReact/Next.jsExtract static JSX outside components to avoid re-creationHoist static elements to module scopeCreate static elements inside componentsconst skeleton = <div class='animate-pulse' />; function C() { return skeleton }function C() { return <div class='animate-pulse' /> }Low

      Preview truncated.

    • styles.csv94.3 KB
      NoStyle CategoryTypeKeywordsPrimary ColorsSecondary ColorsEffects & AnimationBest ForDo Not Use ForLight Mode ✓Dark Mode ✓Performance
      1Minimalism & Swiss StyleGeneralClean, simple, spacious, functional, white space, high contrast, geometric, sans-serif, grid-based, essentialMonochromatic, Black #000000, White #FFFFFFNeutral (Beige #F5F1E8, Grey #808080, Taupe #B38B6D), Primary accentSubtle hover (200-250ms), smooth transitions, sharp shadows if any, clear type hierarchy, fast loadingEnterprise apps, dashboards, documentation sites, SaaS platforms, professional toolsCreative portfolios, entertainment, playful brands, artistic experiments✓ Full✓ Full⚡ Excellent
      2NeumorphismGeneralSoft UI, embossed, debossed, convex, concave, light source, subtle depth, rounded (12-16px), monochromaticLight pastels: Soft Blue #C8E0F4, Soft Pink #F5E0E8, Soft Grey #E8E8E8Tints/shades (±30%), gradient subtlety, color harmonySoft box-shadow (multiple: -5px -5px 15px, 5px 5px 15px), smooth press (150ms), inner subtle shadowHealth/wellness apps, meditation platforms, fitness trackers, minimal interaction UIsComplex apps, critical accessibility, data-heavy dashboards, high-contrast required✓ Full◐ Partial⚡ Good
      3GlassmorphismGeneralFrosted glass, transparent, blurred background, layered, vibrant background, light source, depth, multi-layerTranslucent white: rgba(255,255,255,0.1-0.3)Vibrant: Electric Blue #0080FF, Neon Purple #8B00FF, Vivid Pink #FF1493, Teal #20B2AABackdrop blur (10-20px), subtle border (1px solid rgba white 0.2), light reflection, Z-depthModern SaaS, financial dashboards, high-end corporate, lifestyle apps, modal overlays, navigationLow-contrast backgrounds, critical accessibility, performance-limited, dark text on dark✓ Full✓ Full⚠ Good
      4BrutalismGeneralRaw, unpolished, stark, high contrast, plain text, default fonts, visible borders, asymmetric, anti-designPrimary: Red #FF0000, Blue #0000FF, Yellow #FFFF00, Black #000000, White #FFFFFFLimited: Neon Green #00FF00, Hot Pink #FF00FF, minimal secondaryNo smooth transitions (instant), sharp corners (0px), bold typography (700+), visible grid, large blocksDesign portfolios, artistic projects, counter-culture brands, editorial/media sites, tech blogsCorporate environments, conservative industries, critical accessibility, customer-facing professional✓ Full✓ Full⚡ Excellent
      53D & HyperrealismGeneralDepth, realistic textures, 3D models, spatial navigation, tactile, skeuomorphic elements, rich detail, immersiveDeep Navy #001F3F, Forest Green #228B22, Burgundy #800020, Gold #FFD700, Silver #C0C0C0Complex gradients (5-10 stops), realistic lighting, shadow variations (20-40% darker)WebGL/Three.js 3D, realistic shadows (layers), physics lighting, parallax (3-5 layers), smooth 3D (300-400ms)Gaming, product showcase, immersive experiences, high-end e-commerce, architectural viz, VR/ARLow-end mobile, performance-limited, critical accessibility, data tables/forms◐ Partial◐ Partial❌ Poor
      6Vibrant & Block-basedGeneralBold, energetic, playful, block layout, geometric shapes, high color contrast, duotone, modern, energeticNeon Green #39FF14, Electric Purple #BF00FF, Vivid Pink #FF1493, Bright Cyan #00FFFF, Sunburst #FFAA00Complementary: Orange #FF7F00, Shocking Pink #FF006E, Lime #CCFF00, triadic schemesLarge sections (48px+ gaps), animated patterns, bold hover (color shift), scroll-snap, large type (32px+), 200-300msStartups, creative agencies, gaming, social media, youth-focused, entertainment, consumerFinancial institutions, healthcare, formal business, government, conservative, elderly✓ Full✓ Full⚡ Good
      7Dark Mode (OLED)GeneralDark theme, low light, high contrast, deep black, midnight blue, eye-friendly, OLED, night mode, power efficientDeep Black #000000, Dark Grey #121212, Midnight Blue #0A0E27Vibrant accents: Neon Green #39FF14, Electric Blue #0080FF, Gold #FFD700, Plasma Purple #BF00FFMinimal glow (text-shadow: 0 0 10px), dark-to-light transitions, low white emission, high readability, visible focusNight-mode apps, coding platforms, entertainment, eye-strain prevention, OLED devices, low-lightPrint-first content, high-brightness outdoor, color-accuracy-critical✗ No✓ Only⚡ Excellent
      8Accessible & EthicalGeneralHigh contrast, large text (16px+), keyboard navigation, screen reader friendly, WCAG compliant, focus state, semanticWCAG AA/AAA (4.5:1 min), simple primary, clear secondary, high luminosity (7:1+)Symbol-based colors (not color-only), supporting patterns, inclusive combinationsClear focus rings (3-4px), ARIA labels, skip links, responsive design, reduced motion, 44x44px touch targetsGovernment, healthcare, education, inclusive products, large audience, legal compliance, publicNone - accessibility universal✓ Full✓ Full⚡ Excellent
      9ClaymorphismGeneralSoft 3D, chunky, playful, toy-like, bubbly, thick borders (3-4px), double shadows, rounded (16-24px)Pastel: Soft Peach #FDBCB4, Baby Blue #ADD8E6, Mint #98FF98, Lilac #E6E6FA, light BGSoft gradients (pastel-to-pastel), light/dark variations (20-30%), gradient subtleInner+outer shadows (subtle, no hard lines), soft press (200ms ease-out), fluffy elements, smooth transitionsEducational apps, children's apps, SaaS platforms, creative tools, fun-focused, onboarding, casual gamesFormal corporate, professional services, data-critical, serious/medical, legal apps, finance✓ Full◐ Partial⚡ Good
      10Aurora UIGeneralVibrant gradients, smooth blend, Northern Lights effect, mesh gradient, luminous, atmospheric, abstractComplementary: Blue-Orange, Purple-Yellow, Electric Blue #0080FF, Magenta #FF1493, Cyan #00FFFFSmooth transitions (Blue→Purple→Pink→Teal), iridescent effects, blend modes (screen, multiply)Large flowing CSS/SVG gradients, subtle 8-12s animations, depth via color layering, smooth morphModern SaaS, creative agencies, branding, music platforms, lifestyle, premium products, hero sectionsData-heavy dashboards, critical accessibility, content-heavy where distraction issues✓ Full✓ Full⚠ Good
      11Retro-FuturismGeneralVintage sci-fi, 80s aesthetic, neon glow, geometric patterns, CRT scanlines, pixel art, cyberpunk, synthwaveNeon Blue #0080FF, Hot Pink #FF006E, Cyan #00FFFF, Deep Black #1A1A2E, Purple #5D34D0Metallic Silver #C0C0C0, Gold #FFD700, duotone, 80s Pink #FF10F0, neon accentsCRT scanlines (::before overlay), neon glow (text-shadow+box-shadow), glitch effects (skew/offset keyframes)Gaming, entertainment, music platforms, tech brands, artistic projects, nostalgic, cyberpunkConservative industries, critical accessibility, professional/corporate, elderly, legal/finance✓ Full✓ Dark focused⚠ Moderate
      12Flat DesignGeneral2D, minimalist, bold colors, no shadows, clean lines, simple shapes, typography-focused, modern, icon-heavySolid bright: Red, Orange, Blue, Green, limited palette (4-6 max)Complementary colors, muted secondaries, high saturation, clean accentsNo gradients/shadows, simple hover (color/opacity shift), fast loading, clean transitions (150-200ms ease), minimal iconsWeb apps, mobile apps, cross-platform, startup MVPs, user-friendly, SaaS, dashboards, corporateComplex 3D, premium/luxury, artistic portfolios, immersive experiences, high-detail✓ Full✓ Full⚡ Excellent
      13SkeuomorphismGeneralRealistic, texture, depth, 3D appearance, real-world metaphors, shadows, gradients, tactile, detailed, materialRich realistic: wood, leather, metal colors, detailed gradients (8-12 stops), metallic effectsRealistic lighting gradients, shadow variations (30-50% darker), texture overlays, material colorsRealistic shadows (layers), depth (perspective), texture details (noise, grain), realistic animations (300-500ms)Legacy apps, gaming, immersive storytelling, premium products, luxury, realistic simulations, educationModern enterprise, critical accessibility, low-performance, web (use Flat/Modern)◐ Partial◐ Partial❌ Poor
      14Liquid GlassGeneralFlowing glass, morphing, smooth transitions, fluid effects, translucent, animated blur, iridescent, chromatic aberrationVibrant iridescent (rainbow spectrum), translucent base with opacity shifts, gradient fluidityChromatic aberration (Red-Cyan), iridescent oil-spill, fluid gradient blends, holographic effectsMorphing elements (SVG/CSS), fluid animations (400-600ms curves), dynamic blur (backdrop-filter), color transitionsPremium SaaS, high-end e-commerce, creative platforms, branding experiences, luxury portfoliosPerformance-limited, critical accessibility, complex data, budget projects✓ Full✓ Full⚠ Moderate-Poor
      15Motion-DrivenGeneralAnimation-heavy, microinteractions, smooth transitions, scroll effects, parallax, entrance anim, page transitionsBold colors emphasize movement, high contrast animated, dynamic gradients, accent action colorsTransitional states, success (Green #22C55E), error (Red #EF4444), neutral feedbackScroll anim (Intersection Observer), hover (300-400ms), entrance, parallax (3-5 layers), page transitionsPortfolio sites, storytelling platforms, interactive experiences, entertainment apps, creative, SaaSData dashboards, critical accessibility, low-power devices, content-heavy, motion-sensitive✓ Full✓ Full⚠ Good
      16Micro-interactionsGeneralSmall animations, gesture-based, tactile feedback, subtle animations, contextual interactions, responsiveSubtle color shifts (10-20%), feedback: Green #22C55E, Red #EF4444, Amber #F59E0BAccent feedback, neutral supporting, clear action indicatorsSmall hover (50-100ms), loading spinners, success/error state anim, gesture-triggered (swipe/pinch), hapticMobile apps, touchscreen UIs, productivity tools, user-friendly, consumer apps, interactive componentsDesktop-only, critical performance, accessibility-first (alternatives needed)✓ Full✓ Full⚡ Excellent
      17Inclusive DesignGeneralAccessible, color-blind friendly, high contrast, haptic feedback, voice interaction, screen reader, WCAG AAA, universalWCAG AAA (7:1+ contrast), avoid red-green only, symbol-based indicators, high contrast primarySupporting patterns (stripes, dots, hatch), symbols, combinations, clear non-color indicatorsHaptic feedback (vibration), voice guidance, focus indicators (4px+ ring), motion options, alt content, semanticPublic services, education, healthcare, finance, government, accessible consumer, inclusiveNone - accessibility universal✓ Full✓ Full⚡ Excellent
      18Zero InterfaceGeneralMinimal visible UI, voice-first, gesture-based, AI-driven, invisible controls, predictive, context-aware, ambientNeutral backgrounds: Soft white #FAFAFA, light grey #F0F0F0, warm off-white #F5F1E8Subtle feedback: light green, light red, minimal UI elements, soft accentsVoice recognition UI, gesture detection, AI predictions (smooth reveal), progressive disclosure, smart suggestionsVoice assistants, AI platforms, future-forward UX, smart home, contextual computing, ambient experiencesComplex workflows, data-entry heavy, traditional systems, legacy support, explicit control✓ Full✓ Full⚡ Excellent
      19Soft UI EvolutionGeneralEvolved soft UI, better contrast, modern aesthetics, subtle depth, accessibility-focused, improved shadows, hybridImproved contrast pastels: Soft Blue #87CEEB, Soft Pink #FFB6C1, Soft Green #90EE90, better hierarchyBetter combinations, accessible secondary, supporting with improved contrast, modern accentsImproved shadows (softer than flat, clearer than neumorphism), modern (200-300ms), focus visible, WCAG AA/AAAModern enterprise apps, SaaS platforms, health/wellness, modern business tools, professional, hybridExtreme minimalism, critical performance, systems without modern OS✓ Full✓ Full⚡ Excellent
      20Hero-Centric DesignLanding PageLarge hero section, compelling headline, high-contrast CTA, product showcase, value proposition, hero image/video, dramatic visualBrand primary color, white/light backgrounds for contrast, accent color for CTASupporting colors for secondary CTAs, accent highlights, trust elements (testimonials, logos)Smooth scroll reveal, fade-in animations on hero, subtle background parallax, CTA glow/pulse effectSaaS landing pages, product launches, service landing pages, B2B platforms, tech companiesComplex navigation, multi-page experiences, data-heavy applications✓ Full✓ Full⚡ Good
      21Conversion-OptimizedLanding PageForm-focused, minimalist design, single CTA focus, high contrast, urgency elements, trust signals, social proof, clear valuePrimary brand color, high-contrast white/light backgrounds, warning/urgency colors for time-limited offersSecondary CTA color (muted), trust element colors (testimonial highlights), accent for key benefitsHover states on CTA (color shift, slight scale), form field focus animations, loading spinner, success feedbackE-commerce product pages, free trial signups, lead generation, SaaS pricing pages, limited-time offersComplex feature explanations, multi-product showcases, technical documentation✓ Full✓ Full⚡ Excellent
      22Feature-Rich ShowcaseLanding PageMultiple feature sections, grid layout, benefit cards, visual feature demonstrations, interactive elements, problem-solution pairsPrimary brand, bright secondary colors for feature cards, contrasting accent for CTAsSupporting colors for: benefits (green), problems (red/orange), features (blue/purple), social proof (neutral)Card hover effects (lift/scale), icon animations on scroll, feature toggle animations, smooth section transitionsEnterprise SaaS, software tools landing pages, platform services, complex product explanations, B2B productsSimple product pages, early-stage startups with few features, entertainment landing pages✓ Full✓ Full⚡ Good
      23Minimal & DirectLanding PageMinimal text, white space heavy, single column layout, direct messaging, clean typography, visual-centric, fast-loadingMonochromatic primary, white background, single accent color for CTA, black/dark grey textMinimal secondary colors, reserved for critical CTAs only, neutral supporting elementsVery subtle hover effects, minimal animations, fast page load (no heavy animations), smooth scrollSimple service landing pages, indie products, consulting services, micro SaaS, freelancer portfoliosFeature-heavy products, complex explanations, multi-product showcases✓ Full✓ Full⚡ Excellent
      24Social Proof-FocusedLanding PageTestimonials prominent, client logos displayed, case studies sections, reviews/ratings, user avatars, success metrics, credibility markersPrimary brand, trust colors (blue), success/growth colors (green), neutral backgroundsTestimonial highlight colors, logo grid backgrounds (light grey), badge/achievement colorsTestimonial carousel animations, logo grid fade-in, stat counter animations (number count-up), review star ratingsB2B SaaS, professional services, premium products, e-commerce conversion pages, established brandsStartup MVPs, products without users, niche/experimental products✓ Full✓ Full⚡ Good
      25Interactive Product DemoLanding PageEmbedded product mockup/video, interactive elements, product walkthrough, step-by-step guides, hover-to-reveal features, embedded demosPrimary brand, interface colors matching product, demo highlight colors for interactive elementsProduct UI colors, tutorial step colors (numbered progression), hover state indicatorsProduct animation playback, step progression animations, hover reveal effects, smooth zoom on interactionSaaS platforms, tool/software products, productivity apps landing pages, developer tools, productivity softwareSimple services, consulting, non-digital products, complexity-averse audiences✓ Full✓ Full⚠ Good (video/interactive)
      26Trust & AuthorityLanding PageCertificates/badges displayed, expert credentials, case studies with metrics, before/after comparisons, industry recognition, security badgesProfessional colors (blue/grey), trust colors, certification badge colors (gold/silver accents)Certificate highlight colors, metric showcase colors, comparison highlight (success green)Badge hover effects, metric pulse animations, certificate carousel, smooth stat revealHealthcare/medical landing pages, financial services, enterprise software, premium/luxury products, legal servicesCasual products, entertainment, viral/social-first products✓ Full✓ Full⚡ Excellent
      27Storytelling-DrivenLanding PageNarrative flow, visual story progression, section transitions, consistent character/brand voice, emotional messaging, journey visualizationBrand primary, warm/emotional colors, varied accent colors per story section, high visual varietyStory section color coding, emotional state colors (calm, excitement, success), transitional gradientsSection-to-section animations, scroll-triggered reveals, character/icon animations, morphing transitions, parallax narrativeBrand/startup stories, mission-driven products, premium/lifestyle brands, documentary-style products, educationalTechnical/complex products (unless narrative-driven), traditional enterprise software✓ Full✓ Full⚠ Moderate (animations)

      Preview truncated.

    • typography.csv31.1 KB
      NoFont Pairing NameCategoryHeading FontBody FontMood/Style KeywordsBest ForGoogle Fonts URLCSS ImportTailwind ConfigNotes
      1Classic ElegantSerif + SansPlayfair DisplayInterelegant, luxury, sophisticated, timeless, premium, editorialLuxury brands, fashion, spa, beauty, editorial, magazines, high-end e-commercehttps://fonts.google.com/share?selection.family=Inter:wght@300;400;500;600;700|Playfair+Display:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap');fontFamily: { serif: ['Playfair Display', 'serif'], sans: ['Inter', 'sans-serif'] }High contrast between elegant heading and clean body. Perfect for luxury/premium.
      2Modern ProfessionalSans + SansPoppinsOpen Sansmodern, professional, clean, corporate, friendly, approachableSaaS, corporate sites, business apps, startups, professional serviceshttps://fonts.google.com/share?selection.family=Open+Sans:wght@300;400;500;600;700|Poppins:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap');fontFamily: { heading: ['Poppins', 'sans-serif'], body: ['Open Sans', 'sans-serif'] }Geometric Poppins for headings, humanist Open Sans for readability.
      3Tech StartupSans + SansSpace GroteskDM Sanstech, startup, modern, innovative, bold, futuristicTech companies, startups, SaaS, developer tools, AI productshttps://fonts.google.com/share?selection.family=DM+Sans:wght@400;500;700|Space+Grotesk:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');fontFamily: { heading: ['Space Grotesk', 'sans-serif'], body: ['DM Sans', 'sans-serif'] }Space Grotesk has unique character, DM Sans is highly readable.
      4Editorial ClassicSerif + SerifCormorant GaramondLibre Baskervilleeditorial, classic, literary, traditional, refined, bookishPublishing, blogs, news sites, literary magazines, book covershttps://fonts.google.com/share?selection.family=Cormorant+Garamond:wght@400;500;600;700|Libre+Baskerville:wght@400;700@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Libre+Baskerville:wght@400;700&display=swap');fontFamily: { heading: ['Cormorant Garamond', 'serif'], body: ['Libre Baskerville', 'serif'] }All-serif pairing for traditional editorial feel.
      5Minimal SwissSans + SansInterInterminimal, clean, swiss, functional, neutral, professionalDashboards, admin panels, documentation, enterprise apps, design systemshttps://fonts.google.com/share?selection.family=Inter:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');fontFamily: { sans: ['Inter', 'sans-serif'] }Single font family with weight variations. Ultimate simplicity.
      6Playful CreativeDisplay + SansFredokaNunitoplayful, friendly, fun, creative, warm, approachableChildren's apps, educational, gaming, creative tools, entertainmenthttps://fonts.google.com/share?selection.family=Fredoka:wght@400;500;600;700|Nunito:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@300;400;500;600;700&display=swap');fontFamily: { heading: ['Fredoka', 'sans-serif'], body: ['Nunito', 'sans-serif'] }Rounded, friendly fonts perfect for playful UIs.
      7Bold StatementDisplay + SansBebas NeueSource Sans 3bold, impactful, strong, dramatic, modern, headlinesMarketing sites, portfolios, agencies, event pages, sportshttps://fonts.google.com/share?selection.family=Bebas+Neue|Source+Sans+3:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Source+Sans+3:wght@300;400;500;600;700&display=swap');fontFamily: { display: ['Bebas Neue', 'sans-serif'], body: ['Source Sans 3', 'sans-serif'] }Bebas Neue for large headlines only. All-caps display font.
      8Wellness CalmSerif + SansLoraRalewaycalm, wellness, health, relaxing, natural, organicHealth apps, wellness, spa, meditation, yoga, organic brandshttps://fonts.google.com/share?selection.family=Lora:wght@400;500;600;700|Raleway:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600;700&family=Raleway:wght@300;400;500;600;700&display=swap');fontFamily: { serif: ['Lora', 'serif'], sans: ['Raleway', 'sans-serif'] }Lora's organic curves with Raleway's elegant simplicity.
      9Developer MonoMono + SansJetBrains MonoIBM Plex Sanscode, developer, technical, precise, functional, hackerDeveloper tools, documentation, code editors, tech blogs, CLI appshttps://fonts.google.com/share?selection.family=IBM+Plex+Sans:wght@300;400;500;600;700|JetBrains+Mono:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap');fontFamily: { mono: ['JetBrains Mono', 'monospace'], sans: ['IBM Plex Sans', 'sans-serif'] }JetBrains for code, IBM Plex for UI. Developer-focused.
      10Retro VintageDisplay + SerifAbril FatfaceMerriweatherretro, vintage, nostalgic, dramatic, decorative, boldVintage brands, breweries, restaurants, creative portfolios, postershttps://fonts.google.com/share?selection.family=Abril+Fatface|Merriweather:wght@300;400;700@import url('https://fonts.googleapis.com/css2?family=Abril+Fatface&family=Merriweather:wght@300;400;700&display=swap');fontFamily: { display: ['Abril Fatface', 'serif'], body: ['Merriweather', 'serif'] }Abril Fatface for hero headlines only. High-impact vintage feel.
      11Geometric ModernSans + SansOutfitWork Sansgeometric, modern, clean, balanced, contemporary, versatileGeneral purpose, portfolios, agencies, modern brands, landing pageshttps://fonts.google.com/share?selection.family=Outfit:wght@300;400;500;600;700|Work+Sans:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Work+Sans:wght@300;400;500;600;700&display=swap');fontFamily: { heading: ['Outfit', 'sans-serif'], body: ['Work Sans', 'sans-serif'] }Both geometric but Outfit more distinctive for headings.
      12Luxury SerifSerif + SansCormorantMontserratluxury, high-end, fashion, elegant, refined, premiumFashion brands, luxury e-commerce, jewelry, high-end serviceshttps://fonts.google.com/share?selection.family=Cormorant:wght@400;500;600;700|Montserrat:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Cormorant:wght@400;500;600;700&family=Montserrat:wght@300;400;500;600;700&display=swap');fontFamily: { serif: ['Cormorant', 'serif'], sans: ['Montserrat', 'sans-serif'] }Cormorant's elegance with Montserrat's geometric precision.
      13Friendly SaaSSans + SansPlus Jakarta SansPlus Jakarta Sansfriendly, modern, saas, clean, approachable, professionalSaaS products, web apps, dashboards, B2B, productivity toolshttps://fonts.google.com/share?selection.family=Plus+Jakarta+Sans:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap');fontFamily: { sans: ['Plus Jakarta Sans', 'sans-serif'] }Single versatile font. Modern alternative to Inter.
      14News EditorialSerif + SansNewsreaderRobotonews, editorial, journalism, trustworthy, readable, informativeNews sites, blogs, magazines, journalism, content-heavy siteshttps://fonts.google.com/share?selection.family=Newsreader:wght@400;500;600;700|Roboto:wght@300;400;500;700@import url('https://fonts.googleapis.com/css2?family=Newsreader:wght@400;500;600;700&family=Roboto:wght@300;400;500;700&display=swap');fontFamily: { serif: ['Newsreader', 'serif'], sans: ['Roboto', 'sans-serif'] }Newsreader designed for long-form reading. Roboto for UI.
      15Handwritten CharmScript + SansCaveatQuicksandhandwritten, personal, friendly, casual, warm, charmingPersonal blogs, invitations, creative portfolios, lifestyle brandshttps://fonts.google.com/share?selection.family=Caveat:wght@400;500;600;700|Quicksand:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=Quicksand:wght@300;400;500;600;700&display=swap');fontFamily: { script: ['Caveat', 'cursive'], sans: ['Quicksand', 'sans-serif'] }Use Caveat sparingly for accents. Quicksand for body.
      16Corporate TrustSans + SansLexendSource Sans 3corporate, trustworthy, accessible, readable, professional, cleanEnterprise, government, healthcare, finance, accessibility-focusedhttps://fonts.google.com/share?selection.family=Lexend:wght@300;400;500;600;700|Source+Sans+3:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700&family=Source+Sans+3:wght@300;400;500;600;700&display=swap');fontFamily: { heading: ['Lexend', 'sans-serif'], body: ['Source Sans 3', 'sans-serif'] }Lexend designed for readability. Excellent accessibility.
      17Brutalist RawMono + MonoSpace MonoSpace Monobrutalist, raw, technical, monospace, minimal, starkBrutalist designs, developer portfolios, experimental, tech arthttps://fonts.google.com/share?selection.family=Space+Mono:wght@400;700@import url('https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap');fontFamily: { mono: ['Space Mono', 'monospace'] }All-mono for raw brutalist aesthetic. Limited weights.
      18Fashion ForwardSans + SansSyneManropefashion, avant-garde, creative, bold, artistic, edgyFashion brands, creative agencies, art galleries, design studioshttps://fonts.google.com/share?selection.family=Manrope:wght@300;400;500;600;700|Syne:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700&family=Syne:wght@400;500;600;700&display=swap');fontFamily: { heading: ['Syne', 'sans-serif'], body: ['Manrope', 'sans-serif'] }Syne's unique character for headlines. Manrope for readability.
      19Soft RoundedSans + SansVarela RoundNunito Sanssoft, rounded, friendly, approachable, warm, gentleChildren's products, pet apps, friendly brands, wellness, soft UIhttps://fonts.google.com/share?selection.family=Nunito+Sans:wght@300;400;500;600;700|Varela+Round@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@300;400;500;600;700&family=Varela+Round&display=swap');fontFamily: { heading: ['Varela Round', 'sans-serif'], body: ['Nunito Sans', 'sans-serif'] }Both rounded and friendly. Perfect for soft UI designs.
      20Premium SansSans + SansSatoshiGeneral Sanspremium, modern, clean, sophisticated, versatile, balancedPremium brands, modern agencies, SaaS, portfolios, startupshttps://fonts.google.com/share?selection.family=DM+Sans:wght@400;500;700@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap');fontFamily: { sans: ['DM Sans', 'sans-serif'] }Note: Satoshi/General Sans on Fontshare. DM Sans as Google alternative.
      21Vietnamese FriendlySans + SansBe Vietnam ProNoto Sansvietnamese, international, readable, clean, multilingual, accessibleVietnamese sites, multilingual apps, international productshttps://fonts.google.com/share?selection.family=Be+Vietnam+Pro:wght@300;400;500;600;700|Noto+Sans:wght@300;400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@300;400;500;600;700&family=Noto+Sans:wght@300;400;500;600;700&display=swap');fontFamily: { sans: ['Be Vietnam Pro', 'Noto Sans', 'sans-serif'] }Be Vietnam Pro excellent Vietnamese support. Noto as fallback.
      22Japanese ElegantSerif + SansNoto Serif JPNoto Sans JPjapanese, elegant, traditional, modern, multilingual, readableJapanese sites, Japanese restaurants, cultural sites, anime/mangahttps://fonts.google.com/share?selection.family=Noto+Sans+JP:wght@300;400;500;700|Noto+Serif+JP:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700&family=Noto+Serif+JP:wght@400;500;600;700&display=swap');fontFamily: { serif: ['Noto Serif JP', 'serif'], sans: ['Noto Sans JP', 'sans-serif'] }Noto fonts excellent Japanese support. Traditional + modern feel.
      23Korean ModernSans + SansNoto Sans KRNoto Sans KRkorean, modern, clean, professional, multilingual, readableKorean sites, K-beauty, K-pop, Korean businesses, multilingualhttps://fonts.google.com/share?selection.family=Noto+Sans+KR:wght@300;400;500;700@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap');fontFamily: { sans: ['Noto Sans KR', 'sans-serif'] }Clean Korean typography. Single font with weight variations.
      24Chinese TraditionalSerif + SansNoto Serif TCNoto Sans TCchinese, traditional, elegant, cultural, multilingual, readableTraditional Chinese sites, cultural content, Taiwan/Hong Kong marketshttps://fonts.google.com/share?selection.family=Noto+Sans+TC:wght@300;400;500;700|Noto+Serif+TC:wght@400;500;600;700@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;400;500;700&family=Noto+Serif+TC:wght@400;500;600;700&display=swap');fontFamily: { serif: ['Noto Serif TC', 'serif'], sans: ['Noto Sans TC', 'sans-serif'] }Traditional Chinese character support. Elegant pairing.
      25Chinese SimplifiedSans + SansNoto Sans SCNoto Sans SCchinese, simplified, modern, professional, multilingual, readableSimplified Chinese sites, mainland China market, business appshttps://fonts.google.com/share?selection.family=Noto+Sans+SC:wght@300;400;500;700@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap');fontFamily: { sans: ['Noto Sans SC', 'sans-serif'] }Simplified Chinese support. Clean modern look.
      26Arabic ElegantSerif + SansNoto Naskh ArabicNoto Sans Arabicarabic, elegant, traditional, cultural, RTL, readableArabic sites, Middle East market, Islamic content, bilingual siteshttps://fonts.google.com/share?selection.family=Noto+Naskh+Arabic:wght@400;500;600;700|Noto+Sans+Arabic:wght@300;400;500;700@import url('https://fonts.googleapis.com/css2?family=Noto+Naskh+Arabic:wght@400;500;600;700&family=Noto+Sans+Arabic:wght@300;400;500;700&display=swap');fontFamily: { serif: ['Noto Naskh Arabic', 'serif'], sans: ['Noto Sans Arabic', 'sans-serif'] }RTL support. Naskh for traditional, Sans for modern Arabic.
      27Thai ModernSans + SansNoto Sans ThaiNoto Sans Thaithai, modern, readable, clean, multilingual, accessibleThai sites, Southeast Asia, tourism, Thai restaurantshttps://fonts.google.com/share?selection.family=Noto+Sans+Thai:wght@300;400;500;700@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@300;400;500;700&display=swap');fontFamily: { sans: ['Noto Sans Thai', 'sans-serif'] }Clean Thai typography. Excellent readability.

      Preview truncated.

    • ui-reasoning.csv30.3 KB
      NoUI_CategoryRecommended_PatternStyle_PriorityColor_MoodTypography_MoodKey_EffectsDecision_RulesAnti_PatternsSeverity
      1SaaS (General)Hero + Features + CTAGlassmorphism + Flat DesignTrust blue + Accent contrastProfessional + HierarchySubtle hover (200-250ms) + Smooth transitions{"if_ux_focused": "prioritize-minimalism", "if_data_heavy": "add-glassmorphism"}Excessive animation + Dark mode by defaultHIGH
      2Micro SaaSMinimal & Direct + DemoFlat Design + Vibrant & BlockVibrant primary + White spaceBold + Clean typographyLarge CTA hover (300ms) + Scroll reveal{"if_quick_onboarding": "reduce-steps", "if_demo_available": "feature-interactive-demo"}Complex onboarding flow + Cluttered layoutHIGH
      3E-commerceFeature-Rich ShowcaseVibrant & Block-basedBrand primary + Success greenEngaging + Clear hierarchyCard hover lift (200ms) + Scale effect{"if_luxury": "switch-to-liquid-glass", "if_conversion_focused": "add-urgency-colors"}Flat design without depth + Text-heavy pagesHIGH
      4E-commerce LuxuryFeature-Rich ShowcaseLiquid Glass + GlassmorphismPremium colors + Minimal accentElegant + Refined typographyChromatic aberration + Fluid animations (400-600ms){"if_checkout": "emphasize-trust", "if_hero_needed": "use-3d-hyperrealism"}Vibrant & Block-based + Playful colorsHIGH
      5Healthcare AppSocial Proof-FocusedNeumorphism + Accessible & EthicalCalm blue + Health greenReadable + Large type (16px+)Soft box-shadow + Smooth press (150ms){"must_have": "wcag-aaa-compliance", "if_medication": "red-alert-colors"}Bright neon colors + Motion-heavy animations + AI purple/pink gradientsHIGH
      6Fintech/CryptoConversion-OptimizedGlassmorphism + Dark Mode (OLED)Dark tech colors + Vibrant accentsModern + Confident typographyReal-time chart animations + Alert pulse/glow{"must_have": "security-badges", "if_real_time": "add-streaming-data"}Light backgrounds + No security indicatorsHIGH
      7EducationFeature-Rich ShowcaseClaymorphism + Micro-interactionsPlayful colors + Clear hierarchyFriendly + Engaging typographySoft press (200ms) + Fluffy elements{"if_gamification": "add-progress-animation", "if_children": "increase-playfulness"}Dark modes + Complex jargonMEDIUM
      8Portfolio/PersonalStorytelling-DrivenMotion-Driven + MinimalismBrand primary + ArtisticExpressive + Variable typographyParallax (3-5 layers) + Scroll-triggered reveals{"if_creative_field": "add-brutalism", "if_minimal_portfolio": "reduce-motion"}Corporate templates + Generic layoutsMEDIUM
      9Government/PublicMinimal & DirectAccessible & Ethical + MinimalismProfessional blue + High contrastClear + Large typographyClear focus rings (3-4px) + Skip links{"must_have": "wcag-aaa", "must_have": "keyboard-navigation"}Ornate design + Low contrast + Motion effects + AI purple/pink gradientsHIGH
      10Fintech (Banking)Trust & AuthorityMinimalism + Accessible & EthicalNavy + Trust Blue + GoldProfessional + TrustworthySmooth state transitions + Number animations{"must_have": "security-first", "if_dashboard": "use-dark-mode"}Playful design + Unclear fees + AI purple/pink gradientsHIGH
      11Social Media AppFeature-Rich ShowcaseVibrant & Block-based + Motion-DrivenVibrant + Engagement colorsModern + Bold typographyLarge scroll animations + Icon animations{"if_engagement_metric": "add-motion", "if_content_focused": "minimize-chrome"}Heavy skeuomorphism + Accessibility ignoredMEDIUM
      12Startup LandingHero-Centric + TrustMotion-Driven + Vibrant & BlockBold primaries + Accent contrastModern + Energetic typographyScroll-triggered animations + Parallax{"if_pre_launch": "use-waitlist-pattern", "if_video_ready": "add-hero-video"}Static design + No video + Poor mobileHIGH
      13GamingFeature-Rich Showcase3D & Hyperrealism + Retro-FuturismVibrant + Neon + ImmersiveBold + Impactful typographyWebGL 3D rendering + Glitch effects{"if_competitive": "add-real-time-stats", "if_casual": "increase-playfulness"}Minimalist design + Static assetsHIGH
      14Creative AgencyStorytelling-DrivenBrutalism + Motion-DrivenBold primaries + Artistic freedomBold + Expressive typographyCRT scanlines + Neon glow + Glitch effects{"must_have": "case-studies", "if_boutique": "increase-artistic-freedom"}Corporate minimalism + Hidden portfolioHIGH
      15Wellness/Mental HealthSocial Proof-FocusedNeumorphism + Accessible & EthicalCalm Pastels + Trust colorsCalming + Readable typographySoft press + Breathing animations{"must_have": "privacy-first", "if_meditation": "add-breathing-animation"}Bright neon + Motion overloadHIGH
      16Restaurant/FoodHero-Centric + ConversionVibrant & Block-based + Motion-DrivenWarm colors (Orange Red Brown)Appetizing + Clear typographyFood image reveal + Menu hover effects{"must_have": "high_quality_images", "if_delivery": "emphasize-speed"}Low-quality imagery + Outdated hoursHIGH
      17Real EstateHero-Centric + Feature-RichGlassmorphism + MinimalismTrust Blue + Gold + WhiteProfessional + Confident3D property tour zoom + Map hover{"if_luxury": "add-3d-models", "must_have": "map-integration"}Poor photos + No virtual toursHIGH
      18Travel/TourismStorytelling-Driven + HeroAurora UI + Motion-DrivenVibrant destination + Sky BlueInspirational + EngagingDestination parallax + Itinerary animations{"if_experience_focused": "use-storytelling", "must_have": "mobile-booking"}Generic photos + Complex bookingHIGH
      19SaaS DashboardData-Dense DashboardData-Dense + Heat MapCool to Hot gradients + Neutral greyClear + Readable typographyHover tooltips + Chart zoom + Real-time pulse{"must_have": "real-time-updates", "if_large_dataset": "prioritize-performance"}Ornate design + Slow renderingHIGH
      20B2B SaaS EnterpriseFeature-Rich ShowcaseTrust & Authority + MinimalProfessional blue + Neutral greyFormal + Clear typographySubtle section transitions + Feature reveals{"must_have": "case-studies", "must_have": "roi-messaging"}Playful design + Hidden features + AI purple/pink gradientsHIGH
      21Music/EntertainmentFeature-Rich ShowcaseDark Mode (OLED) + Vibrant & Block-basedDark (#121212) + Vibrant accents + Album art colorsModern + Bold typographyWaveform visualization + Playlist animations{"must_have": "audio-player-ux", "if_discovery_focused": "add-playlist-recommendations"}Cluttered layout + Poor audio player UXHIGH
      22Video Streaming/OTTHero-Centric + Feature-RichDark Mode (OLED) + Motion-DrivenDark bg + Poster colors + Brand accentBold + Engaging typographyVideo player animations + Content carousel (parallax){"must_have": "continue-watching", "if_personalized": "add-recommendations"}Static layout + Slow video playerHIGH
      23Job Board/RecruitmentConversion-Optimized + Feature-RichFlat Design + MinimalismProfessional Blue + Success Green + NeutralClear + Professional typographySearch/filter animations + Application flow{"must_have": "advanced-search", "if_salary_focused": "highlight-compensation"}Outdated forms + Hidden filtersHIGH
      24Marketplace (P2P)Feature-Rich Showcase + Social ProofVibrant & Block-based + Flat DesignTrust colors + Category colors + Success greenModern + Engaging typographyReview star animations + Listing hover effects{"must_have": "seller-profiles", "must_have": "secure-payment"}Low trust signals + Confusing layoutHIGH
      25Logistics/DeliveryFeature-Rich Showcase + Real-TimeMinimalism + Flat DesignBlue (#2563EB) + Orange (tracking) + GreenClear + Functional typographyReal-time tracking animation + Status pulse{"must_have": "tracking-map", "must_have": "delivery-updates"}Static tracking + No map integration + AI purple/pink gradientsHIGH
      26Agriculture/Farm TechFeature-Rich ShowcaseOrganic Biophilic + Flat DesignEarth Green (#4A7C23) + Brown + Sky BlueClear + Informative typographyData visualization + Weather animations{"must_have": "sensor-dashboard", "if_crop_focused": "add-health-indicators"}Generic design + Ignored accessibility + AI purple/pink gradientsMEDIUM
      27Construction/ArchitectureHero-Centric + Feature-RichMinimalism + 3D & HyperrealismGrey (#4A4A4A) + Orange (safety) + Blueprint BlueProfessional + Bold typography3D model viewer + Timeline animations{"must_have": "project-portfolio", "if_team_collaboration": "add-real-time-updates"}2D-only layouts + Poor image quality + AI purple/pink gradientsHIGH

      Preview truncated.

    • ux-guidelines.csv18.3 KB
      NoCategoryIssuePlatformDescriptionDoDon'tCode Example GoodCode Example BadSeverity
      1NavigationSmooth ScrollWebAnchor links should scroll smoothly to target sectionUse scroll-behavior: smooth on html elementJump directly without transitionhtml { scroll-behavior: smooth; }<a href='#section'> without CSSHigh
      2NavigationSticky NavigationWebFixed nav should not obscure contentAdd padding-top to body equal to nav heightLet nav overlap first section contentpt-20 (if nav is h-20)No padding compensationMedium
      3NavigationActive StateAllCurrent page/section should be visually indicatedHighlight active nav item with color/underlineNo visual feedback on current locationtext-primary border-b-2All links same styleMedium
      4NavigationBack ButtonMobileUsers expect back to work predictablyPreserve navigation history properlyBreak browser/app back button behaviorhistory.pushState()location.replace()High
      5NavigationDeep LinkingAllURLs should reflect current state for sharingUpdate URL on state/view changesStatic URLs for dynamic contentUse query params or hashSingle URL for all statesMedium
      6NavigationBreadcrumbsWebShow user location in site hierarchyUse for sites with 3+ levels of depthUse for flat single-level sitesHome > Category > ProductOnly on deep nested pagesLow
      7AnimationExcessive MotionAllToo many animations cause distraction and motion sicknessAnimate 1-2 key elements per view maximumAnimate everything that movesSingle hero animationanimate-bounce on 5+ elementsHigh
      8AnimationDuration TimingAllAnimations should feel responsive not sluggishUse 150-300ms for micro-interactionsUse animations longer than 500ms for UItransition-all duration-200duration-1000Medium
      9AnimationReduced MotionAllRespect user's motion preferencesCheck prefers-reduced-motion media queryIgnore accessibility motion settings@media (prefers-reduced-motion: reduce)No motion query checkHigh
      10AnimationLoading StatesAllShow feedback during async operationsUse skeleton screens or spinnersLeave UI frozen with no feedbackanimate-pulse skeletonBlank screen while loadingHigh
      11AnimationHover vs TapAllHover effects don't work on touch devicesUse click/tap for primary interactionsRely only on hover for important actionsonClick handleronMouseEnter onlyHigh
      12AnimationContinuous AnimationAllInfinite animations are distractingUse for loading indicators onlyUse for decorative elementsanimate-spin on loaderanimate-bounce on iconsMedium
      13AnimationTransform PerformanceWebSome CSS properties trigger expensive repaintsUse transform and opacity for animationsAnimate width/height/top/left propertiestransform: translateY()top: 10px animationMedium
      14AnimationEasing FunctionsAllLinear motion feels roboticUse ease-out for entering ease-in for exitingUse linear for UI transitionsease-outlinearLow
      15LayoutZ-Index ManagementWebStacking context conflicts cause hidden elementsDefine z-index scale system (10 20 30 50)Use arbitrary large z-index valuesz-10 z-20 z-50z-[9999]High
      16LayoutOverflow HiddenWebHidden overflow can clip important contentTest all content fits within containersBlindly apply overflow-hiddenoverflow-auto with scrolloverflow-hidden truncating contentMedium
      17LayoutFixed PositioningWebFixed elements can overlap or be inaccessibleAccount for safe areas and other fixed elementsStack multiple fixed elements carelesslyFixed nav + fixed bottom with gapMultiple overlapping fixed elementsMedium
      18LayoutStacking ContextWebNew stacking contexts reset z-indexUnderstand what creates new stacking contextExpect z-index to work across contextsParent with z-index isolates childrenz-index: 9999 not workingMedium
      19LayoutContent JumpingWebLayout shift when content loads is jarringReserve space for async contentLet images/content push layout aroundaspect-ratio or fixed heightNo dimensions on imagesHigh
      20LayoutViewport UnitsWeb100vh can be problematic on mobile browsersUse dvh or account for mobile browser chromeUse 100vh for full-screen mobile layoutsmin-h-dvh or min-h-screenh-screen on mobileMedium
      21LayoutContainer WidthWebContent too wide is hard to readLimit max-width for text content (65-75ch)Let text span full viewport widthmax-w-prose or max-w-3xlFull width paragraphsMedium
      22TouchTouch Target SizeMobileSmall buttons are hard to tap accuratelyMinimum 44x44px touch targetsTiny clickable areasmin-h-[44px] min-w-[44px]w-6 h-6 buttonsHigh
      23TouchTouch SpacingMobileAdjacent touch targets need adequate spacingMinimum 8px gap between touch targetsTightly packed clickable elementsgap-2 between buttonsgap-0 or gap-1Medium
      24TouchGesture ConflictsMobileCustom gestures can conflict with systemAvoid horizontal swipe on main contentOverride system gesturesVertical scroll primaryHorizontal swipe carousel onlyMedium
      25TouchTap DelayMobile300ms tap delay feels laggyUse touch-action CSS or fastclickDefault mobile tap handlingtouch-action: manipulationNo touch optimizationMedium
      26TouchPull to RefreshMobileAccidental refresh is frustratingDisable where not neededEnable by default everywhereoverscroll-behavior: containDefault overscrollLow
      27TouchHaptic FeedbackMobileTactile feedback improves interaction feelUse for confirmations and important actionsOveruse vibration feedbacknavigator.vibrate(10)Vibrate on every tapLow

      Preview truncated.

    • web-interface.csv7.30 KB
      NoCategoryIssueKeywordsPlatformDescriptionDoDon'tCode Example GoodCode Example BadSeverity
      1AccessibilityIcon Button Labelsicon button aria-labelWebIcon-only buttons must have accessible namesAdd aria-label to icon buttonsIcon button without label<button aria-label='Close'><XIcon /></button><button><XIcon /></button>Critical
      2AccessibilityForm Control Labelsform input label ariaWebAll form controls need labels or aria-labelUse label element or aria-labelInput without accessible name<label for='email'>Email</label><input id='email' /><input placeholder='Email' />Critical
      3AccessibilityKeyboard Handlerskeyboard onclick onkeydownWebInteractive elements must support keyboard interactionAdd onKeyDown alongside onClickClick-only interaction<div onClick={fn} onKeyDown={fn} tabIndex={0}><div onClick={fn}>High
      4AccessibilitySemantic HTMLsemantic button a labelWebUse semantic HTML before ARIA attributesUse button/a/label elementsDiv with role attribute<button onClick={fn}>Submit</button><div role='button' onClick={fn}>Submit</div>High
      5AccessibilityAria Livearia-live polite asyncWebAsync updates need aria-live for screen readersAdd aria-live='polite' for dynamic contentSilent async updates<div aria-live='polite'>{status}</div><div>{status}</div> // no announcementMedium
      6AccessibilityDecorative Iconsaria-hidden decorative iconWebDecorative icons should be hidden from screen readersAdd aria-hidden='true' to decorative iconsDecorative icon announced<Icon aria-hidden='true' /><Icon /> // announced as 'image'Medium
      7FocusVisible Focus Statesfocus-visible outline ringWebAll interactive elements need visible focus statesUse :focus-visible with ring/outlineNo focus indicationfocus-visible:ring-2 focus-visible:ring-blue-500outline-none // no replacementCritical
      8FocusNever Remove Outlineoutline-none focus replacementWebNever remove outline without providing replacementReplace outline with visible alternativeRemove outline completelyfocus:outline-none focus:ring-2focus:outline-none // nothing elseCritical
      9FocusCheckbox Radio Hit Targetcheckbox radio label targetWebCheckbox/radio must share hit target with labelWrap input and label togetherSeparate tiny checkbox<label class='flex gap-2'><input type='checkbox' /><span>Option</span></label><input type='checkbox' id='x' /><label for='x'>Option</label>Medium
      10FormsAutocomplete Attributeautocomplete input formWebInputs need autocomplete attribute for autofillAdd appropriate autocomplete valueMissing autocomplete<input autocomplete='email' type='email' /><input type='email' />High
      11FormsSemantic Input Typesinput type email tel urlWebUse semantic input type attributesUse email/tel/url/number typestext type for everything<input type='email' /><input type='text' /> // for emailMedium
      12FormsNever Block Pastepaste onpaste passwordWebNever prevent paste functionalityAllow paste on all inputsBlock paste on password/code<input type='password' /><input onPaste={e => e.preventDefault()} />High
      13FormsSpellcheck Disablespellcheck email codeWebDisable spellcheck on emails and codesSet spellcheck='false' on codesSpellcheck on technical input<input spellCheck='false' type='email' /><input type='email' /> // red squigglesLow
      14FormsSubmit Button Enabledsubmit button disabled loadingWebKeep submit enabled and show spinner during requestsShow loading spinner keep enabledDisable button during submit<button>{loading ? <Spinner /> : 'Submit'}</button><button disabled={loading}>Submit</button>Medium
      15FormsInline Errorserror message inline focusWebShow error messages inline near the problem fieldInline error with focus on first errorSingle error at top<input /><span class='text-red-500'>{error}</span><div class='error'>{allErrors}</div> // at topHigh
      16PerformanceVirtualize Listsvirtualize list 50 itemsWebVirtualize lists exceeding 50 itemsUse virtual list for large datasetsRender all items<VirtualList items={items} />items.map(item => <Item />)High
      17PerformanceAvoid Layout Readslayout read render getboundingclientrectWebAvoid layout reads during render phaseRead layout in effects or callbacksgetBoundingClientRect in renderuseEffect(() => { el.getBoundingClientRect() })const rect = el.getBoundingClientRect() // in renderMedium
      18PerformanceBatch DOM Operationsbatch dom write readWebGroup DOM operations to minimize reflowsBatch writes then readsInterleave reads and writeswrites.forEach(w => w()); reads.forEach(r => r())write(); read(); write(); read(); // thrashingMedium
      19PerformancePreconnect CDNpreconnect link cdnWebAdd preconnect links for CDN domainsPreconnect to known domains<link rel='preconnect' href='https://cdn.example.com' />// no preconnect hintLow
      20PerformanceLazy Load Imageslazy loading image below-foldWebLazy-load images below the foldUse loading='lazy' for below-fold imagesLoad all images eagerly<img loading='lazy' src='...' /><img src='...' /> // above fold onlyMedium
      21StateURL Reflects Stateurl state query paramsWebURL should reflect current UI stateSync filters/tabs/pagination to URLState only in memory?tab=settings&page=2useState only // lost on refreshHigh
      22StateDeep Linkingdeep link stateful componentWebStateful components should support deep-linkingEnable sharing current view via URLNo shareable staterouter.push({ query: { ...filters } })setFilters(f) // not in URLMedium
      23StateConfirm Destructive Actionsconfirm destructive delete modalWebDestructive actions require confirmationShow confirmation dialog before deleteDelete without confirmationif (confirm('Delete?')) delete()onClick={delete} // no confirmationHigh
      24TypographyProper Unicodeunicode ellipsis quotesWebUse proper Unicode charactersUse ... curly quotes proper dashesASCII approximations'Hello...' with proper ellipsis'Hello...' with three dotsLow
      25TypographyText Overflowtruncate line-clamp overflowWebHandle text overflow properlyUse truncate/line-clamp/break-wordsText overflows container<p class='truncate'>Long text...</p><p>Long text...</p> // overflowsMedium
      26TypographyNon-Breaking Spacesnbsp unit brandWebUse non-breaking spaces for units and brand namesUse &nbsp; between number and unit10&nbsp;kg or Next.js&nbsp;1410 kg // may wrapLow
      27Anti-PatternNo Zoom Disableviewport zoom disableWebNever disable zoom in viewport metaAllow user zoom<meta name='viewport' content='width=device-width'><meta name='viewport' content='maximum-scale=1'>Critical

      Preview truncated.

  • scripts/3 files
    • core.py9.99 KB
      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      """
      UI/UX Pro Max Core - BM25 search engine for UI/UX style guides
      """
      
      import csv
      import re
      from pathlib import Path
      from math import log
      from collections import defaultdict
      
      # ============ CONFIGURATION ============
      DATA_DIR = Path(__file__).parent.parent / "data"
      MAX_RESULTS = 3
      
      CSV_CONFIG = {
          "style": {
              "file": "styles.csv",
              "search_cols": ["Style Category", "Keywords", "Best For", "Type", "AI Prompt Keywords"],
              "output_cols": ["Style Category", "Type", "Keywords", "Primary Colors", "Effects & Animation", "Best For", "Performance", "Accessibility", "Framework Compatibility", "Complexity", "AI Prompt Keywords", "CSS/Technical Keywords", "Implementation Checklist", "Design System Variables"]
          },
          "color": {
              "file": "colors.csv",
              "search_cols": ["Product Type", "Notes"],
              "output_cols": ["Product Type", "Primary (Hex)", "Secondary (Hex)", "CTA (Hex)", "Background (Hex)", "Text (Hex)", "Notes"]
          },
          "chart": {
              "file": "charts.csv",
              "search_cols": ["Data Type", "Keywords", "Best Chart Type", "Accessibility Notes"],
              "output_cols": ["Data Type", "Keywords", "Best Chart Type", "Secondary Options", "Color Guidance", "Accessibility Notes", "Library Recommendation", "Interactive Level"]
          },
          "landing": {
              "file": "landing.csv",
              "search_cols": ["Pattern Name", "Keywords", "Conversion Optimization", "Section Order"],
              "output_cols": ["Pattern Name", "Keywords", "Section Order", "Primary CTA Placement", "Color Strategy", "Conversion Optimization"]
          },
          "product": {
              "file": "products.csv",
              "search_cols": ["Product Type", "Keywords", "Primary Style Recommendation", "Key Considerations"],
              "output_cols": ["Product Type", "Keywords", "Primary Style Recommendation", "Secondary Styles", "Landing Page Pattern", "Dashboard Style (if applicable)", "Color Palette Focus"]
          },
          "ux": {
              "file": "ux-guidelines.csv",
              "search_cols": ["Category", "Issue", "Description", "Platform"],
              "output_cols": ["Category", "Issue", "Platform", "Description", "Do", "Don't", "Code Example Good", "Code Example Bad", "Severity"]
          },
          "typography": {
              "file": "typography.csv",
              "search_cols": ["Font Pairing Name", "Category", "Mood/Style Keywords", "Best For", "Heading Font", "Body Font"],
              "output_cols": ["Font Pairing Name", "Category", "Heading Font", "Body Font", "Mood/Style Keywords", "Best For", "Google Fonts URL", "CSS Import", "Tailwind Config", "Notes"]
          },
          "icons": {
              "file": "icons.csv",
              "search_cols": ["Category", "Icon Name", "Keywords", "Best For"],
              "output_cols": ["Category", "Icon Name", "Keywords", "Library", "Import Code", "Usage", "Best For", "Style"]
          },
          "react": {
              "file": "react-performance.csv",
              "search_cols": ["Category", "Issue", "Keywords", "Description"],
              "output_cols": ["Category", "Issue", "Platform", "Description", "Do", "Don't", "Code Example Good", "Code Example Bad", "Severity"]
          },
          "web": {
              "file": "web-interface.csv",
              "search_cols": ["Category", "Issue", "Keywords", "Description"],
              "output_cols": ["Category", "Issue", "Platform", "Description", "Do", "Don't", "Code Example Good", "Code Example Bad", "Severity"]
          }
      }
      
      STACK_CONFIG = {
          "html-tailwind": {"file": "stacks/html-tailwind.csv"},
          "react": {"file": "stacks/react.csv"},
          "nextjs": {"file": "stacks/nextjs.csv"},
          "astro": {"file": "stacks/astro.csv"},
          "vue": {"file": "stacks/vue.csv"},
          "nuxtjs": {"file": "stacks/nuxtjs.csv"},
          "nuxt-ui": {"file": "stacks/nuxt-ui.csv"},
          "svelte": {"file": "stacks/svelte.csv"},
          "swiftui": {"file": "stacks/swiftui.csv"},
          "react-native": {"file": "stacks/react-native.csv"},
          "flutter": {"file": "stacks/flutter.csv"},
          "shadcn": {"file": "stacks/shadcn.csv"},
          "jetpack-compose": {"file": "stacks/jetpack-compose.csv"}
      }
      
      # Common columns for all stacks
      _STACK_COLS = {
          "search_cols": ["Category", "Guideline", "Description", "Do", "Don't"],
          "output_cols": ["Category", "Guideline", "Description", "Do", "Don't", "Code Good", "Code Bad", "Severity", "Docs URL"]
      }
      
      AVAILABLE_STACKS = list(STACK_CONFIG.keys())
      
      
      # ============ BM25 IMPLEMENTATION ============
      class BM25:
          """BM25 ranking algorithm for text search"""
      
          def __init__(self, k1=1.5, b=0.75):
              self.k1 = k1
              self.b = b
              self.corpus = []
              self.doc_lengths = []
              self.avgdl = 0
              self.idf = {}
              self.doc_freqs = defaultdict(int)
              self.N = 0
      
          def tokenize(self, text):
              """Lowercase, split, remove punctuation, filter short words"""
              text = re.sub(r'[^\w\s]', ' ', str(text).lower())
              return [w for w in text.split() if len(w) > 2]
      
          def fit(self, documents):
              """Build BM25 index from documents"""
              self.corpus = [self.tokenize(doc) for doc in documents]
              self.N = len(self.corpus)
              if self.N == 0:
                  return
              self.doc_lengths = [len(doc) for doc in self.corpus]
              self.avgdl = sum(self.doc_lengths) / self.N
      
              for doc in self.corpus:
                  seen = set()
                  for word in doc:
                      if word not in seen:
                          self.doc_freqs[word] += 1
                          seen.add(word)
      
              for word, freq in self.doc_freqs.items():
                  self.idf[word] = log((self.N - freq + 0.5) / (freq + 0.5) + 1)
      
          def score(self, query):
              """Score all documents against query"""
              query_tokens = self.tokenize(query)
              scores = []
      
              for idx, doc in enumerate(self.corpus):
                  score = 0
                  doc_len = self.doc_lengths[idx]
                  term_freqs = defaultdict(int)
                  for word in doc:
                      term_freqs[word] += 1
      
                  for token in query_tokens:
                      if token in self.idf:
                          tf = term_freqs[token]
                          idf = self.idf[token]
                          numerator = tf * (self.k1 + 1)
                          denominator = tf + self.k1 * (1 - self.b + self.b * doc_len / self.avgdl)
                          score += idf * numerator / denominator
      
                  scores.append((idx, score))
      
              return sorted(scores, key=lambda x: x[1], reverse=True)
      
      
      # ============ SEARCH FUNCTIONS ============
      def _load_csv(filepath):
          """Load CSV and return list of dicts"""
          with open(filepath, 'r', encoding='utf-8') as f:
              return list(csv.DictReader(f))
      
      
      def _search_csv(filepath, search_cols, output_cols, query, max_results):
          """Core search function using BM25"""
          if not filepath.exists():
              return []
      
          data = _load_csv(filepath)
      
          # Build documents from search columns
          documents = [" ".join(str(row.get(col, "")) for col in search_cols) for row in data]
      
          # BM25 search
          bm25 = BM25()
          bm25.fit(documents)
          ranked = bm25.score(query)
      
          # Get top results with score > 0
          results = []
          for idx, score in ranked[:max_results]:
              if score > 0:
                  row = data[idx]
                  results.append({col: row.get(col, "") for col in output_cols if col in row})
      
          return results
      
      
      def detect_domain(query):
          """Auto-detect the most relevant domain from query"""
          query_lower = query.lower()
      
          domain_keywords = {
              "color": ["color", "palette", "hex", "#", "rgb"],
              "chart": ["chart", "graph", "visualization", "trend", "bar", "pie", "scatter", "heatmap", "funnel"],
              "landing": ["landing", "page", "cta", "conversion", "hero", "testimonial", "pricing", "section"],
              "product": ["saas", "ecommerce", "e-commerce", "fintech", "healthcare", "gaming", "portfolio", "crypto", "dashboard"],
              "style": ["style", "design", "ui", "minimalism", "glassmorphism", "neumorphism", "brutalism", "dark mode", "flat", "aurora", "prompt", "css", "implementation", "variable", "checklist", "tailwind"],
              "ux": ["ux", "usability", "accessibility", "wcag", "touch", "scroll", "animation", "keyboard", "navigation", "mobile"],
              "typography": ["font", "typography", "heading", "serif", "sans"],
              "icons": ["icon", "icons", "lucide", "heroicons", "symbol", "glyph", "pictogram", "svg icon"],
              "react": ["react", "next.js", "nextjs", "suspense", "memo", "usecallback", "useeffect", "rerender", "bundle", "waterfall", "barrel", "dynamic import", "rsc", "server component"],
              "web": ["aria", "focus", "outline", "semantic", "virtualize", "autocomplete", "form", "input type", "preconnect"]
          }
      
          scores = {domain: sum(1 for kw in keywords if kw in query_lower) for domain, keywords in domain_keywords.items()}
          best = max(scores, key=scores.get)
          return best if scores[best] > 0 else "style"
      
      
      def search(query, domain=None, max_results=MAX_RESULTS):
          """Main search function with auto-domain detection"""
          if domain is None:
              domain = detect_domain(query)
      
          config = CSV_CONFIG.get(domain, CSV_CONFIG["style"])
          filepath = DATA_DIR / config["file"]
      
          if not filepath.exists():

      Preview truncated.

    • design_system.py42.6 KB
      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      """
      Design System Generator - Aggregates search results and applies reasoning
      to generate comprehensive design system recommendations.
      
      Usage:
          from design_system import generate_design_system
          result = generate_design_system("SaaS dashboard", "My Project")
          
          # With persistence (Master + Overrides pattern)
          result = generate_design_system("SaaS dashboard", "My Project", persist=True)
          result = generate_design_system("SaaS dashboard", "My Project", persist=True, page="dashboard")
      """
      
      import csv
      import json
      import os
      from datetime import datetime
      from pathlib import Path
      from core import search, DATA_DIR
      
      
      # ============ CONFIGURATION ============
      REASONING_FILE = "ui-reasoning.csv"
      
      SEARCH_CONFIG = {
          "product": {"max_results": 1},
          "style": {"max_results": 3},
          "color": {"max_results": 2},
          "landing": {"max_results": 2},
          "typography": {"max_results": 2}
      }
      
      
      # ============ DESIGN SYSTEM GENERATOR ============
      class DesignSystemGenerator:
          """Generates design system recommendations from aggregated searches."""
      
          def __init__(self):
              self.reasoning_data = self._load_reasoning()
      
          def _load_reasoning(self) -> list:
              """Load reasoning rules from CSV."""
              filepath = DATA_DIR / REASONING_FILE
              if not filepath.exists():
                  return []
              with open(filepath, 'r', encoding='utf-8') as f:
                  return list(csv.DictReader(f))
      
          def _multi_domain_search(self, query: str, style_priority: list = None) -> dict:
              """Execute searches across multiple domains."""
              results = {}
              for domain, config in SEARCH_CONFIG.items():
                  if domain == "style" and style_priority:
                      # For style, also search with priority keywords
                      priority_query = " ".join(style_priority[:2]) if style_priority else query
                      combined_query = f"{query} {priority_query}"
                      results[domain] = search(combined_query, domain, config["max_results"])
                  else:
                      results[domain] = search(query, domain, config["max_results"])
              return results
      
          def _find_reasoning_rule(self, category: str) -> dict:
              """Find matching reasoning rule for a category."""
              category_lower = category.lower()
      
              # Try exact match first
              for rule in self.reasoning_data:
                  if rule.get("UI_Category", "").lower() == category_lower:
                      return rule
      
              # Try partial match
              for rule in self.reasoning_data:
                  ui_cat = rule.get("UI_Category", "").lower()
                  if ui_cat in category_lower or category_lower in ui_cat:
                      return rule
      
              # Try keyword match
              for rule in self.reasoning_data:
                  ui_cat = rule.get("UI_Category", "").lower()
                  keywords = ui_cat.replace("/", " ").replace("-", " ").split()
                  if any(kw in category_lower for kw in keywords):
                      return rule
      
              return {}
      
          def _apply_reasoning(self, category: str, search_results: dict) -> dict:
              """Apply reasoning rules to search results."""
              rule = self._find_reasoning_rule(category)
      
              if not rule:
                  return {
                      "pattern": "Hero + Features + CTA",
                      "style_priority": ["Minimalism", "Flat Design"],
                      "color_mood": "Professional",
                      "typography_mood": "Clean",
                      "key_effects": "Subtle hover transitions",
                      "anti_patterns": "",
                      "decision_rules": {},
                      "severity": "MEDIUM"
                  }
      
              # Parse decision rules JSON
              decision_rules = {}
              try:
                  decision_rules = json.loads(rule.get("Decision_Rules", "{}"))
              except json.JSONDecodeError:
                  pass
      
              return {
                  "pattern": rule.get("Recommended_Pattern", ""),
                  "style_priority": [s.strip() for s in rule.get("Style_Priority", "").split("+")],
                  "color_mood": rule.get("Color_Mood", ""),
                  "typography_mood": rule.get("Typography_Mood", ""),
                  "key_effects": rule.get("Key_Effects", ""),
                  "anti_patterns": rule.get("Anti_Patterns", ""),
                  "decision_rules": decision_rules,
                  "severity": rule.get("Severity", "MEDIUM")
              }
      
          def _select_best_match(self, results: list, priority_keywords: list) -> dict:
              """Select best matching result based on priority keywords."""
              if not results:
                  return {}
      
              if not priority_keywords:
                  return results[0]
      
              # First: try exact style name match
              for priority in priority_keywords:
                  priority_lower = priority.lower().strip()
                  for result in results:
                      style_name = result.get("Style Category", "").lower()
                      if priority_lower in style_name or style_name in priority_lower:
                          return result
      
              # Second: score by keyword match in all fields
              scored = []
              for result in results:
                  result_str = str(result).lower()
                  score = 0
                  for kw in priority_keywords:
                      kw_lower = kw.lower().strip()
                      # Higher score for style name match
                      if kw_lower in result.get("Style Category", "").lower():
                          score += 10
                      # Lower score for keyword field match
                      elif kw_lower in result.get("Keywords", "").lower():
                          score += 3
                      # Even lower for other field matches
                      elif kw_lower in result_str:
                          score += 1
                  scored.append((score, result))
      
              scored.sort(key=lambda x: x[0], reverse=True)
              return scored[0][1] if scored and scored[0][0] > 0 else results[0]
      
          def _extract_results(self, search_result: dict) -> list:
              """Extract results list from search result dict."""
              return search_result.get("results", [])
      
          def generate(self, query: str, project_name: str = None) -> dict:
              """Generate complete design system recommendation."""
              # Step 1: First search product to get category
              product_result = search(query, "product", 1)
              product_results = product_result.get("results", [])
              category = "General"
              if product_results:
                  category = product_results[0].get("Product Type", "General")
      
              # Step 2: Get reasoning rules for this category
              reasoning = self._apply_reasoning(category, {})
              style_priority = reasoning.get("style_priority", [])
      
              # Step 3: Multi-domain search with style priority hints
              search_results = self._multi_domain_search(query, style_priority)
              search_results["product"] = product_result  # Reuse product search
      
              # Step 4: Select best matches from each domain using priority
              style_results = self._extract_results(search_results.get("style", {}))
              color_results = self._extract_results(search_results.get("color", {}))
              typography_results = self._extract_results(search_results.get("typography", {}))
              landing_results = self._extract_results(search_results.get("landing", {}))
      
              best_style = self._select_best_match(style_results, reasoning.get("style_priority", []))
              best_color = color_results[0] if color_results else {}
              best_typography = typography_results[0] if typography_results else {}
              best_landing = landing_results[0] if landing_results else {}
      
              # Step 5: Build final recommendation
              # Combine effects from both reasoning and style search
              style_effects = best_style.get("Effects & Animation", "")
              reasoning_effects = reasoning.get("key_effects", "")
              combined_effects = style_effects if style_effects else reasoning_effects
      
              return {
                  "project_name": project_name or query.upper(),
                  "category": category,
                  "pattern": {
                      "name": best_landing.get("Pattern Name", reasoning.get("pattern", "Hero + Features + CTA")),
                      "sections": best_landing.get("Section Order", "Hero > Features > CTA"),
                      "cta_placement": best_landing.get("Primary CTA Placement", "Above fold"),
                      "color_strategy": best_landing.get("Color Strategy", ""),
                      "conversion": best_landing.get("Conversion Optimization", "")
                  },
                  "style": {
                      "name": best_style.get("Style Category", "Minimalism"),
                      "type": best_style.get("Type", "General"),
                      "effects": style_effects,
                      "keywords": best_style.get("Keywords", ""),
                      "best_for": best_style.get("Best For", ""),
                      "performance": best_style.get("Performance", ""),
                      "accessibility": best_style.get("Accessibility", "")
                  },
                  "colors": {
                      "primary": best_color.get("Primary (Hex)", "#2563EB"),
                      "secondary": best_color.get("Secondary (Hex)", "#3B82F6"),
                      "cta": best_color.get("CTA (Hex)", "#F97316"),
                      "background": best_color.get("Background (Hex)", "#F8FAFC"),

      Preview truncated.

    • search.py4.98 KB
      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      """
      UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
      Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
             python search.py "<query>" --design-system [-p "Project Name"]
             python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
      
      Domains: style, prompt, color, chart, landing, product, ux, typography
      Stacks: html-tailwind, react, nextjs
      
      Persistence (Master + Overrides pattern):
        --persist    Save design system to design-system/MASTER.md
        --page       Also create a page-specific override file in design-system/pages/
      """
      
      import argparse
      from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
      from design_system import generate_design_system, persist_design_system
      
      
      def format_output(result):
          """Format results for Claude consumption (token-optimized)"""
          if "error" in result:
              return f"Error: {result['error']}"
      
          output = []
          if result.get("stack"):
              output.append(f"## UI Pro Max Stack Guidelines")
              output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
          else:
              output.append(f"## UI Pro Max Search Results")
              output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
          output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
      
          for i, row in enumerate(result['results'], 1):
              output.append(f"### Result {i}")
              for key, value in row.items():
                  value_str = str(value)
                  if len(value_str) > 300:
                      value_str = value_str[:300] + "..."
                  output.append(f"- **{key}:** {value_str}")
              output.append("")
      
          return "\n".join(output)
      
      
      if __name__ == "__main__":
          parser = argparse.ArgumentParser(description="UI Pro Max Search")
          parser.add_argument("query", help="Search query")
          parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
          parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
          parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
          parser.add_argument("--json", action="store_true", help="Output as JSON")
          # Design system generation
          parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
          parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
          parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
          # Persistence (Master + Overrides pattern)
          parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
          parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
          parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
      
          args = parser.parse_args()
      
          # Design system takes priority
          if args.design_system:
              result = generate_design_system(
                  args.query, 
                  args.project_name, 
                  args.format,
                  persist=args.persist,
                  page=args.page,
                  output_dir=args.output_dir
              )
              print(result)
              
              # Print persistence confirmation
              if args.persist:
                  project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
                  print("\n" + "=" * 60)
                  print(f"✅ Design system persisted to design-system/{project_slug}/")
                  print(f"   📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
                  if args.page:
                      page_filename = args.page.lower().replace(' ', '-')
                      print(f"   📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
                  print("")
                  print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
                  print(f"   If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
                  print("=" * 60)
          # Stack search
          elif args.stack:
              result = search_stack(args.query, args.stack, args.max_results)
              if args.json:
                  import json
                  print(json.dumps(result, indent=2, ensure_ascii=False))
              else:
                  print(format_output(result))
          # Domain search
          else:
              result = search(args.query, args.domain, args.max_results)
              if args.json:
                  import json
                  print(json.dumps(result, indent=2, ensure_ascii=False))
              else:
                  print(format_output(result))
      
  • SKILL.md10.2 KB

Instructions


name: ui-ux-pro-max description: UI/UX design intelligence with searchable database

ui-ux-pro-max

Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 56 font pairings, 98 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.

Prerequisites

Check if Python is installed:

python3 --version || python --version

If Python is not installed, install it based on user's OS:

macOS:

brew install python3

Ubuntu/Debian:

sudo apt update && sudo apt install python3

Windows:

winget install Python.Python.3.12

How to Use This Skill

When user requests UI/UX work (design, build, create, implement, review, fix, improve), follow this workflow:

Note: run the commands below from this skill directory (the folder containing SKILL.md).

Step 1: Analyze User Requirements

Extract key information from user request:

  • Product type: SaaS, e-commerce, portfolio, dashboard, landing page, etc.
  • Style keywords: minimal, playful, professional, elegant, dark mode, etc.
  • Industry: healthcare, fintech, gaming, education, etc.
  • Stack: React, Vue, Next.js, or default to html-tailwind

Step 2: Generate Design System (REQUIRED)

Always start with --design-system to get comprehensive recommendations with reasoning:

python3 scripts/search.py "<product_type> <industry> <keywords>" --design-system [-p "Project Name"]

This command:

  1. Searches 5 domains in parallel (product, style, color, landing, typography)
  2. Applies reasoning rules from ui-reasoning.csv to select best matches
  3. Returns complete design system: pattern, style, colors, typography, effects
  4. Includes anti-patterns to avoid

Example:

python3 scripts/search.py "beauty spa wellness service" --design-system -p "Serenity Spa"

Step 2b: Persist Design System (Master + Overrides Pattern)

To save the design system for hierarchical retrieval across sessions, add --persist:

python3 scripts/search.py "<query>" --design-system --persist -p "Project Name"

This creates:

  • design-system/MASTER.md — Global Source of Truth with all design rules
  • design-system/pages/ — Folder for page-specific overrides

With page-specific override:

python3 scripts/search.py "<query>" --design-system --persist -p "Project Name" --page "dashboard"

This also creates:

  • design-system/pages/dashboard.md — Page-specific deviations from Master

How hierarchical retrieval works:

  1. When building a specific page (e.g., "Checkout"), first check design-system/pages/checkout.md
  2. If the page file exists, its rules override the Master file
  3. If not, use design-system/MASTER.md exclusively

Step 3: Supplement with Detailed Searches (as needed)

After getting the design system, use domain searches to get additional details:

python3 scripts/search.py "<keyword>" --domain <domain> [-n <max_results>]

When to use detailed searches:

NeedDomainExample
More style optionsstyle--domain style "glassmorphism dark"
Chart recommendationschart--domain chart "real-time dashboard"
UX best practicesux--domain ux "animation accessibility"
Alternative fontstypography--domain typography "elegant luxury"
Landing structurelanding--domain landing "hero social-proof"

Step 4: Stack Guidelines (Default: html-tailwind)

Get implementation-specific best practices. If user doesn't specify a stack, default to html-tailwind.

python3 scripts/search.py "<keyword>" --stack html-tailwind

Available stacks: html-tailwind, react, nextjs, vue, svelte, swiftui, react-native, flutter, shadcn, jetpack-compose


Search Reference

Available Domains

DomainUse ForExample Keywords
productProduct type recommendationsSaaS, e-commerce, portfolio, healthcare, beauty, service
styleUI styles, colors, effectsglassmorphism, minimalism, dark mode, brutalism
typographyFont pairings, Google Fontselegant, playful, professional, modern
colorColor palettes by product typesaas, ecommerce, healthcare, beauty, fintech, service
landingPage structure, CTA strategieshero, hero-centric, testimonial, pricing, social-proof
chartChart types, library recommendationstrend, comparison, timeline, funnel, pie
uxBest practices, anti-patternsanimation, accessibility, z-index, loading
reactReact/Next.js performancewaterfall, bundle, suspense, memo, rerender, cache
webWeb interface guidelinesaria, focus, keyboard, semantic, virtualize
promptAI prompts, CSS keywords(style name)

Available Stacks

StackFocus
html-tailwindTailwind utilities, responsive, a11y (DEFAULT)
reactState, hooks, performance, patterns
nextjsSSR, routing, images, API routes
vueComposition API, Pinia, Vue Router
svelteRunes, stores, SvelteKit
swiftuiViews, State, Navigation, Animation
react-nativeComponents, Navigation, Lists
flutterWidgets, State, Layout, Theming
shadcnshadcn/ui components, theming, forms, patterns
jetpack-composeComposables, Modifiers, State Hoisting, Recomposition

Example Workflow

User request: "Làm landing page cho dịch vụ chăm sóc da chuyên nghiệp"

Step 1: Analyze Requirements

  • Product type: Beauty/Spa service
  • Style keywords: elegant, professional, soft
  • Industry: Beauty/Wellness
  • Stack: html-tailwind (default)

Step 2: Generate Design System (REQUIRED)

python3 scripts/search.py "beauty spa wellness service elegant" --design-system -p "Serenity Spa"

Output: Complete design system with pattern, style, colors, typography, effects, and anti-patterns.

Step 3: Supplement with Detailed Searches (as needed)

# Get UX guidelines for animation and accessibility
python3 scripts/search.py "animation accessibility" --domain ux

# Get alternative typography options if needed
python3 scripts/search.py "elegant luxury serif" --domain typography

Step 4: Stack Guidelines

python3 scripts/search.py "layout responsive form" --stack html-tailwind

Then: Synthesize design system + detailed searches and implement the design.


Output Formats

The --design-system flag supports two output formats:

# ASCII box (default) - best for terminal display
python3 scripts/search.py "fintech crypto" --design-system

# Markdown - best for documentation
python3 scripts/search.py "fintech crypto" --design-system -f markdown

Tips for Better Results

  1. Be specific with keywords - "healthcare SaaS dashboard" > "app"
  2. Search multiple times - Different keywords reveal different insights
  3. Combine domains - Style + Typography + Color = Complete design system
  4. Always check UX - Search "animation", "z-index", "accessibility" for common issues
  5. Use stack flag - Get implementation-specific best practices
  6. Iterate - If first search doesn't match, try different keywords

Common Rules for Professional UI

These are frequently overlooked issues that make UI look unprofessional:

Icons & Visual Elements

RuleDoDon't
No emoji iconsUse SVG icons (Heroicons, Lucide, Simple Icons)Use emojis like 🎨 🚀 ⚙️ as UI icons
Stable hover statesUse color/opacity transitions on hoverUse scale transforms that shift layout
Correct brand logosResearch official SVG from Simple IconsGuess or use incorrect logo paths
Consistent icon sizingUse fixed viewBox (24x24) with w-6 h-6Mix different icon sizes randomly

Interaction & Cursor

RuleDoDon't
Cursor pointerAdd cursor-pointer to all clickable/hoverable cardsLeave default cursor on interactive elements
Hover feedbackProvide visual feedback (color, shadow, border)No indication element is interactive
Smooth transitionsUse transition-colors duration-200Instant state changes or too slow (>500ms)

Light/Dark Mode Contrast

RuleDoDon't
Glass card light modeUse bg-white/80 or higher opacityUse bg-white/10 (too transparent)
Text contrast lightUse #0F172A (slate-900) for textUse #94A3B8 (slate-400) for body text
Muted text lightUse #475569 (slate-600) minimumUse gray-400 or lighter
Border visibilityUse border-gray-200 in light modeUse border-white/10 (invisible)

Layout & Spacing

RuleDoDon't
Floating navbarAdd top-4 left-4 right-4 spacingStick navbar to top-0 left-0 right-0
Content paddingAccount for fixed navbar heightLet content hide behind fixed elements
Consistent max-widthUse same max-w-6xl or max-w-7xlMix different container widths

Pre-Delivery Checklist

Before delivering UI code, verify these items:

Visual Quality

  • No emojis used as icons (use SVG instead)
  • All icons from consistent icon set (Heroicons/Lucide)
  • Brand logos are correct (verified from Simple Icons)
  • Hover states don't cause layout shift
  • Use theme colors directly (bg-primary) not var() wrapper

Interaction

  • All clickable elements have cursor-pointer
  • Hover states provide clear visual feedback
  • Transitions are smooth (150-300ms)
  • Focus states visible for keyboard navigation

Light/Dark Mode

  • Light mode text has sufficient contrast (4.5:1 minimum)
  • Glass/transparent elements visible in light mode
  • Borders visible in both modes
  • Test both modes before delivery

Layout

  • Floating elements have proper spacing from edges
  • No content hidden behind fixed navbars
  • Responsive at 375px, 768px, 1024px, 1440px
  • No horizontal scroll on mobile

Accessibility

  • All images have alt text
  • Form inputs have labels
  • Color is not the only indicator
  • prefers-reduced-motion respected