1<!DOCTYPE html> 2<html lang="en-us" class="bg-woodsmoke-1000"> 3 <head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>The AdonisJS Blog</title><meta name="description" content="Official blog for AdonisJS. Framework updates, feature announcements, tutorials, and technical articles from the team building the framework" /> 7<link rel="canonical" href="https://adonisjs.com/blog" /> 8<meta name="twitter:title" content="The AdonisJS Blog" /> 9<meta name="twitter:description" content="Official blog for AdonisJS. Framework updates, feature announcements, tutorials, and technical articles from the team building the framework" /> 10<meta name="twitter:card" content="summary_large_image" /> 11<meta name="twitter:site" content="@adonisframework" /> 12<meta name="twitter:creator" content="@adonisframework" /> 13<meta property="og:title" content="The AdonisJS Blog" /> 14<meta property="og:description" content="Official blog for AdonisJS. Framework updates, feature announcements, tutorials, and technical articles from the team building the framework" /> 15<meta property="og:url" content="https://adonisjs.com/blog" /> 16 <meta name="twitter:image" content="https://adonisjs.com/assets/blog-DH7bszCN.jpg" /> 17 <meta property="og:image" content="https://adonisjs.com/assets/blog-DH7bszCN.jpg" /> 18 19<meta property="og:type" content="article" /> 20 21<link 22 rel="apple-touch-icon" 23 sizes="57x57" 24 href="/assets/apple-icon-57x57-xYBJLDWT.png" 25/> 26<link 27 rel="apple-touch-icon" 28 sizes="60x60" 29 href="/assets/apple-icon-60x60-D6_J_159.png" 30/> 31<link 32 rel="apple-touch-icon" 33 sizes="72x72" 34 href="/assets/apple-icon-72x72-CwGQ7wCB.png" 35/> 36<link 37 rel="apple-touch-icon" 38 sizes="76x76" 39 href="/assets/apple-icon-76x76-aYOM4d7G.png" 40/> 41<link 42 rel="apple-touch-icon" 43 sizes="114x114" 44 href="/assets/apple-icon-114x114-Buyr7H-g.png" 45/> 46<link 47 rel="apple-touch-icon" 48 sizes="120x120" 49 href="/assets/apple-icon-120x120-ribyuC-s.png" 50/> 51<link 52 rel="apple-touch-icon" 53 sizes="144x144" 54 href="/assets/ms-icon-144x144-CS5pvIdW.png" 55/> 56<link 57 rel="apple-touch-icon" 58 sizes="152x152" 59 href="/assets/apple-icon-152x152-5WCCzTD-.png" 60/> 61<link 62 rel="apple-touch-icon" 63 sizes="180x180" 64 href="/assets/apple-icon-180x180-9a7N4Jr0.png" 65/> 66<link 67 rel="icon" 68 type="image/png" 69 sizes="192x192" 70 href="/assets/android-icon-192x192-BsKbegpC.png" 71/> 72<link 73 rel="icon" 74 type="image/png" 75 sizes="32x32" 76 href="/assets/favicon-32x32-B8wNBOa_.png" 77/> 78<link 79 rel="icon" 80 type="image/png" 81 sizes="96x96" 82 href="/assets/favicon-96x96-cvA9CZU9.png" 83/> 84<link 85 rel="icon" 86 type="image/png" 87 sizes="16x16" 88 href="/assets/favicon-16x16-BIWFZ2zQ.png" 89/> 90<link rel="manifest" href="/assets/icons_manifest--KzPhL4h.json" /> 91<meta name="msapplication-TileColor" content="#ffffff" /> 92<meta 93 name="msapplication-TileImage" 94 content="/assets/ms-icon-144x144-CS5pvIdW.png" 95/> 96<meta name="theme-color" content="#ffffff" /> 97 98<link rel="preload" as="style" href="/assets/app-Lcq2UOUK.css"/> 99<link rel="preload" as="style" href="/assets/app-DFPQvEMp.css"/> 100<link rel="modulepreload" href="/assets/app-DAXQQnSt.js"/> 101<link rel="stylesheet" href="/assets/app-DFPQvEMp.css"/>
102<script type="module" defer src="/assets/app-DAXQQnSt.js"></script>
102 103<link rel="stylesheet" href="/assets/app-Lcq2UOUK.css"/> 104 105 </head> 106 107 <body class="font-sans antialiased text-woodsmoke-300 relative"> 108<div x-data class="relative bg-highlighter"> 109 <p class="px-12 py-2.5 text-center text-13 sm:text-14 font-semibold text-highlighter-ink"> 110 Help shape what we build next. Take the 111 <a 112 href="https://tally.so/r/obgR8M" 113 target="_blank" 114 rel="noopener noreferrer" 115 class="underline underline-offset-3 hover:opacity-75 transition-opacity" 116 > 117 AdonisJS developer survey. 118 </a> 119 </p> 120 <button 121 type="button" 122 class="absolute right-2.5 top-1/2 -translate-y-1/2 flex size-7 items-center justify-center cursor-pointer text-highlighter-ink hover:bg-highlighter-ink/10 transition-colors" 123 aria-label="Dismiss announcement" 124 @click="localStorage.setItem('announcement:dev-survey', 'dismissed'); $root.remove()" 125 ><svg width="1em" height="1em" viewBox="0 0 24 24" class="w-4 h-4"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M18 6L6 18M6 6l12 12"/></svg> 126 </button> 127</div>
128<script> 129 if (localStorage.getItem('announcement:dev-survey') === 'dismissed') { 130 document.currentScript.previousElementSibling.remove() 131 } 132</script>
132 133 134<header 135 class="sticky inset-x-0 top-0 border-b border-woodsmoke-900 z-10 backdrop-blur-3xl bg-woodsmoke-950/60" 136> 137 <div class="container-full mx-auto px-5 lg:px-10 py-4 flex items-center justify-between h-18"> 138 <div class="text-white"> 139<a href="/" class="block"> 140 <svg width="107" height="33" viewBox="0 0 107 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 141 <g clip-path="url(#clip0_1245_6827)"> 142 <path 143 fill-rule="evenodd" 144 clip-rule="evenodd" 145 d="M0 16.3331C0 29.506 3.16017 32.6662 16.3331 32.6662C29.506 32.6662 32.6662 29.506 32.6662 16.3331C32.6662 3.16017 29.506 0 16.3331 0C3.16017 0 0 3.16017 0 16.3331ZM6.58646 19.7261L11.7093 8.08338C12.5742 6.12075 14.2374 5.05627 16.3331 5.05627C18.4288 5.05627 20.092 6.12075 20.9569 8.08338L26.0797 19.7261C26.3126 20.2916 26.5122 21.0235 26.5122 21.6555C26.5122 24.5495 24.483 26.5787 21.589 26.5787C20.6032 26.5787 19.8203 26.3271 19.0278 26.0725C18.2158 25.8116 17.3937 25.5475 16.3331 25.5475C15.2847 25.5475 14.4426 25.814 13.6145 26.076C12.8136 26.3294 12.0258 26.5787 11.0772 26.5787C8.18318 26.5787 6.15402 24.5495 6.15402 21.6555C6.15402 21.0235 6.35361 20.2916 6.58646 19.7261ZM16.3331 10.1125L11.2768 21.5557C12.7737 20.8571 14.5035 20.5245 16.3331 20.5245C18.0961 20.5245 19.8924 20.8571 21.3228 21.5557L16.3331 10.1125Z" 146 fill="currentColor" 147 /> 148 <path 149 fill-rule="evenodd" 150 clip-rule="evenodd" 151 d="M93.7543 8.07967C92.6202 8.07967 91.8012 8.88296 91.8012 10.0013C91.8012 11.1195 92.6202 11.9228 93.7543 11.9228C94.8883 11.9228 95.7074 11.1195 95.7074 10.0013C95.7074 8.88296 94.8883 8.07967 93.7543 8.07967ZM58.0314 24.5865C55.0073 24.5865 52.8179 22.3504 52.8179 18.8532C52.8179 15.293 55.0073 13.0569 58.0314 13.0569C59.4333 13.0569 60.4728 13.5294 61.0871 14.4587V8.5837H64.2373V24.3345H61.0871V23.2162C60.4886 24.1297 59.449 24.5865 58.0314 24.5865ZM56.0311 18.8532C56.0311 16.9001 57.0864 15.6243 58.693 15.6243C60.3153 15.6243 61.3549 16.8843 61.3549 18.8374C61.3549 20.759 60.3153 22.0034 58.693 22.0034C57.0864 22.0034 56.0311 20.759 56.0311 18.8532ZM69.183 18.8217C69.183 16.8843 70.2383 15.64 71.8134 15.64C73.4042 15.64 74.4595 16.8843 74.4595 18.8217C74.4595 20.759 73.4042 22.0034 71.8134 22.0034C70.2383 22.0034 69.183 20.759 69.183 18.8217ZM103.898 21.3261C103.898 21.9088 103.457 22.2554 102.338 22.2554C101.078 22.2554 100.291 21.5938 100.291 20.7905H97.1407C97.2195 22.9642 99.2828 24.5865 102.275 24.5865C105.111 24.5865 106.922 23.3264 106.922 21.0898C106.922 19.4202 105.851 18.2547 103.725 17.8294L101.441 17.3726C100.748 17.2309 100.338 16.8843 100.338 16.4276C100.338 15.7503 101.031 15.388 101.913 15.388C103.173 15.388 103.662 15.9708 103.662 16.6638H106.654C106.575 14.6162 104.969 13.0569 101.976 13.0569C99.1883 13.0569 97.2982 14.4587 97.2982 16.5851C97.2982 18.5067 98.5425 19.373 100.401 19.7667L102.669 20.255C103.41 20.4125 103.898 20.7275 103.898 21.3261ZM95.3451 24.3345H92.1949V13.3089H95.3451V24.3345ZM82.5555 13.3089V14.4587C83.3587 13.5294 84.4298 13.0569 85.7529 13.0569C88.2257 13.0569 89.8323 14.6635 89.8323 17.1521V24.3345H86.6822V17.8136C86.6822 16.4748 85.9261 15.6715 84.6188 15.6715C83.3115 15.6715 82.5555 16.4748 82.5555 17.8136V24.3345H79.4053V13.3089H82.5555ZM71.8134 13.0569C68.4585 13.0569 65.9699 15.4825 65.9699 18.8217C65.9699 22.1609 68.4585 24.5865 71.8134 24.5865C75.1841 24.5865 77.6727 22.1609 77.6727 18.8217C77.6727 15.4825 75.1841 13.0569 71.8134 13.0569ZM45.5411 15.6243C43.9345 15.6243 42.8792 16.9001 42.8792 18.8532C42.8792 20.759 43.9345 22.0034 45.5411 22.0034C47.1634 22.0034 48.2029 20.759 48.2029 18.8374C48.2029 16.8843 47.1634 15.6243 45.5411 15.6243ZM39.666 18.8532C39.666 22.3504 41.8554 24.5865 44.8638 24.5865C46.2971 24.5865 47.3209 24.1297 47.9352 23.2162V24.3345H51.0853V13.3089H47.9352V14.4587C47.3051 13.5294 46.2656 13.0569 44.8638 13.0569C41.8554 13.0569 39.666 15.293 39.666 18.8532Z" 152 fill="currentColor" 153 /> 154 </g> 155 <defs> 156 <clipPath id="clip0_1245_6827"> 157 <rect width="106.922" height="32.6662" fill="currentColor" /> 158 </clipPath> 159 </defs> 160</svg> 161 162 <span class="sr-only">Home page</span> 163</a> 164 165 </div> 166 167 <div class="flex items-center gap-7"> 168 <nav class="flex items-center gap-7"> 169 <ul class="hidden md:flex items-center gap-5"> 170 <li> 171<a href="/packages" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300">
172 <span>Packages</span> 173</a> 174 175 </li> 176 <li> 177<a href="/wall-of-love" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 178 <span>Wall of love</span> 179</a> 180 181 </li> 182 <li> 183<a href="https://docs.adonisjs.com" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300" rel="noopener noreferrer" target="_blank"> 184 <span>Docs</span> 185</a> 186 187 </li> 188 <li> 189<a href="/blog" class="current md:text-sm hover:text-white transition-colors text-white"> 190 <span>Blog</span> 191</a> 192 193 </li> 194 <li> 195<a href="/roadmap" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 196 <span>Roadmap</span> 197</a> 198 199 </li> 200 <li> 201<a href="/sponsor" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 202 <span>Sponsor</span> 203</a> 204 205 </li> 206 <li> 207<a href="/about" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 208 <span>About</span> 209</a> 210 211 </li> 212 213 </ul> 214 215 <ul class="flex items-center gap-5"> 216 <li> 217 <a class="font-medium items-center justify-center cursor-pointer transition-colors text-center uppercase inline-flex bg-indigo-600 hover:bg-indigo-700 focus:bg-indigo-700 text-white font-mono focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-indigo-400 px-3 py-1.5 text-xs" href="https://plus.adonisjs.com/" target="_blank"> 218 Plus 219 </a> 220 221 </li> 222 223 <li class="hidden md:block"> 224<a href="https://github.com/adonisjs/core" class="flex items-center gap-2 text-woodsmoke-300 hover:text-white transition-colors" rel="noopener noreferrer" target="_blank"> 225 <svg width="20px" height="20px" viewBox="0 0 20 20"><path fill="currentColor" d="M20 10.25q0 3.351-1.908 6.027t-4.928 3.703q-.352.068-.514-.093a.54.54 0 0 1-.163-.4V16.67q0-1.295-.677-1.895a9 9 0 0 0 1.335-.24q.591-.16 1.223-.52a3.7 3.7 0 0 0 1.055-.888q.423-.528.69-1.402t.267-2.008q0-1.616-1.028-2.75q.48-1.214-.105-2.723q-.364-.12-1.054.147a7 7 0 0 0-1.198.587l-.495.32a9 9 0 0 0-2.5-.346a9 9 0 0 0-2.5.347a12 12 0 0 0-.553-.36q-.345-.214-1.088-.514q-.741-.3-1.12-.18q-.572 1.507-.09 2.722q-1.03 1.134-1.03 2.75q0 1.134.268 2.002q.267.867.683 1.401a3.5 3.5 0 0 0 1.048.894q.632.36 1.224.52q.593.162 1.335.241q-.52.48-.638 1.375a2.5 2.5 0 0 1-.586.2a3.6 3.6 0 0 1-.742.067q-.43 0-.853-.287q-.423-.288-.723-.834a2.1 2.1 0 0 0-.631-.694q-.384-.267-.645-.32l-.26-.04q-.273 0-.378.06t-.065.153a.7.7 0 0 0 .117.187a1 1 0 0 0 .17.16l.09.066q.287.135.567.508q.28.374.41.68l.13.307q.17.507.574.821q.404.315.872.4q.468.087.905.094q.436.006.723-.047l.299-.053q0 .507.007 1.188l.006.72q0 .24-.17.4q-.168.162-.52.094q-3.021-1.028-4.928-3.703Q0 13.6 0 10.25q0-2.79 1.341-5.145a10.1 10.1 0 0 1 3.64-3.73A9.6 9.6 0 0 1 10 0a9.6 9.6 0 0 1 5.02 1.375a10.1 10.1 0 0 1 3.639 3.73Q20 7.461 20 10.25"/></svg> 226 <span class="font-mono text-14 font-semibold">19K</span> 227 <span class="sr-only">Star adonisjs/core on GitHub</span> 228</a> 229 230 </li> 231 232 <li x-data="" class="flex self-center md:hidden"> 233 <button @click.prevent="$dispatch('toggle-mobile-nav')"><svg width="20px" height="20px" viewBox="0 0 24 24" class="text-woodsmoke-100 hover:text-white transition-colors"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4.5 6.5h15M4.5 12h15m-15 5.5h15"/></svg> 234 <span class="sr-only">Open menu</span> 235 </button> 236 </li> 237 </ul> 238 </nav> 239 </div> 240 </div> 241</header> 242 243 244<div 245 x-data="{ isOpen: false }" 246 x-cloak 247 @toggle-mobile-nav.window="isOpen = !isOpen" 248 x-show="isOpen" 249 class="md:hidden fixed text-center backdrop-blur-xl border-t border-woodsmoke-900 bg-woodsmoke-950/70 left-0 right-0 top-26 bottom-0 z-10 px-5 py-10" 250> 251 <ul class="flex flex-col gap-5"> 252 <li> 253<a href="/packages" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 254 <span>Packages</span> 255</a> 256 257 </li> 258 <li> 259<a href="/wall-of-love" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300">
260 <span>Wall of love</span> 261</a> 262 263 </li> 264 <li> 265<a href="https://docs.adonisjs.com" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300" rel="noopener noreferrer" target="_blank"> 266 <span>Docs</span> 267</a> 268 269 </li> 270 <li> 271<a href="/blog" class="current md:text-sm hover:text-white transition-colors text-white"> 272 <span>Blog</span> 273</a> 274 275 </li> 276 <li> 277<a href="/roadmap" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 278 <span>Roadmap</span> 279</a> 280 281 </li> 282 <li> 283<a href="/sponsor" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 284 <span>Sponsor</span> 285</a> 286 287 </li> 288 <li> 289<a href="/about" class="md:text-sm hover:text-white transition-colors text-woodsmoke-300"> 290 <span>About</span> 291</a> 292 293 </li> 294 295 <li> 296<a href="https://github.com/adonisjs/core" class="inline-block" rel="noopener noreferrer" target="_blank"> 297 <svg width="24px" height="24px" viewBox="0 0 20 20" class="text-woodsmoke-300 hover:text-white transition-colors"><path fill="currentColor" d="M20 10.25q0 3.351-1.908 6.027t-4.928 3.703q-.352.068-.514-.093a.54.54 0 0 1-.163-.4V16.67q0-1.295-.677-1.895a9 9 0 0 0 1.335-.24q.591-.16 1.223-.52a3.7 3.7 0 0 0 1.055-.888q.423-.528.69-1.402t.267-2.008q0-1.616-1.028-2.75q.48-1.214-.105-2.723q-.364-.12-1.054.147a7 7 0 0 0-1.198.587l-.495.32a9 9 0 0 0-2.5-.346a9 9 0 0 0-2.5.347a12 12 0 0 0-.553-.36q-.345-.214-1.088-.514q-.741-.3-1.12-.18q-.572 1.507-.09 2.722q-1.03 1.134-1.03 2.75q0 1.134.268 2.002q.267.867.683 1.401a3.5 3.5 0 0 0 1.048.894q.632.36 1.224.52q.593.162 1.335.241q-.52.48-.638 1.375a2.5 2.5 0 0 1-.586.2a3.6 3.6 0 0 1-.742.067q-.43 0-.853-.287q-.423-.288-.723-.834a2.1 2.1 0 0 0-.631-.694q-.384-.267-.645-.32l-.26-.04q-.273 0-.378.06t-.065.153a.7.7 0 0 0 .117.187a1 1 0 0 0 .17.16l.09.066q.287.135.567.508q.28.374.41.68l.13.307q.17.507.574.821q.404.315.872.4q.468.087.905.094q.436.006.723-.047l.299-.053q0 .507.007 1.188l.006.72q0 .24-.17.4q-.168.162-.52.094q-3.021-1.028-4.928-3.703Q0 13.6 0 10.25q0-2.79 1.341-5.145a10.1 10.1 0 0 1 3.64-3.73A9.6 9.6 0 0 1 10 0a9.6 9.6 0 0 1 5.02 1.375a10.1 10.1 0 0 1 3.639 3.73Q20 7.461 20 10.25"/></svg> 298 <span class="sr-only">GitHub repository</span> 299</a> 300 301 </li> 302 </ul> 303</div> 304 305 306 307 <main><div class="hero text-center"> 308 <div class="container mx-auto px-5 lg:px-10 py-24 lg:border-x border-woodsmoke-900 relative"> 309 <h1 class="font-display text-34 lg:text-42 text-white leading-10 lg:leading-52 tracking-tight"> 310 The AdonisJS Blog 311 </h1> 312 <p 313 class="text-16 lg:text-18 text-woodsmoke-200 max-w-2xl sm:px-2.5 mx-auto mt-5 lg:mt-3 leading-7" 314 > 315 Tutorials, releases, and technical articles from the AdonisJS core team. Learn how to build better applications with the framework. 316 </p> 317 <div class="relative max-w-105 mx-auto mt-5 mb-6"> 318 <form 319 action="https://buttondown.email/api/emails/embed-subscribe/adonisjs" 320 target="popupwindow" 321 onsubmit="window.open('https://buttondown.email/adonisjs', 'popupwindow')" 322 > 323<input name="email" id="email" class="w-full px-4 py-2.5 border border-woodsmoke-800/70 bg-woodsmoke-950 text-white rounded-md text-woodsmoke-100 placeholder-woodsmoke-400 pr-18 text-15" type="email" required placeholder="Subscribe to our newsletter" /> 324 325 <button 326 class="absolute top-1/2 right-4 transform -translate-y-1/2 transition-all text-indigo-400 hover:text-indigo-500 font-mono py-2.5 text-13 uppercase" 327 > 328 Submit 329 </button> 330 </form> 331 </div> 332 333 <div 334 class="absolute inset-0 pointer-events-none -z-1 bg-[url('/resources/assets/hero-bg.webp')] bg-position-[60%] md:bg-top bg-no-repeat" 335 ></div> 336 </div> 337</div> 338<section class="border-t border-woodsmoke-900"> 339 <div class="container mx-auto lg:border-x border-woodsmoke-900"> 340 <nav class="border-b border-woodsmoke-900"> 341 <ul class="flex space-x-3 py-5 justify-center"> 342 <li class="rounded-md"> 343<a href="/blog" class="current font-mono text-center block px-2.5 py-1.5 text-13 transition-colors relative text-woodsmoke-50 bg-woodsmoke-800 font-medium rounded-sm"> 344 Blog 345</a> 346 347 </li> 348 <li class="rounded-md"> 349<a href="/releases" class="font-mono text-center block px-2.5 py-1.5 text-13 transition-colors relative text-woodsmoke-600 hover:text-woodsmoke-300"> 350 Releases 351</a> 352 353 </li> 354 </ul> 355 </nav> 356 <div> <section class="px-5 max-w-4xl mx-auto"> 357 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 358 <div class="group"> 359<a href="/blog/codegen-and-application-warmup" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60">
360 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 361 Aug 20, 2026 362 </span> 363 <div class="flex-1"> 364 <div class="mb-6 max-w-xl"> 365 <h2 366 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 367 > 368 Introducing codegen command and application warmup phase 369 </h2> 370 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS now has a standalone codegen command and a warmup lifecycle phase for refreshing generated files without starting operational work.</p> 371 </div> 372 <div class="flex justify-between items-center"> 373 <div class="flex items-center gap-1.5"> 374 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 375 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 376 </span> 377 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 378 </div> 379 </div> 380 </div> 381</a> 382 383 </div> 384 </article> 385 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 386 <div class="group"> 387<a href="/blog/adonisjs-inertia-5" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 388 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 389 Aug 10, 2026 390 </span> 391 <div class="flex-1"> 392 <div class="mb-6 max-w-xl"> 393 <h2 394 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 395 > 396 Inertia v3 and end-to-end type safety in AdonisJS 397 </h2> 398 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS Inertia version 5 adds Inertia v3 support, route-aware frontend APIs, improved error handling, and end-to-end type safety.</p> 399 </div> 400 <div class="flex justify-between items-center"> 401 <div class="flex items-center gap-1.5"> 402 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 403 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 404 </span> 405 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 406 </div> 407 </div> 408 </div> 409</a> 410 411 </div> 412 </article> 413 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 414 <div class="group"> 415<a href="/blog/adonisjs-vite-6" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 416 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 417 Aug 10, 2026 418 </span> 419 <div class="flex-1"> 420 <div class="mb-6 max-w-xl"> 421 <h2 422 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 423 > 424 Vite 8 and server-side modules in AdonisJS 425 </h2> 426 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS Vite version 6 adds Vite 8 support, server-side entrypoints, runtime module loading, and explicit static asset handling.</p> 427 </div> 428 <div class="flex justify-between items-center"> 429 <div class="flex items-center gap-1.5"> 430 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 431 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 432 </span> 433 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 434 </div> 435 </div> 436 </div> 437</a> 438 439 </div> 440 </article> 441 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 442 <div class="group"> 443<a href="/blog/teaching-ai-to-write-adonisjs" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60">
444 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 445 May 05, 2026 446 </span> 447 <div class="flex-1"> 448 <div class="mb-6 max-w-xl"> 449 <h2 450 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 451 > 452 How I'm teaching AI to write AdonisJS the way I would 453 </h2> 454 <p class="text-14 text-woodsmoke-500 tracking-wide">AI doesn't just need to know about the framework. It needs to be told how to engineer with it. Here's where I've landed, and what's going into Flow.</p> 455 </div> 456 <div class="flex justify-between items-center"> 457 <div class="flex items-center gap-1.5"> 458 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 459 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 460 </span> 461 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 462 </div> 463 </div> 464 </div> 465</a> 466 467 </div> 468 </article> 469 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 470 <div class="group"> 471<a href="/blog/how-we-redesigned-redirects-in-adonisjs" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 472 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 473 Apr 09, 2026 474 </span> 475 <div class="flex-1"> 476 <div class="mb-6 max-w-xl"> 477 <h2 478 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 479 > 480 How we re-designed redirects in AdonisJS 481 </h2> 482 <p class="text-14 text-woodsmoke-500 tracking-wide">New redirect APIs in AdonisJS. Open redirect prevention, session-based previous URL, intended URL after login, and configurable query string forwarding.</p> 483 </div> 484 <div class="flex justify-between items-center"> 485 <div class="flex items-center gap-1.5"> 486 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 487 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 488 </span> 489 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 490 </div> 491 </div> 492 </div> 493</a> 494 495 </div> 496 </article> 497 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 498 <div class="group"> 499<a href="/blog/introducing-persona-and-permission" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 500 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 501 Mar 18, 2026 502 </span> 503 <div class="flex-1"> 504 <div class="mb-6 max-w-xl"> 505 <h2 506 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 507 > 508 Introducing Persona and Permission 509 </h2> 510 <p class="text-14 text-woodsmoke-500 tracking-wide">We released Persona and Permission, the first two packages under AdonisJS Plus. Learn how they work, why they exist as packages, and how they fit into the Kit components story</p> 511 </div> 512 <div class="flex justify-between items-center"> 513 <div class="flex items-center gap-1.5"> 514 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 515 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 516 </span> 517 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 518 </div> 519 </div> 520 </div> 521</a> 522 523 </div> 524 </article> 525 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 526 <div class="group"> 527<a href="/blog/v7" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60">
528 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 529 Feb 25, 2026 530 </span> 531 <div class="flex-1"> 532 <div class="mb-6 max-w-xl"> 533 <h2 534 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 535 > 536 AdonisJS v7 is here 537 </h2> 538 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS v7 introduces end-to-end type safety, new starter kits with authentication, zero-config OpenTelemetry, and a rewritten developer experience. Available now</p> 539 </div> 540 <div class="flex justify-between items-center"> 541 <div class="flex items-center gap-1.5"> 542 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 543 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 544 </span> 545 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 546 </div> 547 </div> 548 </div> 549</a> 550 551 </div> 552 </article> 553 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 554 <div class="group"> 555<a href="/blog/v7-feature-complete-update" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 556 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 557 Jan 17, 2026 558 </span> 559 <div class="flex-1"> 560 <div class="mb-6 max-w-xl"> 561 <h2 562 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 563 > 564 AdonisJS v7 is feature-complete and entering final validation 565 </h2> 566 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS v7 has reached its final form with stable APIs, revamped documentation, and a small breaking changes surface. Insiders can start building today.</p> 567 </div> 568 <div class="flex justify-between items-center"> 569 <div class="flex items-center gap-1.5"> 570 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 571 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 572 </span> 573 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 574 </div> 575 </div> 576 </div> 577</a> 578 579 </div> 580 </article> 581 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 582 <div class="group"> 583<a href="/blog/frameworks-in-the-era-of-ai" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 584 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 585 Jan 08, 2026 586 </span> 587 <div class="flex-1"> 588 <div class="mb-6 max-w-xl"> 589 <h2 590 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 591 > 592 Batteries-included frameworks in the era of AI 593 </h2> 594 <p class="text-14 text-woodsmoke-500 tracking-wide">Built a production checkout flow in one evening with Claude. It worked because the framework had already made the hard decisions. AI filled in the rest.</p> 595 </div> 596 <div class="flex justify-between items-center"> 597 <div class="flex items-center gap-1.5"> 598 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 599 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 600 </span> 601 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 602 </div> 603 </div> 604 </div> 605</a> 606 607 </div> 608 </article> 609 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 610 <div class="group"> 611<a href="/blog/introduction-adonisjs-opentelemetry" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60">
612 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 613 Dec 20, 2025 614 </span> 615 <div class="flex-1"> 616 <div class="mb-6 max-w-xl"> 617 <h2 618 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 619 > 620 Introducing OpenTelemetry support in AdonisJS 621 </h2> 622 <p class="text-14 text-woodsmoke-500 tracking-wide">Your application is slow. But where exactly? Is it the database query? The external API call? That one service that sometimes takes forever? Without proper observability, you're left guessing.</p> 623 </div> 624 <div class="flex justify-between items-center"> 625 <div class="flex items-center gap-1.5"> 626 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 627 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 628 </span> 629 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 630 </div> 631 </div> 632 </div> 633</a> 634 635 </div> 636 </article> 637 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 638 <div class="group"> 639<a href="/blog/adonisjs-native-response-readablestream-support" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 640 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 641 Dec 05, 2025 642 </span> 643 <div class="flex-1"> 644 <div class="mb-6 max-w-xl"> 645 <h2 646 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 647 > 648 Supporting Platform-Native Response and ReadableStream in AdonisJS 649 </h2> 650 <p class="text-14 text-woodsmoke-500 tracking-wide">We've added support for returning platform-native Response objects and ReadableStream instances directly from your route handlers.</p> 651 </div> 652 <div class="flex justify-between items-center"> 653 <div class="flex items-center gap-1.5"> 654 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 655 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 656 </span> 657 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 658 </div> 659 </div> 660 </div> 661</a> 662 663 </div> 664 </article> 665 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 666 <div class="group"> 667<a href="/blog/adonisjs-v7-progress-update" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 668 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 669 Nov 13, 2025 670 </span> 671 <div class="flex-1"> 672 <div class="mb-6 max-w-xl"> 673 <h2 674 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 675 > 676 AdonisJS v7: State of Things 677 </h2> 678 <p class="text-14 text-woodsmoke-500 tracking-wide">We have made over 20 releases targeting AdonisJS v7 since last month. Many of these are bug fixes, small improvements , and internal APIs needed by the framework core and official packages.</p> 679 </div> 680 <div class="flex justify-between items-center"> 681 <div class="flex items-center gap-1.5"> 682 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 683 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 684 </span> 685 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 686 </div> 687 </div> 688 </div> 689</a> 690 691 </div> 692 </article> 693 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 694 <div class="group"> 695<a href="/blog/rethinking-starter-kits" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60">
696 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 697 Oct 24, 2025 698 </span> 699 <div class="flex-1"> 700 <div class="mb-6 max-w-xl"> 701 <h2 702 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 703 > 704 Building from the Base Up: Rethinking Starter Kits in AdonisJS 705 </h2> 706 <p class="text-14 text-woodsmoke-500 tracking-wide">We have recently updated the Hypermedia Starter Kit for AdonisJS v7 . This release includes a set of base components â such as buttons, form fields, avatars, and layouts â along with a simple signup and login system to help you get started quickly.</p> 707 </div> 708 <div class="flex justify-between items-center"> 709 <div class="flex items-center gap-1.5"> 710 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 711 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 712 </span> 713 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 714 </div> 715 </div> 716 </div> 717</a> 718 719 </div> 720 </article> 721 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 722 <div class="group"> 723<a href="/blog/a-decade-of-adonisjs-and-the-future" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 724 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 725 Sep 26, 2025 726 </span> 727 <div class="flex-1"> 728 <div class="mb-6 max-w-xl"> 729 <h2 730 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 731 > 732 10 Years of AdonisJS â A Personal Reflection and Whatâs Next 733 </h2> 734 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS has just completed 10 years. A full decade of writing code, fixing bugs, rewriting parts of the framework, and slowly shaping it into something developers can trust and enjoy using.</p> 735 </div> 736 <div class="flex justify-between items-center"> 737 <div class="flex items-center gap-1.5"> 738 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 739 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 740 </span> 741 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 742 </div> 743 </div> 744 </div> 745</a> 746 747 </div> 748 </article> 749 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 750 <div class="group"> 751<a href="/blog/roadmap-to-adonisjs-7" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 752 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 753 Jun 23, 2025 754 </span> 755 <div class="flex-1"> 756 <div class="mb-6 max-w-xl"> 757 <h2 758 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 759 > 760 Roadmap to AdonisJS 7 761 </h2> 762 <p class="text-14 text-woodsmoke-500 tracking-wide">It has been a while since we published our last article. We've been cooking 'undercover' for quite some time, and we're excited to finally share with you the roadmap to AdonisJS 7.</p> 763 </div> 764 <div class="flex justify-between items-center"> 765 <div class="flex items-center gap-1.5"> 766 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 767 <img src="/assets/romain-CyetScJZ.jpeg" alt="romainlanz" /> 768 </span>
769 <span class="text-13 text-woodsmoke-500">romainlanz</span> 770 </div> 771 </div> 772 </div> 773</a> 774 775 </div> 776 </article> 777 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 778 <div class="group"> 779<a href="/blog/introducing-tuyau" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 780 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 781 Oct 27, 2024 782 </span> 783 <div class="flex-1"> 784 <div class="mb-6 max-w-xl"> 785 <h2 786 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 787 > 788 Tuyau - An E2E client for your AdonisJS APIs 789 </h2> 790 <p class="text-14 text-woodsmoke-500 tracking-wide">We are super excited to announce the first release of Tuyau . Tuyau is a collection of libraries that provides you with a type-safe request client, type-safe Inertia Link helpers, and an Open-API spec generator.</p> 791 </div> 792 <div class="flex justify-between items-center"> 793 <div class="flex items-center gap-1.5"> 794 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 795 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 796 </span> 797 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 798 </div> 799 </div> 800 </div> 801</a> 802 803 </div> 804 </article> 805 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 806 <div class="group"> 807<a href="/blog/upgrading-eslint-typescript-setup" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 808 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 809 Sep 01, 2024 810 </span> 811 <div class="flex-1"> 812 <div class="mb-6 max-w-xl"> 813 <h2 814 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 815 > 816 Upgrading ESLint and TypeScript setup 817 </h2> 818 <p class="text-14 text-woodsmoke-500 tracking-wide">In this post, we will upgrade the tooling config of an AdonisJS application to use the latest version of ESLint, move to the maintained fork of ts-node, and update the prettier config to format Edge templates.</p> 819 </div> 820 <div class="flex justify-between items-center"> 821 <div class="flex items-center gap-1.5"> 822 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 823 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 824 </span> 825 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 826 </div> 827 </div> 828 </div> 829</a> 830 831 </div> 832 </article> 833 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 834 <div class="group"> 835<a href="/blog/send-real-time-updates-with-transmit" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 836 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 837 Jun 04, 2024 838 </span> 839 <div class="flex-1"> 840 <div class="mb-6 max-w-xl"> 841 <h2 842 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 843 > 844 Send real-time updates with Transmit 845 </h2> 846 <p class="text-14 text-woodsmoke-500 tracking-wide">Transmit is a new package in the AdonisJS family. Its goal is to provide an opinionated way of using Server-Sent Events (SSE).</p> 847 </div> 848 <div class="flex justify-between items-center"> 849 <div class="flex items-center gap-1.5">
850 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 851 <img src="/assets/romain-CyetScJZ.jpeg" alt="romainlanz" /> 852 </span> 853 <span class="text-13 text-woodsmoke-500">romainlanz</span> 854 </div> 855 </div> 856 </div> 857</a> 858 859 </div> 860 </article> 861 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 862 <div class="group"> 863<a href="/blog/april-2024-updates" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 864 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 865 May 09, 2024 866 </span> 867 <div class="flex-1"> 868 <div class="mb-6 max-w-xl"> 869 <h2 870 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 871 > 872 Updates from April 2024 873 </h2> 874 <p class="text-14 text-woodsmoke-500 tracking-wide">As we enter May, it's a great opportunity to reflect on the recent enhancements and updates made to AdonisJS last month.</p> 875 </div> 876 <div class="flex justify-between items-center"> 877 <div class="flex items-center gap-1.5"> 878 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 879 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 880 </span> 881 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 882 </div> 883 </div> 884 </div> 885</a> 886 887 </div> 888 </article> 889 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 890 <div class="group"> 891<a href="/blog/hmr-in-adonisjs" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 892 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 893 Apr 23, 2024 894 </span> 895 <div class="flex-1"> 896 <div class="mb-6 max-w-xl"> 897 <h2 898 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 899 > 900 Hot module replacement (HMR) in AdonisJS 901 </h2> 902 <p class="text-14 text-woodsmoke-500 tracking-wide">We're thrilled to announce that HMR is now available in AdonisJS! Before anything, let me quickly explain what this enables.</p> 903 </div> 904 <div class="flex justify-between items-center"> 905 <div class="flex items-center gap-1.5"> 906 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 907 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 908 </span> 909 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 910 </div> 911 </div> 912 </div> 913</a> 914 915 </div> 916 </article> 917 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 918 <div class="group"> 919<a href="/blog/march-2024-updates" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 920 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 921 Apr 01, 2024 922 </span> 923 <div class="flex-1"> 924 <div class="mb-6 max-w-xl"> 925 <h2 926 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 927 > 928 Updates from March 2024 929 </h2> 930 <p class="text-14 text-woodsmoke-500 tracking-wide">Github now recognizes the syntax of Edge templates and provides syntax highlighting for them. This contribution is made by Liam Potter (a long-time AdonisJS user) via this PR .</p> 931 </div> 932 <div class="flex justify-between items-center"> 933 <div class="flex items-center gap-1.5">
934 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 935 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 936 </span> 937 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 938 </div> 939 </div> 940 </div> 941</a> 942 943 </div> 944 </article> 945 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 946 <div class="group"> 947<a href="/blog/experimental-release-for-inertia" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 948 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 949 Mar 05, 2024 950 </span> 951 <div class="flex-1"> 952 <div class="mb-6 max-w-xl"> 953 <h2 954 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 955 > 956 Announcing Inertia adapter for AdonisJS 957 </h2> 958 <p class="text-14 text-woodsmoke-500 tracking-wide">We are pleased to announce that the Inertia adapter for AdonisJS is now available as an experimental version with full support for SSR.</p> 959 </div> 960 <div class="flex justify-between items-center"> 961 <div class="flex items-center gap-1.5"> 962 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 963 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 964 </span> 965 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 966 </div> 967 </div> 968 </div> 969</a> 970 971 </div> 972 </article> 973 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 974 <div class="group"> 975<a href="/blog/february-2024-updates" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 976 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 977 Feb 29, 2024 978 </span> 979 <div class="flex-1"> 980 <div class="mb-6 max-w-xl"> 981 <h2 982 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 983 > 984 Updates from February 2024 985 </h2> 986 <p class="text-14 text-woodsmoke-500 tracking-wide">It's been a month since the major release of AdonisJS v6, and we had a lot going on during this month. Some of the work has been shipped, and some are under the experimental phase and will be released soon.</p> 987 </div> 988 <div class="flex justify-between items-center"> 989 <div class="flex items-center gap-1.5"> 990 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 991 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 992 </span> 993 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 994 </div> 995 </div> 996 </div> 997</a> 998 999 </div> 1000 </article> 1001 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1002 <div class="group"> 1003<a href="/blog/kysely-with-auth-session-guard" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1004 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1005 Feb 17, 2024 1006 </span> 1007 <div class="flex-1"> 1008 <div class="mb-6 max-w-xl"> 1009 <h2 1010 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1011 > 1012 Integrating Kysely with the Auth session guard 1013 </h2> 1014 <p class="text-14 text-woodsmoke-500 tracking-wide">In the last post, we setup Kysely inside an AdonisJS application with commands to make, run, and rollback migrations. In this post, we will take a step ahead and integrate Kysely with the AdonisJS auth package.</p> 1015 </div> 1016 <div class="flex justify-between items-center"> 1017 <div class="flex items-center gap-1.5">
1018 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1019 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 1020 </span> 1021 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 1022 </div> 1023 </div> 1024 </div> 1025</a> 1026 1027 </div> 1028 </article> 1029 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1030 <div class="group"> 1031<a href="/blog/future-plans-for-adonisjs-6" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1032 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1033 Feb 16, 2024 1034 </span> 1035 <div class="flex-1"> 1036 <div class="mb-6 max-w-xl"> 1037 <h2 1038 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1039 > 1040 Future plans for AdonisJS v6 1041 </h2> 1042 <p class="text-14 text-woodsmoke-500 tracking-wide">We have just released AdonisJS v6 with many new features and improvements. This release was a big milestone, as we have been working on it for the last year. We have shipped a lot of new improvements and features in this release, but we have a lot more in the pipeline.</p> 1043 </div> 1044 <div class="flex justify-between items-center"> 1045 <div class="flex items-center gap-1.5"> 1046 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1047 <img src="/assets/julien-CIcR1ts-.png" alt="julien-ripouteau" /> 1048 </span> 1049 <span class="text-13 text-woodsmoke-500">julien-ripouteau</span> 1050 </div> 1051 </div> 1052 </div> 1053</a> 1054 1055 </div> 1056 </article> 1057 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1058 <div class="group"> 1059<a href="/blog/kysely-with-adonisjs" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1060 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1061 Feb 02, 2024 1062 </span> 1063 <div class="flex-1"> 1064 <div class="mb-6 max-w-xl"> 1065 <h2 1066 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1067 > 1068 Setting up Kysely inside an AdonisJS project 1069 </h2> 1070 <p class="text-14 text-woodsmoke-500 tracking-wide">AdonisJS comes pre-configured with our home-grown ORM Lucid. While Lucid shines on many fronts, it does not have a type-safe API for constructing SQL queries.</p> 1071 </div> 1072 <div class="flex justify-between items-center"> 1073 <div class="flex items-center gap-1.5"> 1074 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1075 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 1076 </span> 1077 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 1078 </div> 1079 </div> 1080 </div> 1081</a> 1082 1083 </div> 1084 </article> 1085 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1086 <div class="group"> 1087<a href="/blog/use-tsx-for-your-template-engine" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1088 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1089 Jan 31, 2024 1090 </span> 1091 <div class="flex-1"> 1092 <div class="mb-6 max-w-xl"> 1093 <h2 1094 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1095 > 1096 Use TSX for your template engine 1097 </h2> 1098 <p class="text-14 text-woodsmoke-500 tracking-wide">Seven years ago, we decided to build Edge, our templating engine. We created it to ensure longevity, speed, and extensibility.</p> 1099 </div> 1100 <div class="flex justify-between items-center"> 1101 <div class="flex items-center gap-1.5">
1102 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1103 <img src="/assets/romain-CyetScJZ.jpeg" alt="romainlanz" /> 1104 </span> 1105 <span class="text-13 text-woodsmoke-500">romainlanz</span> 1106 </div> 1107 </div> 1108 </div> 1109</a> 1110 1111 </div> 1112 </article> 1113 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1114 <div class="group"> 1115<a href="/blog/adonisjs-6-one-step-closer-to-the-release" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1116 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1117 Oct 09, 2023 1118 </span> 1119 <div class="flex-1"> 1120 <div class="mb-6 max-w-xl"> 1121 <h2 1122 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1123 > 1124 AdonisJS v6 - One Step Closer to the Release 1125 </h2> 1126 <p class="text-14 text-woodsmoke-500 tracking-wide">On July 24th, we announced the availability of AdonisJS 6 in its 'alpha state' exclusively for our sponsors to explore the framework and provide valuable feedback.</p> 1127 </div> 1128 <div class="flex justify-between items-center"> 1129 <div class="flex items-center gap-1.5"> 1130 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1131 <img src="/assets/romain-CyetScJZ.jpeg" alt="romainlanz" /> 1132 </span> 1133 <span class="text-13 text-woodsmoke-500">romainlanz</span> 1134 </div> 1135 </div> 1136 </div> 1137</a> 1138 1139 </div> 1140 </article> 1141 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1142 <div class="group"> 1143<a href="/blog/what-to-expect-of-adonisjs-6" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1144 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1145 Jul 04, 2023 1146 </span> 1147 <div class="flex-1"> 1148 <div class="mb-6 max-w-xl"> 1149 <h2 1150 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1151 > 1152 What to Expect of AdonisJS 6? 1153 </h2> 1154 <p class="text-14 text-woodsmoke-500 tracking-wide">If you have been following us on Twitter, you might have seen us talking about AdonisJS v6 - âA new major version of the AdonisJS frameworkâ. We've spent four years in the AdonisJS v5 era, and it's time to move to the AdonisJS v6 era with some fresh ideas.</p> 1155 </div> 1156 <div class="flex justify-between items-center"> 1157 <div class="flex items-center gap-1.5"> 1158 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1159 <img src="/assets/romain-CyetScJZ.jpeg" alt="romainlanz" /> 1160 </span> 1161 <span class="text-13 text-woodsmoke-500">romainlanz</span> 1162 </div> 1163 </div> 1164 </div> 1165</a> 1166 1167 </div> 1168 </article> 1169 <article class="not-last:border-b border-l border-r border-woodsmoke-900"> 1170 <div class="group"> 1171<a href="/blog/adonisjs-v6-announcement" class="block md:flex gap-30 px-5 py-10 sm:p-12 hover:bg-woodsmoke-950/60"> 1172 <span class="text-14 text-woodsmoke-500 mb-4 block pt-2"> 1173 Jan 24, 2024 1174 </span> 1175 <div class="flex-1"> 1176 <div class="mb-6 max-w-xl"> 1177 <h2 1178 class="text-22 font-sans! mb-3 leading-9 text-woodsmoke-50 pr-4 group-hover:underline" 1179 > 1180 Announcing AdonisJS v6 1181 </h2> 1182 <p class="text-14 text-woodsmoke-500 tracking-wide">Alright, sit tight, as this will be a long article. The work for v6 started with the goal of moving to ESM and improving the IoC container to be simple and have fewer responsibilities.</p> 1183 </div> 1184 <div class="flex justify-between items-center"> 1185 <div class="flex items-center gap-1.5">
1186 <span class="w-6 h-6 overflow-auto rounded-full border border-woodsmoke-800"> 1187 <img src="/assets/virk-BCyoMUn5.png" alt="Harminder Virk" /> 1188 </span> 1189 <span class="text-13 text-woodsmoke-500">Harminder Virk</span> 1190 </div> 1191 </div> 1192 </div> 1193</a> 1194 1195 </div> 1196 </article> 1197 </section></div> 1198 </div> 1199</section> 1200</main> 1201 1202<div class="border-t border-woodsmoke-900"> 1203 <div class="container mx-auto px-5 lg:px-10 pt-15 md:pt-30 lg:border-x border-woodsmoke-900"> 1204 <div class="lg:px-22.5 mb-30 md:mb-52 space-y-7 sm:space-y-5"> 1205 <div class="flex flex-col sm:flex-row gap-1.5 sm:gap-3"> 1206 <label class="text-14 text-woodsmoke-50 tracking-wide">VSCode Extensions</label> 1207 <div class="flex-1 border-b border-dashed border-woodsmoke-800 sm:mb-1.5"></div> 1208 <div class="flex flex-wrap gap-5.5 text-14"> 1209 1210<a href="https://marketplace.visualstudio.com/items?itemName=jripouteau.adonis-vscode-extension" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1211 AdonisJS 1212</a> 1213 1214 1215<a href="https://marketplace.visualstudio.com/items?itemName=AdonisJS.vscode-edge" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1216 Edge 1217</a> 1218 1219 1220<a href="https://marketplace.visualstudio.com/items?itemName=jripouteau.japa-vscode" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1221 Japa 1222</a> 1223 1224 </div> 1225 </div> 1226 <div class="flex flex-col sm:flex-row gap-1.5 sm:gap-3"> 1227 <label class="text-14 text-woodsmoke-50 tracking-wide">Community</label> 1228 <div class="flex-1 border-b border-dashed border-woodsmoke-800 sm:mb-1.5"></div> 1229 <div class="flex flex-wrap gap-5.5 text-14"> 1230 1231<a href="https://discord.com/invite/vDcEjq6" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1232 Discord 1233</a> 1234 1235 1236<a href="https://x.com/adonisframework" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1237 Twitter 1238</a> 1239 1240 1241<a href="https://github.com/adonisjs" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1242 GitHub 1243</a> 1244 1245 1246<a href="https://github.com/orgs/adonisjs/discussions" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5" rel="noopener noreferrer" target="_blank"> 1247 Forum 1248</a> 1249 1250 </div> 1251 </div> 1252 <div class="flex flex-col sm:flex-row gap-1.5 sm:gap-3"> 1253 <label class="text-14 text-woodsmoke-50 tracking-wide">Resources</label> 1254 <div class="flex-1 border-b border-dashed border-woodsmoke-800 sm:mb-1.5"></div> 1255 <div class="flex flex-wrap gap-5.5 text-14"> 1256 1257<a href="/stories" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1258 Stories 1259</a> 1260 1261 1262<a href="/about" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1263 About 1264</a> 1265 1266 1267<a href="/roadmap" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1268 Roadmap 1269</a> 1270 1271 1272<a href="/blog" class="current relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1273 Blog 1274</a> 1275 1276 1277<a href="/packages" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1278 Packages 1279</a> 1280 1281 1282<a href="/contributors" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1283 Contributors 1284</a> 1285 1286 1287<a href="/support" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1288 Support 1289</a> 1290 1291 1292<a href="/brand" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1293 Brand 1294</a> 1295 1296 1297<a href="/sponsor" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1298 Sponsor 1299</a> 1300 1301 1302<a href="/team" class="relative hover:text-woodsmoke-50 transition-colors not-last:after:content-['/'] after:pointer-events-none after:text-woodsmoke-400 after:absolute after:-right-3.5"> 1303 Team 1304</a> 1305 1306 </div> 1307 </div> 1308 </div> 1309 1310 <div> 1311 <div> 1312 <svg 1313 class="w-full" 1314 xmlns="http://www.w3.org/2000/svg" 1315 width="1248"
1316 viewBox="0 0 1248 277" 1317 fill="none" 1318 > 1319 <mask 1320 id="b" 1321 style="mask-type:alpha" 1322 maskUnits="userSpaceOnUse" 1323 x="0" 1324 y="0" 1325 width="1248" 1326 height="281" 1327 > 1328 <g clip-path="url(#a)" fill="#282832"> 1329 <path 1330 d="M1162.91 280.9c-28.36 0-50.9-5.698-67.62-17.094-16.71-11.395-25.83-27.096-27.35-47.102h50.9c1.27 8.61 5.58 15.195 12.92 19.753 7.6 4.305 17.98 6.457 31.15 6.457 11.9 0 20.51-1.646 25.83-4.938 5.57-3.545 8.36-8.483 8.36-14.814 0-4.812-1.65-8.483-4.94-11.016-3.04-2.785-8.74-5.064-17.09-6.837l-31.15-6.458c-23.05-4.811-40.02-12.028-50.91-21.651-10.89-9.876-16.33-22.538-16.33-37.985 0-18.74 7.22-33.301 21.65-43.684 14.44-10.635 34.57-15.953 60.4-15.953 25.58 0 45.97 5.191 61.16 15.574 15.2 10.129 23.55 24.31 25.07 42.543h-50.9c-1.01-6.584-4.56-11.522-10.64-14.814-6.08-3.545-14.69-5.318-25.83-5.318-10.13 0-17.73 1.519-22.79 4.558-4.81 2.786-7.22 6.837-7.22 12.155 0 4.559 2.03 8.231 6.08 11.016 4.05 2.532 10.76 4.812 20.13 6.837l34.95 7.218c19.5 4.051 34.19 11.649 44.07 22.791 10.13 10.889 15.19 23.804 15.19 38.745 0 18.992-7.47 33.807-22.41 44.443-14.69 10.382-35.58 15.574-62.68 15.574ZM983.38 281.091V87.366h56.98v193.725h-56.98Zm-1.9-219.555V0h60.78v61.536h-60.78ZM750.413 281.101V87.376h55.84v45.582h1.14v148.143h-56.98Zm134.853 0V161.068c0-10.636-2.785-18.613-8.357-23.931-5.318-5.318-13.169-7.977-23.552-7.977-8.863 0-16.841 2.026-23.931 6.078-6.838 4.051-12.283 9.622-16.335 16.713-3.799 7.091-5.698 15.447-5.698 25.07l-4.938-46.722c6.331-14.181 15.574-25.45 27.73-33.806 12.409-8.61 27.604-12.915 45.585-12.915 21.526 0 37.987 6.077 49.383 18.233 11.396 11.902 17.094 27.982 17.094 48.241v131.049h-56.981ZM613.1 280.9c-21.272 0-40.013-4.179-56.22-12.536-15.955-8.61-28.491-20.512-37.608-35.706-8.863-15.447-13.295-33.174-13.295-53.179 0-20.006 4.432-37.479 13.295-52.42 9.117-14.941 21.653-26.589 37.608-34.946 16.207-8.357 34.948-12.535 56.22-12.535 21.526 0 40.267 4.178 56.221 12.535 16.208 8.357 28.744 20.005 37.607 34.946 8.864 14.941 13.296 32.414 13.296 52.42 0 20.005-4.559 37.732-13.676 53.179-8.863 15.194-21.399 27.096-37.607 35.706-15.954 8.357-34.568 12.536-55.841 12.536Zm0-44.823c8.864 0 16.841-2.279 23.932-6.837 7.344-4.559 13.169-11.016 17.474-19.373 4.305-8.61 6.458-18.866 6.458-30.768 0-17.473-4.685-30.895-14.055-40.264-9.117-9.623-20.387-14.435-33.809-14.435-13.422 0-24.818 4.812-34.188 14.435-9.117 9.623-13.675 23.044-13.675 40.264 0 11.902 2.152 22.158 6.458 30.768 4.305 8.357 10.003 14.814 17.094 19.373 7.344 4.558 15.448 6.837 24.311 6.837ZM419.774 280.902v-46.721l3.799.759c-2.533 13.928-10.13 25.07-22.793 33.427-12.409 8.357-27.35 12.535-44.824 12.535-17.728 0-33.176-4.051-46.345-12.155-12.915-8.357-22.918-20.005-30.009-34.946-7.091-14.941-10.637-32.541-10.637-52.8 0-20.512 3.672-38.365 11.017-53.559 7.344-15.194 17.6-26.969 30.769-35.326 13.422-8.357 28.997-12.535 46.724-12.535 18.487 0 33.429 4.3
133005 44.825 12.915 11.649 8.61 18.487 20.385 20.513 35.326l-4.179.38V3.61h56.981v277.292h-55.841Zm-45.585-45.582c13.422 0 24.312-4.685 32.669-14.054 8.357-9.623 12.536-23.298 12.536-41.024 0-17.727-4.305-31.275-12.916-40.645-8.357-9.623-19.373-14.434-33.048-14.434-13.169 0-24.059 4.811-32.669 14.434-8.357 9.623-12.536 23.298-12.536 41.024 0 17.727 4.179 31.275 12.536 40.645 8.61 9.369 19.753 14.054 33.428 14.054ZM0 281.104 98.007 7.61h50.142L58.12 281.104H0Zm200.572 0L110.922 7.61h52.422l98.007 273.494h-60.779ZM51.662 175.125H205.13v45.583H51.662v-45.583Z" 1331 ></path> 1332 </g> 1333 </mask> 1334 <g mask="url(#b)"> 1335 <path fill="url(#c)" d="M0 0h1248v282H0z"></path> 1336 </g> 1337 <defs> 1338 <linearGradient 1339 id="c" 1340 x1="662.5" 1341 y1="-55.5" 1342 x2="668.5" 1343 y2="282" 1344 gradientUnits="userSpaceOnUse" 1345 > 1346 <stop stop-color="#4D4D5F"></stop> 1347 <stop offset="1" stop-color="#0D0D10"></stop> 1348 </linearGradient> 1349 <clipPath id="a"> 1350 <path fill="#fff" d="M0 0h1248v281H0z"></path> 1351 </clipPath> 1352 </defs> 1353 </svg> 1354 </div> 1355 </div> 1356 </div> 1357</div> 1358 1359 1360 <div 1361 class="pointer-events-none absolute inset-0 h-full z-99 mix-blend-overlay overscroll-contain bg-noise bg-size-[64px] opacity-20" 1362 ></div> 1363
1363<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"b3fcabc4c85744c3924d25d13183af75","r":1,"spa":2}' crossorigin="anonymous"></script>
1363 1364</body> 1365</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.