<!DOCTYPE html>
<html class="geistsans_81192321-module__3aIXOa__variable geistmono_8e2790ea-module__9xRtkG__variable" lang="en">
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1" name="viewport"/>
  <link as="font" crossorigin="" href="assets/_next/static/media/GeistMono_Variable.p.0ce97b8a.woff2" rel="preload" type="font/woff2"/>
  <link as="font" crossorigin="" href="assets/_next/static/media/Geist_Variable-s.p.781b491f.woff2" rel="preload" type="font/woff2"/>
  <link data-precedence="next" href="assets/_next/static/chunks/bf4d0772edc45a57.css" rel="stylesheet"/>
  <link data-precedence="next" href="assets/_next/static/chunks/b67ab6a5753123d5.css" rel="stylesheet"/>
  <link as="script" fetchpriority="low" href="assets/_next/static/chunks/1e84d05343e7951b.js" rel="preload"/>
  <script async="" src="assets/_next/static/chunks/fae7a506afe43c0b.js">
  </script>
  <script async="" src="assets/_next/static/chunks/cd4ae7dcb2820144.js">
  </script>
  <script async="" src="assets/_next/static/chunks/f5cfd556eee98d9b.js">
  </script>
  <script async="" src="assets/_next/static/chunks/2460a4afaceb3fb4.js">
  </script>
  <script async="" src="assets/_next/static/chunks/d68a2a3fecec302b.js">
  </script>
  <script async="" src="assets/_next/static/chunks/850b20e1e19e7501.js">
  </script>
  <script async="" src="assets/_next/static/chunks/9272a237dfe9d9b9.js">
  </script>
  <script async="" src="assets/_next/static/chunks/61693d842fe8a897.js">
  </script>
  <script async="" src="assets/_next/static/chunks/a2182356d940300d.js">
  </script>
  <script async="" src="assets/_next/static/chunks/d2c700829b0e0455.js">
  </script>
  <script async="" src="assets/_next/static/chunks/7888ea115165507f.js">
  </script>
  <script async="" src="assets/_next/static/chunks/dbc5b79921893155.js">
  </script>
  <script async="" src="assets/_next/static/chunks/aec0796deb54c373.js">
  </script>
  <script async="" src="assets/_next/static/chunks/42d65a62c76cf27b.js">
  </script>
  <script async="" src="assets/_next/static/chunks/7e1a14f2c2c6a077.js">
  </script>
  <script async="" src="assets/_next/static/chunks/e9c6ee13546263fe.js">
  </script>
  <script async="" src="assets/_next/static/chunks/6427aed7cfff761a.js">
  </script>
  <script async="" src="assets/_next/static/chunks/f47fb23d53b856d8.js">
  </script>
  <script async="" src="assets/_next/static/chunks/6d83110f3b53ff4f.js">
  </script>
  <script async="" src="assets/_next/static/chunks/b255f8d029655958.js">
  </script>
  <meta content="" name="next-size-adjust"/>
  <link href="assets/images/product-icons/repo-light-32x32.png" rel="icon" sizes="any"/>
  <link href="assets/images/product-icons/repo-light-32x32.png" rel="icon" sizes="any"/>
  <title>
   Turborepo
  </title>
  <meta content="Turborepo is a build system optimized for JavaScript and TypeScript, written in Rust." name="description"/>
  <link href="https://turbo.build" rel="canonical"/>
  <meta content="Turborepo" property="og:title"/>
  <meta content="Turborepo is a build system optimized for JavaScript and TypeScript, written in Rust." property="og:description"/>
  <meta content="https://turborepo.com" property="og:url"/>
  <meta content="Turborepo" property="og:site_name"/>
  <meta content="https://turborepo.com/api/og" property="og:image"/>
  <meta content="summary_large_image" name="twitter:card"/>
  <meta content="Turborepo" name="twitter:title"/>
  <meta content="Turborepo is a build system optimized for JavaScript and TypeScript, written in Rust." name="twitter:description"/>
  <meta content="https://turborepo.com/api/og" name="twitter:image"/>
  <link href="assets/favicon.ico" rel="icon" sizes="720x720" type="image/x-icon"/>
  <link href="assets/icon.png" rel="icon" sizes="720x720" type="image/png"/>
  <link href="assets/apple-icon.png" rel="apple-touch-icon" sizes="720x720" type="image/png"/>
  <script nomodule="" src="assets/_next/static/chunks/ec548c7ce307cf6d.js">
  </script>
  <meta content="Single Page Copier CLI Tool (JS Mode: clean)" name="generator"/>
 </head>
 <body class="flex min-h-svh flex-col antialiased">
  <div hidden="">
   <!--$-->
   <!--/$-->
  </div>
  <script src="assets/js/inline/inline-1.js">
  </script>
  <main class="flex flex-1 flex-col p-0" id="nd-home-layout">
   <div class="sticky top-0 z-40 flex h-[var(--nav-height)] justify-between border-b bg-background-100 px-4 pr-0 md:pr-4">
    <div class="flex w-full select-none flex-row items-center">
     <div class="flex flex-shrink-0 flex-row items-center gap-2">
      <div class="flex items-center gap-2">
       <a href="https://vercel.com/" rel="noopener" target="_blank">
        <svg class="-translate-y-[0.5px] w-[18px] h-[18px] fill-black dark:fill-white" fill="none" height="22" viewbox="0 0 235 203" xmlns="http://www.w3.org/2000/svg">
         <path d="M117.082 0L234.164 202.794H0L117.082 0Z" fill="currentColor">
         </path>
        </svg>
       </a>
       <svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:var(--ds-gray-alpha-400)" viewbox="0 0 16 16" width="16">
        <path clip-rule="evenodd" d="M4.01526 15.3939L4.3107 14.7046L10.3107 0.704556L10.6061 0.0151978L11.9849 0.606077L11.6894 1.29544L5.68942 15.2954L5.39398 15.9848L4.01526 15.3939Z" fill="currentColor" fill-rule="evenodd">
        </path>
       </svg>
       <a class="flex flex-row items-center gap-2" href="/">
        <svg class="h-[24px] w-auto hidden dark:block" fill="none" height="76" viewbox="0 0 473 76" width="473">
         <path d="M130.998 30.6566V22.3773H91.0977V30.6566H106.16V58.1876H115.935V30.6566H130.998Z" fill="white">
         </path>
         <path d="M153.542 58.7362C165.811 58.7362 172.544 52.5018 172.544 42.2276V22.3773H162.768V41.2799C162.768 47.0156 159.776 50.2574 153.542 50.2574C147.307 50.2574 144.315 47.0156 144.315 41.2799V22.3773H134.539V42.2276C134.539 52.5018 141.272 58.7362 153.542 58.7362Z" fill="white">
         </path>
         <path d="M187.508 46.3173H197.234L204.914 58.1876H216.136L207.458 45.2699C212.346 43.5243 215.338 39.6341 215.338 34.3473C215.338 26.6666 209.603 22.3773 200.874 22.3773H177.732V58.1876H187.508V46.3173ZM187.508 38.5867V30.5568H200.376C203.817 30.5568 205.712 32.0531 205.712 34.5967C205.712 36.9907 203.817 38.5867 200.376 38.5867H187.508Z" fill="white">
         </path>
         <path d="M219.887 58.1876H245.472C253.452 58.1876 258.041 54.3971 258.041 48.0629C258.041 43.8236 255.348 40.9308 252.156 39.6341C254.35 38.5867 257.043 36.0929 257.043 32.1528C257.043 25.8187 252.555 22.3773 244.625 22.3773H219.887V58.1876ZM229.263 36.3922V30.3074H243.627C246.32 30.3074 247.817 31.3548 247.817 33.3498C247.817 35.3448 246.32 36.3922 243.627 36.3922H229.263ZM229.263 43.7238H244.525C247.168 43.7238 248.615 45.0206 248.615 46.9657C248.615 48.9108 247.168 50.2076 244.525 50.2076H229.263V43.7238Z" fill="white">
         </path>
         <path d="M281.942 21.7788C269.423 21.7788 260.396 29.6092 260.396 40.2824C260.396 50.9557 269.423 58.7861 281.942 58.7861C294.461 58.7861 303.438 50.9557 303.438 40.2824C303.438 29.6092 294.461 21.7788 281.942 21.7788ZM281.942 30.2576C288.525 30.2576 293.463 34.1478 293.463 40.2824C293.463 46.4171 288.525 50.3073 281.942 50.3073C275.359 50.3073 270.421 46.4171 270.421 40.2824C270.421 34.1478 275.359 30.2576 281.942 30.2576Z" fill="white">
         </path>
         <path d="M317.526 46.3173H327.251L334.932 58.1876H346.154L337.476 45.2699C342.364 43.5243 345.356 39.6341 345.356 34.3473C345.356 26.6666 339.62 22.3773 330.892 22.3773H307.75V58.1876H317.526V46.3173ZM317.526 38.5867V30.5568H330.394C333.835 30.5568 335.73 32.0531 335.73 34.5967C335.73 36.9907 333.835 38.5867 330.394 38.5867H317.526Z" fill="white">
         </path>
         <path d="M349.904 22.3773V58.1876H384.717V49.9083H359.48V44.0729H381.874V35.9932H359.48V30.6566H384.717V22.3773H349.904Z" fill="white">
         </path>
         <path d="M399.204 46.7662H412.221C420.95 46.7662 426.685 42.5767 426.685 34.5967C426.685 26.5668 420.95 22.3773 412.221 22.3773H389.428V58.1876H399.204V46.7662ZM399.204 38.6366V30.5568H411.673C415.164 30.5568 417.059 32.0531 417.059 34.5967C417.059 37.0904 415.164 38.6366 411.673 38.6366H399.204Z" fill="white">
         </path>
         <path d="M450.948 21.7788C438.43 21.7788 429.402 29.6092 429.402 40.2824C429.402 50.9557 438.43 58.7861 450.948 58.7861C463.467 58.7861 472.444 50.9557 472.444 40.2824C472.444 29.6092 463.467 21.7788 450.948 21.7788ZM450.948 30.2576C457.532 30.2576 462.469 34.1478 462.469 40.2824C462.469 46.4171 457.532 50.3073 450.948 50.3073C444.365 50.3073 439.427 46.4171 439.427 40.2824C439.427 34.1478 444.365 30.2576 450.948 30.2576Z" fill="white">
         </path>
         <path d="M38.5017 18.0956C27.2499 18.0956 18.0957 27.2498 18.0957 38.5016C18.0957 49.7534 27.2499 58.9076 38.5017 58.9076C49.7535 58.9076 58.9077 49.7534 58.9077 38.5016C58.9077 27.2498 49.7535 18.0956 38.5017 18.0956ZM38.5017 49.0618C32.6687 49.0618 27.9415 44.3346 27.9415 38.5016C27.9415 32.6686 32.6687 27.9414 38.5017 27.9414C44.3347 27.9414 49.0619 32.6686 49.0619 38.5016C49.0619 44.3346 44.3347 49.0618 38.5017 49.0618Z" fill="white">
         </path>
         <path clip-rule="evenodd" d="M40.2115 14.744V7.125C56.7719 8.0104 69.9275 21.7208 69.9275 38.5016C69.9275 55.2824 56.7719 68.989 40.2115 69.8782V62.2592C52.5539 61.3776 62.3275 51.0644 62.3275 38.5016C62.3275 25.9388 52.5539 15.6256 40.2115 14.744ZM20.5048 54.0815C17.233 50.3043 15.124 45.4935 14.7478 40.2115H7.125C7.5202 47.6025 10.4766 54.3095 15.1088 59.4737L20.501 54.0815H20.5048ZM36.7916 69.8782V62.2592C31.5058 61.883 26.695 59.7778 22.9178 56.5022L17.5256 61.8944C22.6936 66.5304 29.4006 69.483 36.7878 69.8782H36.7916Z" fill="url(#paint0_linear_2028_477)" fill-rule="evenodd">
         </path>
         <defs>
          <lineargradient gradientunits="userSpaceOnUse" id="paint0_linear_2028_477" x1="41.443" x2="10.5567" y1="11.5372" y2="42.4236">
           <stop stop-color="#0096FF">
           </stop>
           <stop offset="1" stop-color="#FF1E56">
           </stop>
          </lineargradient>
         </defs>
        </svg>
        <svg class="h-[24px] w-auto dark:hidden" fill="none" height="76" viewbox="0 0 473 76" width="473">
         <path d="M130.998 30.6565V22.3773H91.0977V30.6565H106.16V58.1875H115.935V30.6565H130.998Z" fill="black">
         </path>
         <path d="M153.542 58.7362C165.811 58.7362 172.544 52.5018 172.544 42.2275V22.3773H162.768V41.2799C162.768 47.0155 159.776 50.2574 153.542 50.2574C147.307 50.2574 144.315 47.0155 144.315 41.2799V22.3773H134.539V42.2275C134.539 52.5018 141.272 58.7362 153.542 58.7362Z" fill="black">
         </path>
         <path d="M187.508 46.3173H197.234L204.914 58.1875H216.136L207.458 45.2699C212.346 43.5243 215.338 39.634 215.338 34.3473C215.338 26.6665 209.603 22.3773 200.874 22.3773H177.732V58.1875H187.508V46.3173ZM187.508 38.5867V30.5568H200.376C203.817 30.5568 205.712 32.053 205.712 34.5967C205.712 36.9907 203.817 38.5867 200.376 38.5867H187.508Z" fill="black">
         </path>
         <path d="M219.887 58.1875H245.472C253.452 58.1875 258.041 54.397 258.041 48.0629C258.041 43.8235 255.348 40.9308 252.156 39.634C254.35 38.5867 257.043 36.0929 257.043 32.1528C257.043 25.8187 252.555 22.3773 244.625 22.3773H219.887V58.1875ZM229.263 36.3922V30.3074H243.627C246.32 30.3074 247.817 31.3548 247.817 33.3498C247.817 35.3448 246.32 36.3922 243.627 36.3922H229.263ZM229.263 43.7238H244.525C247.168 43.7238 248.615 45.0205 248.615 46.9657C248.615 48.9108 247.168 50.2075 244.525 50.2075H229.263V43.7238Z" fill="black">
         </path>
         <path d="M281.942 21.7788C269.423 21.7788 260.396 29.6092 260.396 40.2824C260.396 50.9557 269.423 58.786 281.942 58.786C294.461 58.786 303.438 50.9557 303.438 40.2824C303.438 29.6092 294.461 21.7788 281.942 21.7788ZM281.942 30.2575C288.525 30.2575 293.463 34.1478 293.463 40.2824C293.463 46.417 288.525 50.3073 281.942 50.3073C275.359 50.3073 270.421 46.417 270.421 40.2824C270.421 34.1478 275.359 30.2575 281.942 30.2575Z" fill="black">
         </path>
         <path d="M317.526 46.3173H327.251L334.932 58.1875H346.154L337.476 45.2699C342.364 43.5243 345.356 39.634 345.356 34.3473C345.356 26.6665 339.62 22.3773 330.892 22.3773H307.75V58.1875H317.526V46.3173ZM317.526 38.5867V30.5568H330.394C333.835 30.5568 335.73 32.053 335.73 34.5967C335.73 36.9907 333.835 38.5867 330.394 38.5867H317.526Z" fill="black">
         </path>
         <path d="M349.904 22.3773V58.1875H384.717V49.9083H359.48V44.0729H381.874V35.9932H359.48V30.6565H384.717V22.3773H349.904Z" fill="black">
         </path>
         <path d="M399.204 46.7662H412.221C420.95 46.7662 426.685 42.5767 426.685 34.5967C426.685 26.5668 420.95 22.3773 412.221 22.3773H389.428V58.1875H399.204V46.7662ZM399.204 38.6365V30.5568H411.673C415.164 30.5568 417.059 32.053 417.059 34.5967C417.059 37.0904 415.164 38.6365 411.673 38.6365H399.204Z" fill="black">
         </path>
         <path d="M450.948 21.7788C438.43 21.7788 429.402 29.6092 429.402 40.2824C429.402 50.9557 438.43 58.786 450.948 58.786C463.467 58.786 472.444 50.9557 472.444 40.2824C472.444 29.6092 463.467 21.7788 450.948 21.7788ZM450.948 30.2575C457.532 30.2575 462.469 34.1478 462.469 40.2824C462.469 46.417 457.532 50.3073 450.948 50.3073C444.365 50.3073 439.427 46.417 439.427 40.2824C439.427 34.1478 444.365 30.2575 450.948 30.2575Z" fill="black">
         </path>
         <path d="M38.5017 18.0956C27.2499 18.0956 18.0957 27.2498 18.0957 38.5016C18.0957 49.7534 27.2499 58.9076 38.5017 58.9076C49.7535 58.9076 58.9077 49.7534 58.9077 38.5016C58.9077 27.2498 49.7535 18.0956 38.5017 18.0956ZM38.5017 49.0618C32.6687 49.0618 27.9415 44.3346 27.9415 38.5016C27.9415 32.6686 32.6687 27.9414 38.5017 27.9414C44.3347 27.9414 49.0619 32.6686 49.0619 38.5016C49.0619 44.3346 44.3347 49.0618 38.5017 49.0618Z" fill="black">
         </path>
         <path clip-rule="evenodd" d="M40.2115 14.744V7.125C56.7719 8.0104 69.9275 21.7208 69.9275 38.5016C69.9275 55.2824 56.7719 68.989 40.2115 69.8782V62.2592C52.5539 61.3776 62.3275 51.0644 62.3275 38.5016C62.3275 25.9388 52.5539 15.6256 40.2115 14.744ZM20.5048 54.0815C17.233 50.3043 15.124 45.4935 14.7478 40.2115H7.125C7.5202 47.6025 10.4766 54.3095 15.1088 59.4737L20.501 54.0815H20.5048ZM36.7916 69.8782V62.2592C31.5058 61.883 26.695 59.7778 22.9178 56.5022L17.5256 61.8944C22.6936 66.5304 29.4006 69.483 36.7878 69.8782H36.7916Z" fill="url(#paint0_linear_2028_252)" fill-rule="evenodd">
         </path>
         <defs>
          <lineargradient gradientunits="userSpaceOnUse" id="paint0_linear_2028_252" x1="41.443" x2="10.5567" y1="11.5372" y2="42.4236">
           <stop stop-color="#0096FF">
           </stop>
           <stop offset="1" stop-color="#FF1E56">
           </stop>
          </lineargradient>
         </defs>
        </svg>
       </a>
      </div>
     </div>
     <div class="ml-auto flex md:hidden">
      <button class="block lg:hidden p-4 pr-2">
       <svg height="16" stroke-linejoin="round" viewbox="0 0 16 16" width="16">
        <path clip-rule="evenodd" d="M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0Z" fill="currentColor" fill-rule="evenodd">
        </path>
       </svg>
      </button>
      <button aria-controls="radix-«Rkmnd3b»" aria-expanded="false" aria-haspopup="dialog" class="p-4 pl-2" data-state="closed" type="button">
       <svg height="16" stroke-linejoin="round" style="color:currentcolor" viewbox="0 0 16 16" width="16">
        <path clip-rule="evenodd" d="M1.75 4H1V5.5H1.75H14.25H15V4H14.25H1.75ZM1.75 10.5H1V12H1.75H14.25H15V10.5H14.25H1.75Z" fill="currentColor" fill-rule="evenodd">
        </path>
       </svg>
      </button>
     </div>
     <div class="hidden md:flex w-full justify-end md:justify-start md:pl-6">
      <nav aria-label="Main" class="relative z-10 flex max-w-max flex-1 items-center justify-center" data-orientation="horizontal" dir="ltr">
       <div style="position:relative">
        <ul class="group flex flex-1 list-none items-center justify-center gap-6 h-14 gap-3" data-orientation="horizontal" dir="ltr">
         <li class="h-full">
          <a class="flex h-full items-center text-sm text-gray-900 transition-colors duration-100 hover:text-gray-1000 data-[active=true]:text-gray-1000" data-active="false" data-radix-collection-item="" href="/docs">
           Docs
          </a>
         </li>
         <li class="h-full">
          <a class="flex h-full items-center text-sm text-gray-900 transition-colors duration-100 hover:text-gray-1000 data-[active=true]:text-gray-1000" data-active="false" data-radix-collection-item="" href="/blog">
           Blog
          </a>
         </li>
         <li class="h-full">
          <a class="flex h-full items-center text-sm text-gray-900 transition-colors duration-100 hover:text-gray-1000 data-[active=true]:text-gray-1000" data-active="false" data-radix-collection-item="" href="/showcase">
           Showcase
          </a>
         </li>
         <li class="h-full">
          <a class="flex h-full items-center text-sm text-gray-900 transition-colors duration-100 hover:text-gray-1000 data-[active=true]:text-gray-1000" data-active="false" data-radix-collection-item="" href="https://vercel.com/contact/sales?utm_source=turborepo.com&amp;utm_medium=referral&amp;utm_campaign=header-enterpriseLink">
           Enterprise
          </a>
         </li>
        </ul>
       </div>
       <div class="absolute left-0 top-[70%] flex justify-center">
       </div>
      </nav>
     </div>
    </div>
    <button class="hidden p-4 pr-2 md:pr-4 md:block lg:hidden">
     <svg height="16" stroke-linejoin="round" viewbox="0 0 16 16" width="16">
      <path clip-rule="evenodd" d="M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0Z" fill="currentColor" fill-rule="evenodd">
      </path>
     </svg>
    </button>
    <div class="hidden items-center gap-2 md:flex">
     <button aria-label="Search…" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 bg-secondary text-secondary-foreground hover:bg-secondary/80 h-9 rounded-md px-3 group border flex-row !font-normal !text-gray-800 hover:!text-gray-1000 hidden lg:block">
      <div class="text-start justify-between flex gap-2 lg:w-20 xl:w-24">
       <span>
        Search
       </span>
       <span class="inline-flex items-center justify-center rounded border border-gray-200 font-sans text-sm group-hover:border-gray-alpha-400">
        <kbd class="flex h-5 min-h-5 w-fit items-center px-1 py-0 text-center font-sans text-xs">
         <span></span>
         <span>
          K
         </span>
        </kbd>
       </span>
      </div>
     </button>
     <button aria-controls="radix-«R5mnd3b»" aria-expanded="false" aria-haspopup="dialog" aria-label="Open feedback form" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3" data-state="closed" type="button">
      Feedback
     </button>
     <a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-primary/90 h-9 rounded-md px-3" href="https://github.com/vercel/turborepo">
      <svg class="inline" height="16" stroke-linejoin="round" style="color:currentcolor" viewbox="0 0 16 16" width="16">
       <g clip-path="url(#clip0_872_3147)">
        <path clip-rule="evenodd" d="M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.22823 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z" fill="currentColor" fill-rule="evenodd">
        </path>
       </g>
       <defs>
        <clippath id="clip0_872_3147">
         <rect fill="currentColor" height="16" width="16">
         </rect>
        </clippath>
       </defs>
      </svg>
      <span>
       GitHub
      </span>
     </a>
    </div>
   </div>
   <div class="py-6 max-w-6xl px-3 sm:px-6 md:py-12 lg:px-12 mx-auto">
    <div class="grid w-full gap-0 grid-cols-1 md:grid-cols-2 relative border border-gray-400">
     <div class="absolute -top-[2px]">
      <div class="border-t-[1px] absolute w-[11px] h-[11px] -left-[6px] top-[1px] md:w-[21px] md:h-[21px] md:-left-[11px] md:top-[1px] border-gray-600">
      </div>
      <div class="border-l-[1px] absolute w-[11px] h-[11px] -top-[4px] -left-[1px] md:w-[21px] md:h-[21px] md:-top-[11px] md:-left-[1px] border-gray-600">
      </div>
     </div>
     <div class="border-0 border-gray-200 p-6 xs:p-12 relative border-b col-span-2 px-6 py-12 xs:px-6 xs:py-12 md:p-16">
      <div class="absolute top-0 bottom-0 left-0 right-0 overflow-hidden text-center flex items-center justify-center">
       <svg class="absolute margin-auto" fill="none" height="1080" viewbox="0 0 1080 1080" width="1080" xmlns="http://www.w3.org/2000/svg">
        <g opacity=".15" stroke-dasharray="4 4">
         <path d="m747.5 3.17647v1076.82353" stroke="#4f71cb">
         </path>
         <path d="m415.5 3.17647v1076.82353" stroke="#9f4c96">
         </path>
         <path d="m83.5 3.17647v1076.82353" stroke="#ef2661">
         </path>
         <path d="m830.5 3.17647v1076.82353" stroke="#3b7bd9">
         </path>
         <path d="m498.5 3.17647v1076.82353" stroke="#8b56a4">
         </path>
         <path d="m166.5 3.17647v1076.82353" stroke="#db2f6e">
         </path>
         <path d="m913.5 3.17647v1076.82353" stroke="#2885e6">
         </path>
         <path d="m581.5 3.17647v1076.82353" stroke="#775fb1">
         </path>
         <path d="m249.5 3.17647v1076.82353" stroke="#c8397c">
         </path>
         <path d="m996.5 3.17647v1076.82353" stroke="#148df3">
         </path>
         <path d="m664.5 3.17647v1076.82353" stroke="#6368be">
         </path>
         <path d="m332.5 3.17647v1076.82353" stroke="#b34288">
         </path>
        </g>
       </svg>
      </div>
      <div class="relative z-1 flex flex-col justify-center">
       <h1 class="mb-4 text-6xl font-semibold tracking-tighter text-center md:text-7xl">
        Make ship happen
       </h1>
       <p class="max-w-[380px] m-auto mb-4 font-normal text-center text-gray-900 text-lg md:text-xl">
        Turborepo is the build system for JavaScript and TypeScript codebases
       </p>
       <div class="flex justify-center mt-2 mb-10">
        <div class="relative inline-flex w-full xs:w-auto">
         <div class="absolute inset-0 rounded-lg xs:rounded-[22px] bg-gradient-to-r from-[#FF1E56] to-[#0196FF] w-full xs:w-auto">
         </div>
         <div class="relative text-center rounded-md xs:rounded-[20px] m-[2px] bg-background-100 dark:bg-black px-4 py-1.5 md:px-5 md:py-0.5 w-full xs:w-auto">
          <span class="flex flex-col gap-0 items-center xs:flex-row sm:gap-1 text-base sm:text-xl leading-tight bg-gradient-to-r from-[#FF1E56] to-[#0196FF] bg-clip-text text-transparent">
           <p class="inline-block tabular-nums min-w-[94.6875px]">
            2,934,507
           </p>
           <span>
            hours of compute saved
           </span>
          </span>
         </div>
        </div>
       </div>
       <div class="w-full flex flex-wrap h-fit gap-3 2xs:gap-2 sm:gap-4 justify-center items-center">
        <a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 text-sm sm:h-12 sm:text-base" href="/docs">
         Get started
        </a>
        <div class="snippet relative rounded-md bg-[var(--ds-background-100)] text-black dark:text-white overflow-hidden flex h-fit min-w-[160px] max-w-[180px] xs:w-auto sm:h-12 items-center border border-[var(--ds-gray-alpha-400)] justify-start font-mono bg-[var(--ds-background-100)]">
         <pre class="geist-overflow-scroll-y !bg-[var(--ds-background-100)] p-2.5 sm:pl-4 pr-12 text-sm font-mono">$ <!-- -->npm i turbo</pre>
         <button aria-label="Copy to clipboard" class="absolute right-2 top-2 p-1 sm:p-2 rounded-md hover:bg-gray-800 transition-colors" type="button">
          <span class="flex items-center justify-center">
           <svg class="lucide lucide-copy" fill="none" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg">
            <rect height="14" rx="2" ry="2" width="14" x="8" y="8">
            </rect>
            <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">
            </path>
           </svg>
          </span>
         </button>
        </div>
       </div>
      </div>
     </div>
     <div class="border-0 border-gray-200 p-6 xs:p-12 border-0 h-fit col-span-2 px-6 py-14 xs:px-6 xs:py-10 md:px-9 lg:px-12">
      <h2 class="mb-1 text-[32px] font-semibold tracking-tighter">
       Scale your workflows
      </h2>
      <p class="max-w-prose text-balance text-gray-900 text-base">
       Optimize your local and CI tasks to save years of engineering time and compute.
      </p>
      <div class="my-8 grid h-fit gap-y-12 md:grid-cols-3 md:gap-x-8">
       <div class="w-full">
        <div class="mx-auto h-[160px] xs:w-[326px] sm:w-[542px] md:w-[194px] lg:w-[255px] xl:w-[298px] xs:w-full">
        </div>
        <h3 class="mt-2 text-2xl font-semibold tracking-tighter">
         Works with any provider
        </h3>
        <p class="mt-1.5 text-gray-900 text-base md:mt-2 text-pretty">
         Integrate with any CI provider for speed at all scales
        </p>
       </div>
       <div class="w-full">
        <div class="mx-auto h-[160px] xs:w-[326px] sm:w-[542px] md:w-[194px] lg:w-[255px] xl:w-[298px] xs:w-full">
        </div>
        <h3 class="mt-2 text-2xl font-semibold tracking-tighter">
         Remote Caching
        </h3>
        <p class="mt-1.5 text-gray-900 text-base md:mt-2 text-pretty">
         Never do the same work twice
        </p>
       </div>
       <div class="w-full">
        <div class="mx-auto h-[160px] xs:w-[326px] sm:w-[542px] md:w-[194px] lg:w-[255px] xl:w-[298px] xs:w-full">
        </div>
        <h3 class="mt-2 text-2xl font-semibold tracking-tighter">
         Effortless monorepos
        </h3>
        <p class="mt-1.5 text-gray-900 text-base md:mt-2 text-pretty">
         Easily define your workflows for local development and CI
        </p>
       </div>
      </div>
     </div>
     <div class="border-0 border-gray-200 p-6 xs:p-12 col-span-2 px-6 py-14 xs:px-6 xs:py-10 md:px-9 lg:px-12">
      <div class="flex flex-col items-start justify-between gap-y-4 md:flex-row">
       <div class="flex flex-col gap-y-1">
        <h2 class="text-[32px] font-semibold tracking-tighter">
         Simple setup
        </h2>
        <p class="text-gray-900 text-copy-16 text-pretty">
         Start a new repository or migrate an existing repo incrementally in minutes.
        </p>
       </div>
       <a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 text-sm sm:h-12 sm:text-base" href="/repo/docs">
        Read the docs
        <svg height="16" stroke-linejoin="round" style="color:currentcolor" viewbox="0 0 16 16" width="16">
         <path clip-rule="evenodd" d="M9.53033 2.21968L9 1.68935L7.93934 2.75001L8.46967 3.28034L12.4393 7.25001H1.75H1V8.75001H1.75H12.4393L8.46967 12.7197L7.93934 13.25L9 14.3107L9.53033 13.7803L14.6036 8.70711C14.9941 8.31659 14.9941 7.68342 14.6036 7.2929L9.53033 2.21968Z" fill="currentColor" fill-rule="evenodd">
         </path>
        </svg>
       </a>
      </div>
      <div class="mt-6 grid w-full grid-cols-1 gap-x-4 md:grid-cols-2">
       <div class="mb-6 md:mb-0">
        <script src="assets/js/inline/inline-2.js">
        </script>
        <figure class="not-prose group fd-codeblock relative overflow-hidden rounded-lg border bg-fd-secondary/50 text-sm my-0 shiki shiki-themes css-variables css-variables" style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground);--shiki-light-bg:var(--shiki-background);--shiki-dark-bg:var(--shiki-background)" tabindex="0">
         <button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md p-2 text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground transition-opacity group-hover:opacity-100 opacity-0 absolute right-2 top-2 z-[2] backdrop-blur-md" type="button">
          <svg class="lucide lucide-check size-3.5 transition-transform scale-0" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
           <path d="M20 6 9 17l-5-5">
           </path>
          </svg>
          <svg class="lucide lucide-copy absolute size-3.5 transition-transform" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
           <rect height="14" rx="2" ry="2" width="14" x="8" y="8">
           </rect>
           <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">
           </path>
          </svg>
         </button>
         <div class="overflow-hidden" dir="ltr" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px">
          <link href="assets/css/inline/inline-1.css" rel="stylesheet"/>
          <div class="size-full rounded-[inherit] max-h-[600px]" data-radix-scroll-area-viewport="" style="overflow-x:hidden;overflow-y:hidden">
           <div style="min-width:100%;display:table">
            <pre class="p-4 focus-visible:outline-none"><code><span class="line"><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)">{</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)">  "tasks"</span><span style="--shiki-light:var(--shiki-token-punctuation);--shiki-dark:var(--shiki-token-punctuation)">:</span><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)">    "build"</span><span style="--shiki-light:var(--shiki-token-punctuation);--shiki-dark:var(--shiki-token-punctuation)">:</span><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)">      "dependsOn"</span><span style="--shiki-light:var(--shiki-token-punctuation);--shiki-dark:var(--shiki-token-punctuation)">:</span><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)"> [</span><span style="--shiki-light:var(--shiki-token-string-expression);--shiki-dark:var(--shiki-token-string-expression)">"^build"</span><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)">]</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)">    }</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)">  }</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground)">}</span></span></code></pre>
           </div>
          </div>
         </div>
        </figure>
        <span class="text-xs text-gray-900">
         Declaring a build task
        </span>
       </div>
       <div>
        <script src="assets/js/inline/inline-3.js">
        </script>
        <figure class="not-prose group fd-codeblock relative overflow-hidden rounded-lg border bg-fd-secondary/50 text-sm my-0 shiki shiki-themes css-variables css-variables" style="--shiki-light:var(--shiki-foreground);--shiki-dark:var(--shiki-foreground);--shiki-light-bg:var(--shiki-background);--shiki-dark-bg:var(--shiki-background)" tabindex="0">
         <button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md p-2 text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground transition-opacity group-hover:opacity-100 opacity-0 absolute right-2 top-2 z-[2] backdrop-blur-md" type="button">
          <svg class="lucide lucide-check size-3.5 transition-transform scale-0" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
           <path d="M20 6 9 17l-5-5">
           </path>
          </svg>
          <svg class="lucide lucide-copy absolute size-3.5 transition-transform" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
           <rect height="14" rx="2" ry="2" width="14" x="8" y="8">
           </rect>
           <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">
           </path>
          </svg>
         </button>
         <div class="overflow-hidden" dir="ltr" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px">
          <link href="assets/css/inline/inline-2.css" rel="stylesheet"/>
          <div class="size-full rounded-[inherit] max-h-[600px]" data-radix-scroll-area-viewport="" style="overflow-x:hidden;overflow-y:hidden">
           <div style="min-width:100%;display:table">
            <pre class="p-4 focus-visible:outline-none"><code><span class="line"><span style="--shiki-light:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)"># Login to Remote Cache</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)">turbo</span><span style="--shiki-light:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)"> login</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)"># Link to Remote Cache</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)">turbo</span><span style="--shiki-light:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)"> link</span></span>
