PageSourceSearch

https://adonisjs.com/blog

html adonisjs.com collected 2026-09-25 03:53:42 UTC 71,887 bytes, 1,365 lines download raw bytes

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&#x27;m teaching AI to write AdonisJS the way I would
453                  </h2>
454                  <p class="text-14 text-woodsmoke-500 tracking-wide">AI doesn&#x27;t just need to know about the framework. It needs to be told how to engineer with it. Here&#x27;s where I&#x27;ve landed, and what&#x27;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&#x27;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&#x27;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&#x27;ve been cooking &#x27;undercover&#x27; for quite some time, and we&#x27;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&#x27;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&#x27;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&#x27;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 &#x27;alpha state&#x27; 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&#x27;ve spent four years in the AdonisJS v5 era, and it&#x27;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.