8787 < section >
8888 < div class ="mb-8 md:mb-16 ">
8989 < div class ="sm:mx-0 ">
90- < a aria-label ="New Vibe Codable .NET 10 React Templates " href ="posts/vibecode-react-templates ">
91- < img src ="./img/posts/vibecode-react-templates /bg.webp " alt ="Cover Image for New Vibe Codable .NET 10 React Templates " class ="shadow-sm hover:shadow-2xl transition-shadow duration-200 ">
90+ < a aria-label ="New .NET 10 + Angular 21 ASP .NET Identity Auth Tailwind SPA Template " href ="posts/angular-template ">
91+ < img src ="./img/posts/angular-spa /bg.webp " alt ="Cover Image for New .NET 10 + Angular 21 ASP .NET Identity Auth Tailwind SPA Template " class ="shadow-sm hover:shadow-2xl transition-shadow duration-200 ">
9292 </ a >
9393 </ div >
9494 </ div >
9595 < div class ="md:grid md:grid-cols-2 md:gap-x-16 lg:gap-x-8 mb-20 md:mb-28 ">
9696 < div >
9797 < h3 class ="mb-4 text-4xl lg:text-6xl leading-tight ">
98- < a class ="hover:underline " href ="posts/vibecode-react-templates "> New Vibe Codable .NET 10 React Templates </ a >
98+ < a class ="hover:underline " href ="posts/angular-template "> New .NET 10 + Angular 21 ASP .NET Identity Auth Tailwind SPA Template </ a >
9999 </ h3 >
100100 < div class ="mb-4 md:mb-0 text-lg ">
101- < time datetime ="2025-12-04T00 :00:00.0000000 "> December 4 , 2025</ time >
101+ < time datetime ="2025-12-05T00 :00:00.0000000 "> December 5 , 2025</ time >
102102 </ div >
103103 </ div >
104104 < div >
105- < p class ="text-lg leading-relaxed mb-4 "> Exploring the new Vibe Codable .NET 10 React Templates and their NodeProxy architecture </ p >
105+ < p class ="text-lg leading-relaxed mb-4 "> Introducing our new Angular 19 IdentityAuth Tailwind Template with DarkMode and support for RxJS and Signals dev models </ p >
106106 < a class ="flex items-center text-xl font-bold " href ="posts/author/demis-bellot ">
107107 < img src ="/img/authors/demis.webp " class ="w-12 h-12 rounded-full mr-4 " alt ="Author ">
108108 < span > Demis Bellot</ span >
@@ -113,6 +113,42 @@ <h3 class="mb-4 text-4xl lg:text-6xl leading-tight">
113113 < section >
114114 < h2 class ="mb-8 text-6xl md:text-7xl font-bold tracking-tighter leading-tight "> More from the blog</ h2 >
115115 < div class ="mx-auto mt-12 grid max-w-lg gap-5 lg:max-w-none lg:grid-cols-3 ">
116+ < div class ="flex flex-col overflow-hidden rounded-lg shadow-lg ">
117+ < div class ="flex-shrink-0 ">
118+ < a href ="posts/vibecode-react-templates ">
119+ < img class ="h-48 w-full object-cover " src ="./img/posts/vibecode-react-templates/bg.webp " alt ="">
120+ </ a >
121+ </ div >
122+ < div class ="flex flex-1 flex-col justify-between bg-white dark:bg-black p-6 ">
123+ < div class ="flex-1 ">
124+ < p class ="text-sm font-medium text-indigo-600 dark:text-indigo-300 ">
125+ Article
126+ </ p >
127+ < a href ="posts/vibecode-react-templates " class ="mt-2 block ">
128+ < p class ="text-xl font-semibold text-gray-900 dark:text-gray-50 "> New Vibe Codable .NET 10 React Templates</ p >
129+ < p class ="mt-3 text-base text-gray-500 "> Exploring the new Vibe Codable .NET 10 React Templates and their NodeProxy architecture</ p >
130+ </ a >
131+ </ div >
132+ < div class ="mt-6 flex items-center ">
133+ < div class ="flex-shrink-0 ">
134+ < span >
135+ < span class ="sr-only "> Demis Bellot</ span >
136+ < img class ="h-10 w-10 rounded-full " src ="/img/authors/demis.webp " alt ="New Vibe Codable .NET 10 React Templates background ">
137+ </ span >
138+ </ div >
139+ < div class ="ml-3 ">
140+ < p class ="text-sm font-medium text-gray-900 ">
141+ < a href ="posts/author/demis-bellot " class ="hover:underline "> Demis Bellot</ a >
142+ </ p >
143+ < div class ="flex space-x-1 text-sm text-gray-500 ">
144+ < time datetime ="2025-12-04T00:00:00.0000000 "> December 4, 2025</ time >
145+ < span aria-hidden ="true "> ·</ span >
146+ < span > 8 min read</ span >
147+ </ div >
148+ </ div >
149+ </ div >
150+ </ div >
151+ </ div >
116152 < div class ="flex flex-col overflow-hidden rounded-lg shadow-lg ">
117153 < div class ="flex-shrink-0 ">
118154 < a href ="posts/openapi-net10 ">
@@ -293,47 +329,44 @@ <h2 class="mb-8 text-6xl md:text-7xl font-bold tracking-tighter leading-tight">M
293329 </ div >
294330 </ div >
295331 </ div >
296- < div class ="flex flex-col overflow-hidden rounded-lg shadow-lg ">
297- < div class ="flex-shrink-0 ">
298- < a href ="posts/ai-chat ">
299- < img class ="h-48 w-full object-cover " src ="./img/posts/ai-chat/bg.webp " alt ="">
300- </ a >
301- </ div >
302- < div class ="flex flex-1 flex-col justify-between bg-white dark:bg-black p-6 ">
303- < div class ="flex-1 ">
304- < p class ="text-sm font-medium text-indigo-600 dark:text-indigo-300 ">
305- Article
306- </ p >
307- < a href ="posts/ai-chat " class ="mt-2 block ">
308- < p class ="text-xl font-semibold text-gray-900 dark:text-gray-50 "> AI Chat - A Simple OpenAI Chat Completions API, UI & Client LLM Gateway</ p >
309- < p class ="mt-3 text-base text-gray-500 "> Unlock the value of OpenAI Chat APIs using a simple, serializable ChatCompletion DTO that works everywhere</ p >
310- </ a >
311- </ div >
312- < div class ="mt-6 flex items-center ">
313- < div class ="flex-shrink-0 ">
314- < span >
315- < span class ="sr-only "> Demis Bellot</ span >
316- < img class ="h-10 w-10 rounded-full " src ="/img/authors/demis.webp " alt ="AI Chat - A Simple OpenAI Chat Completions API, UI & Client LLM Gateway background ">
317- </ span >
318- </ div >
319- < div class ="ml-3 ">
320- < p class ="text-sm font-medium text-gray-900 ">
321- < a href ="posts/author/demis-bellot " class ="hover:underline "> Demis Bellot</ a >
322- </ p >
323- < div class ="flex space-x-1 text-sm text-gray-500 ">
324- < time datetime ="2025-11-17T00:00:00.0000000 "> November 17, 2025</ time >
325- < span aria-hidden ="true "> ·</ span >
326- < span > 16 min read</ span >
327- </ div >
328- </ div >
329- </ div >
330- </ div >
331- </ div >
332332 </ div >
333333 </ section >
334334 < section class ="mt-24 flex justify-center ">
335335 < div class ="flex max-w-screen-lg ">
336336 < div class ="w-2/3 ">
337+ < div class ="border-b pb-4 mb-4 ">
338+ < div class ="flex justify-between ">
339+ < div class ="w-3/4 ">
340+ < a href ="posts/ai-chat " class ="mt-2 block ">
341+ < p class ="text-xl font-semibold text-gray-900 dark:text-gray-50 "> AI Chat - A Simple OpenAI Chat Completions API, UI & Client LLM Gateway</ p >
342+ < p class ="mt-3 text-base text-gray-500 "> Unlock the value of OpenAI Chat APIs using a simple, serializable ChatCompletion DTO that works everywhere</ p >
343+ </ a >
344+ < div class ="mt-6 flex items-center ">
345+ < div class ="flex-shrink-0 ">
346+ < span >
347+ < span class ="sr-only "> Demis Bellot</ span >
348+ < img class ="h-10 w-10 rounded-full " src ="/img/authors/demis.webp " alt ="AI Chat - A Simple OpenAI Chat Completions API, UI & Client LLM Gateway background ">
349+ </ span >
350+ </ div >
351+ < div class ="ml-3 ">
352+ < p class ="text-sm font-medium text-gray-900 ">
353+ < a href ="posts/author/demis-bellot " class ="hover:underline "> Demis Bellot</ a >
354+ </ p >
355+ < div class ="flex space-x-1 text-sm text-gray-500 ">
356+ < time datetime ="2025-11-17T00:00:00.0000000 "> November 17, 2025</ time >
357+ < span aria-hidden ="true "> ·</ span >
358+ < span > 16 min read</ span >
359+ </ div >
360+ </ div >
361+ </ div >
362+ </ div >
363+ < div class ="w-1/4 ">
364+ < a href ="posts/ai-chat " class ="pt-4 ">
365+ < img class ="w-full object-cover max-h-[130px] " src ="./img/posts/ai-chat/bg.webp " alt ="">
366+ </ a >
367+ </ div >
368+ </ div >
369+ </ div >
337370 < div class ="border-b pb-4 mb-4 ">
338371 < div class ="flex justify-between ">
339372 < div class ="w-3/4 ">
@@ -730,39 +763,6 @@ <h2 class="mb-8 text-6xl md:text-7xl font-bold tracking-tighter leading-tight">M
730763 </ div >
731764 </ div >
732765 </ div >
733- < div class ="border-b pb-4 mb-4 ">
734- < div class ="flex justify-between ">
735- < div class ="w-3/4 ">
736- < a href ="posts/angular-template " class ="mt-2 block ">
737- < p class ="text-xl font-semibold text-gray-900 dark:text-gray-50 "> New Angular 19 ASP.NET Core Identity Auth Tailwind SPA Template</ p >
738- < p class ="mt-3 text-base text-gray-500 "> Introducing our new Angular 19 IdentityAuth Tailwind Template with DarkMode and support for RxJS and Signals dev models</ p >
739- </ a >
740- < div class ="mt-6 flex items-center ">
741- < div class ="flex-shrink-0 ">
742- < span >
743- < span class ="sr-only "> Demis Bellot</ span >
744- < img class ="h-10 w-10 rounded-full " src ="/img/authors/demis.webp " alt ="New Angular 19 ASP.NET Core Identity Auth Tailwind SPA Template background ">
745- </ span >
746- </ div >
747- < div class ="ml-3 ">
748- < p class ="text-sm font-medium text-gray-900 ">
749- < a href ="posts/author/demis-bellot " class ="hover:underline "> Demis Bellot</ a >
750- </ p >
751- < div class ="flex space-x-1 text-sm text-gray-500 ">
752- < time datetime ="2025-05-06T00:00:00.0000000 "> May 6, 2025</ time >
753- < span aria-hidden ="true "> ·</ span >
754- < span > 9 min read</ span >
755- </ div >
756- </ div >
757- </ div >
758- </ div >
759- < div class ="w-1/4 ">
760- < a href ="posts/angular-template " class ="pt-4 ">
761- < img class ="w-full object-cover max-h-[130px] " src ="./img/posts/angular-template/bg.webp " alt ="">
762- </ a >
763- </ div >
764- </ div >
765- </ div >
766766 < div class ="border-b pb-4 mb-4 ">
767767 < div class ="flex justify-between ">
768768 < div class ="w-3/4 ">
0 commit comments