<span class="line"> </span>
<span class="line"><span style="--shiki-light:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)"># Run tasks</span></span>
<span class="line"><span style="--shiki-light:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)">turbo</span><span style="--shiki-light:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)"> run</span><span style="--shiki-light:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)"> build</span></span></code></pre>
           </div>
          </div>
         </div>
        </figure>
        <span class="text-xs text-gray-900">
         Linking to Remote Cache and running tasks
        </span>
       </div>
      </div>
     </div>
     <div class="border-0 border-gray-200 p-6 xs:p-12 col-span-2 px-6 py-14 xs:px-6 xs:py-10 md:px-9 lg:px-12 border-b">
      <h2 class="text-[32px] font-semibold tracking-tighter">
       What builders say about Turborepo
      </h2>
      <div class="mb-6 mt-7 grid grid-cols-1 gap-4 min-[780px]:grid-cols-3">
       <div class="grid gap-4">
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/mattpocockuk/status/1498696992943452168" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Matt Pocock" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Matt Pocock
           </div>
           <div class="text-gray-800 text-copy-16">
            @mattpocockuk
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p class="mb-4">
           🤯 @turborepo saved us 67 HOURS of CI since we adopted it.
          </p>
          <p>
           That's a team of only 4 full-time devs at @statelyai. Nuts.
          </p>
         </div>
        </a>
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/lewisbuildsai/status/1906014322926420104" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Lewis ⚡" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="/_next/image?url=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1873766582855282688%2FOXiFZXAY_400x400.jpg&amp;w=96&amp;q=75" srcset="/_next/image?url=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1873766582855282688%2FOXiFZXAY_400x400.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1873766582855282688%2FOXiFZXAY_400x400.jpg&amp;w=96&amp;q=75 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Lewis ⚡
           </div>
           <div class="text-gray-800 text-copy-16">
            @lewisbuildsai
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p class="mb-4">
           If turborepo has a million fans, then I am one of them. If turborepo has ten fans, then I am one of them. If turborepo has only one fan then that is me. If turborepo has no fans, then that means I am no longer on earth. If the world is against turborepo, then I am against the world.
          </p>
         </div>
        </a>
       </div>
       <div class="grid gap-4">
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/housecor/status/1580923528596946944" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Cory House" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Cory House
           </div>
           <div class="text-gray-800 text-copy-16">
            @housecor
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p class="mb-4">
           I’m really enjoying @turborepo. It’s a game changer.
          </p>
          <p class="mb-4">
           With Turbo, I have an incentive to break my repo down into many small, focused packages. This way, Turbo can cache each little build. So when I hit save, only the package I changed needs to recompile.
          </p>
          <p>
           Really speeds things up!
          </p>
         </div>
        </a>
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/shreygups/status/1900284978367520817" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Shrey Gupta" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Shrey Gupta
           </div>
           <div class="text-gray-800 text-copy-16">
            @shreygups
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p>
           wait i kinda love turborepo
          </p>
         </div>
        </a>
       </div>
       <div class="grid gap-4">
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/LoadingALIAS/status/1903228609021477283" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="ALIAS" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            ALIAS
           </div>
           <div class="text-gray-800 text-copy-16">
            LoadingALIAS
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p>
           Turborepo is the best.
          </p>
         </div>
        </a>
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/HipsterSmoothie/status/1829245704386269515" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Andrew Lisowski" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Andrew Lisowski
           </div>
           <div class="text-gray-800 text-copy-16">
            @HipsterSmoothie
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p>
           Just setting up @turborepo in @DescriptApp's front-end cut our bill in half and saved us $20k
          </p>
         </div>
        </a>
        <a class="drop-shadow-xs rounded-xl border border-gray-400 bg-background-100 px-6 py-5 hover:bg-background-200 hover:drop-shadow-sm" href="https://x.com/pontusab/status/1827264818765799931" target="_blank">
         <div class="flex items-center gap-4">
          <img alt="Pontus Abrahamsson" class="h-12 w-12 rounded-full bg-gray-200" data-nimg="1" decoding="async" height="40" loading="lazy" src="assets/_next/image.jpg" srcset="assets/_next/image.jpg 1x, assets/_next/image.jpg 2x" style="color:transparent" width="40"/>
          <div class="flex flex-col">
           <div class="font-medium text-gray-1000 text-label-16">
            Pontus Abrahamsson
           </div>
           <div class="text-gray-800 text-copy-16">
            @pontusab
           </div>
          </div>
         </div>
         <div class="mt-4 text-gray-1000 text-copy-16">
          <p>
           I love a monorepo setup, having everything in one place powered by Turborepo 🔥
          </p>
         </div>
        </a>
       </div>
      </div>
     </div>
     <div class="border-0 border-gray-200 p-6 xs:p-12 col-span-2 px-6 py-14 xs:px-6 xs:py-10 md:px-9 lg:px-12">
      <div class="flex flex-col items-start gap-y-6 md:flex-row md:items-center md:justify-between md:gap-x-6">
       <h2 class="text-[32px] font-semibold tracking-tighter md:text-[40px]">
        Deploy your Turborepo today.
       </h2>
       <div class="flex flex-wrap gap-3 justify-start md:justify-end items-center">
        <a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 text-sm sm:h-12 sm:text-base" href="/docs">
         Get started
        </a>
        <div class="snippet relative rounded-md bg-[var(--ds-background-100)] text-black dark:text-white overflow-hidden flex h-fit min-w-[160px] max-w-[180px] xs:w-auto sm:h-12 items-center border border-[var(--ds-gray-alpha-400)] justify-start font-mono bg-[var(--ds-background-100)]">
         <pre class="geist-overflow-scroll-y !bg-[var(--ds-background-100)] p-2.5 sm:pl-4 pr-12 text-sm font-mono">$ <!-- -->npm i turbo</pre>
         <button aria-label="Copy to clipboard" class="absolute right-2 top-2 p-1 sm:p-2 rounded-md hover:bg-gray-800 transition-colors" type="button">
          <span class="flex items-center justify-center">
           <svg class="lucide lucide-copy" fill="none" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg">
            <rect height="14" rx="2" ry="2" width="14" x="8" y="8">
            </rect>
            <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">
            </path>
           </svg>
          </span>
         </button>
        </div>
       </div>
      </div>
     </div>
    </div>
   </div>
   <!--$-->
   <!--/$-->
  </main>
  <footer class="w-full border-t border-gray-200 bg-background-100 py-12">
   <div class="mx-auto flex w-full max-w-screen-xl flex-col gap-y-12 px-6">
    <div class="flex w-full flex-col items-start justify-between gap-y-12 md:flex-row">
     <svg class="h-6 fill-black dark:fill-white" fill="none" height="22" viewbox="0 0 235 203" xmlns="http://www.w3.org/2000/svg">
      <path d="M117.082 0L234.164 202.794H0L117.082 0Z" fill="currentColor">
      </path>
     </svg>
     <div class="grid grid-cols-[auto_1fr] gap-x-36 gap-y-12 md:auto-cols-max md:grid-flow-col md:gap-x-24">
      <div class="flex flex-col gap-y-3 text-sm">
       <h4 class="font-medium">
        Resources
       </h4>
       <ul class="flex flex-col gap-y-3 text-gray-900">
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="/blog">
          Blog
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://github.com/vercel/turborepo/releases" rel="noreferrer noopener" target="_blank">
          Releases
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="/docs">
          Docs
         </a>
        </li>
       </ul>
      </div>
      <div class="flex flex-col gap-y-3 text-sm">
       <h4 class="font-medium">
        Community
       </h4>
       <ul class="flex flex-col gap-y-3 text-gray-900">
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://github.com/vercel/turborepo" rel="noreferrer noopener" target="_blank">
          GitHub
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://community.vercel.com/tag/turborepo" rel="noreferrer noopener" target="_blank">
          Community
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://bsky.app/profile/turborepo.com" rel="noreferrer noopener" target="_blank">
          Bluesky
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://x.com/turborepo" rel="noreferrer noopener" target="_blank">
          X
         </a>
        </li>
       </ul>
      </div>
      <div class="flex flex-col gap-y-3 text-sm">
       <h4 class="font-medium">
        Vercel
       </h4>
       <ul class="flex flex-col gap-y-3 text-gray-900">
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://vercel.com/about" rel="noreferrer noopener" target="_blank">
          About
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://vercel.com/oss" rel="noreferrer noopener" target="_blank">
          Open source
         </a>
        </li>
       </ul>
      </div>
      <div class="flex flex-col gap-y-3 text-sm">
       <h4 class="font-medium">
        Legal
       </h4>
       <ul class="flex flex-col gap-y-3 text-gray-900">
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="https://vercel.com/legal/privacy-policy" rel="noreferrer noopener" target="_blank">
          Privacy
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="/terms">
          Terms
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="/governance">
          Governance
         </a>
        </li>
        <li class="transition duration-100 hover:text-gray-1000">
         <a href="/docs/telemetry">
          Telemetry
         </a>
        </li>
       </ul>
      </div>
     </div>
    </div>
   </div>
  </footer>
  <!--$!-->
  <template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING">
  </template>
  <!--/$-->
  <!--$!-->
  <template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING">
  </template>
  <!--/$-->
  <script async="" src="assets/_next/static/chunks/1e84d05343e7951b.js">
  </script>
  <script src="assets/js/inline/inline-4.js">
  </script>
  <script src="assets/js/inline/inline-5.js">
  </script>
  <script src="assets/js/inline/inline-6.js">
  </script>
  <script src="assets/js/inline/inline-7.js">
  </script>
  <script src="assets/js/inline/inline-8.js">
  </script>
  <script src="assets/js/inline/inline-9.js">
  </script>
  <script src="assets/js/inline/inline-10.js">
  </script>
  <script src="assets/js/inline/inline-11.js">
  </script>
  <script src="assets/js/inline/inline-12.js">
  </script>
  <script src="assets/js/inline/inline-13.js">
  </script>
  <script src="assets/js/inline/inline-14.js">
  </script>
 </body>
</html>