CINXE.COM
Nestjs - DEV Community
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Nestjs - DEV Community</title> <meta name="last-updated" content="2025-02-21 17:30:36 UTC"> <meta name="user-signed-in" content="false"> <meta name="head-cached-at" content="1740159036"> <meta name="environment" content="production"> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-0a971eb021d2dc2b145c1df786e1b97f418c6b2d066e79802fea980acb513937.css" media="all" id="main-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="main-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="main-crayons-stylesheet" /> <script src="https://assets.dev.to/assets/base-a87669a7c932717e71153a0e9be51887fd49f60281c77873f33571fab239e9d6.js" defer="defer"></script> <script src="https://assets.dev.to/assets/application-7258612fccf5d56314a6e4ad1898b4f818f474c4bb3485e302428d489a769a17.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseInitializers-ee70590bbbe9b8f9d750ea9b4b7e809c47123e9064196238ba4e65bc65caf708.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseTracking-b6bf73e5ee66633e151e7d5b7c6bbccedfa4c59e3615be97b98c4c0f543ddae7.js" defer="defer"></script> <meta name="search-script" content="https://assets.dev.to/assets/Search-1667defd820799649d6c3b2864f13786058190df703dd50ab75dce1ccb834c4b.js"> <link rel="canonical" href="https://dev.to/t/nestjs" /> <meta name="description" content="nestjs content on DEV Community"> <meta name="keywords" content="software development, engineering, nestjs"> <meta property="og:type" content="website" /> <meta property="og:url" content="https://dev.to/t/nestjs" /> <meta property="og:title" content="Nestjs" /> <meta property="og:description" content="Nestjs content on DEV Community" /> <meta property="og:site_name" content="DEV Community" /> <meta name="twitter:site" content="@thepracticaldev"> <meta name="twitter:creator" content="@Nestjs"> <meta name="twitter:title" content="Nestjs"> <meta name="twitter:description" content="Nestjs content on DEV Community"> <meta name="twitter:card" content="summary_large_image"> <meta property="og:image" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg"> <meta name="twitter:image:src" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <link rel="icon" type="image/x-icon" href="https://media2.dev.to/dynamic/image/width=32,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <link rel="apple-touch-icon" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://media2.dev.to/dynamic/image/width=152,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="167x167" href="https://media2.dev.to/dynamic/image/width=167,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link href="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="192x192" /> <link href="https://media2.dev.to/dynamic/image/width=128,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="128x128" /> <meta name="apple-mobile-web-app-title" content="dev.to"> <meta name="application-name" content="dev.to"> <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)"> <link rel="search" href="https://dev.to/open-search.xml" type="application/opensearchdescription+xml" title="DEV Community" /> <meta property="forem:name" content="DEV Community" /> <meta property="forem:logo" content="https://media2.dev.to/dynamic/image/width=512,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <meta property="forem:domain" content="dev.to" /> </head> <body class="sans-serif-article-body default-header" data-user-status="logged-out" data-community-name="DEV Community" data-subscription-icon="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" data-locale="en" data-honeybadger-key="hbp_nqu4Y66HuEKlD6YRGssZuRQnPOjDm50J8Zkr" data-deployed-at="2025-02-20T14:56:01Z" data-latest-commit-id="cf24e7ead7627d035c9edc0b634e332f7a728698" data-ga-tracking="UA-71991109-1" data-cookie-banner-user-context="logged_out_only" data-cookie-banner-platform-context="off" data-algolia-id="PRSOBFP46H" data-algolia-search-key="9aa7d31610cba78851c9b1f63776a9dd" data-algolia-display="true" data-dynamic-url-component="bb-2" data-ga4-tracking-id="G-TYEM8Y3JN3"> <script> if (navigator.userAgent.includes('ForemWebView/1') || window.frameElement) { document.body.classList.add("hidden-shell"); } </script> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-0a971eb021d2dc2b145c1df786e1b97f418c6b2d066e79802fea980acb513937.css" media="all" id="secondary-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="secondary-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="secondary-crayons-stylesheet" /> <div id="body-styles"> <style> :root { --accent-brand-lighter-rgb: 80, 99, 301; --accent-brand-rgb: 59, 73, 223; --accent-brand-darker-rgb: 47, 58, 178; } </style> </div> <div id="audiocontent" data-podcast=""> </div> <div class="navigation-progress" id="navigation-progress"></div> <header id="topbar" class="crayons-header topbar print-hidden"> <span id="route-change-target" tabindex="-1"></span> <a href="#main-content" class="skip-content-link">Skip to content</a> <div class="crayons-header__container"> <span class="inline-block m:hidden "> <button class="c-btn c-btn--icon-alone js-hamburger-trigger mx-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="acxak91iiz8vj09fsmr1tfwgi1ilw7iy" class="crayons-icon"><title id="acxak91iiz8vj09fsmr1tfwgi1ilw7iy">Navigation menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </button> </span> <a href="/" class="site-logo" aria-label="DEV Community Home"> <img class="site-logo__img" src="https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png" style="aspect-ratio: 10 / 8" alt="DEV Community"> </a> <div class="crayons-header--search js-search-form" id="header-search"> <form accept-charset="UTF-8" method="get" action="/search" role="search"> <div class="crayons-fields crayons-fields--horizontal"> <div class="crayons-field flex-1 relative"> <input id="search-input" class="crayons-header--search-input crayons-textfield js-search-input" type="text" id="nav-search" name="q" placeholder="Search..." autocomplete="off" /> <button type="submit" aria-label="Search" class="c-btn c-btn--icon-alone absolute inset-px right-auto mt-0 py-0"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="argztb7i3lec42007br2xu6aso4fzad" aria-hidden="true" class="crayons-icon"><title id="argztb7i3lec42007br2xu6aso4fzad">Search</title> <path d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z"></path> </svg> </button> <a class="crayons-header--search-brand-indicator" href="https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral" target="_blank" rel="noopener noreferrer"> Powered by <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" width="24" height="24" viewBox="0 0 500 500.34" role="img" aria-labelledby="apzpduowya42g0ets6l15dib13x7zgk7" aria-hidden="true" class="crayons-icon"><title id="apzpduowya42g0ets6l15dib13x7zgk7">Search</title> <defs></defs><path class="cls-1" d="M250,0C113.38,0,2,110.16,.03,246.32c-2,138.29,110.19,252.87,248.49,253.67,42.71,.25,83.85-10.2,120.38-30.05,3.56-1.93,4.11-6.83,1.08-9.52l-23.39-20.74c-4.75-4.22-11.52-5.41-17.37-2.92-25.5,10.85-53.21,16.39-81.76,16.04-111.75-1.37-202.04-94.35-200.26-206.1,1.76-110.33,92.06-199.55,202.8-199.55h202.83V407.68l-115.08-102.25c-3.72-3.31-9.43-2.66-12.43,1.31-18.47,24.46-48.56,39.67-81.98,37.36-46.36-3.2-83.92-40.52-87.4-86.86-4.15-55.28,39.65-101.58,94.07-101.58,49.21,0,89.74,37.88,93.97,86.01,.38,4.28,2.31,8.28,5.53,11.13l29.97,26.57c3.4,3.01,8.8,1.17,9.63-3.3,2.16-11.55,2.92-23.6,2.07-35.95-4.83-70.39-61.84-127.01-132.26-131.35-80.73-4.98-148.23,58.18-150.37,137.35-2.09,77.15,61.12,143.66,138.28,145.36,32.21,.71,62.07-9.42,86.2-26.97l150.36,133.29c6.45,5.71,16.62,1.14,16.62-7.48V9.49C500,4.25,495.75,0,490.51,0H250Z"></path> </svg> Algolia </a> </div> </div> </form> </div> <div class="flex items-center h-100 ml-auto"> <div class="flex" id="authentication-top-nav-actions"> <span class="hidden m:block"> <a href="https://dev.to/enter" class="c-link c-link--block mr-2 whitespace-nowrap ml-auto" data-no-instant> Log in </a> </span> <a href="https://dev.to/enter?state=new-user" data-tracking-id="ca_top_nav" data-tracking-source="top_navbar" class="c-cta c-cta--branded whitespace-nowrap mr-2" data-no-instant> Create account </a> </div> </div> </div> </header> <div class="hamburger"> <div class="hamburger__content"> <header class="hamburger__content__header"> <h2 class="fs-l fw-bold flex-1 break-word lh-tight">DEV Community</h2> <button class="c-btn c-btn--icon-alone js-hamburger-trigger shrink-0" aria-label="Close"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="asz282e1h7cp7o2d85euvfnwfeyi9s6" aria-hidden="true" class="crayons-icon c-btn__icon"><title id="asz282e1h7cp7o2d85euvfnwfeyi9s6">Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </button> </header> <div class="p-2 js-navigation-links-container" id="authentication-hamburger-actions"> </div> </div> <div class="hamburger__overlay js-hamburger-trigger"></div> </div> <div id="active-broadcast" class="broadcast-wrapper"></div> <div id="page-content" class="wrapper tagged_articles tagged_articles-index" data-current-page="tagged_articles-index"> <div id="page-content-inner" data-internal-nav="false"> <div id="page-route-change" class="screen-reader-only" aria-live="polite" aria-atomic="true"></div> <div data-tag-id="7006" data-tag-name="nestjs" id="tag-7006" class="crayons-layout js-tag-card"> <header class="crayons-card branded-4 p-4 l:p-6 spec__tag-header" style="border-top-color: "> <div class="flex"> <div class="flex flex-col w-100 justify-center"> <div class="flex justify-between items-center"> <h1 class="crayons-title"> <span class="opacity-50">#</span> nestjs </h1> <div id="tag-buttons-7006" class="mt-auto flex items-end justify-between"> <div class="flex gap-2"> <button class="c-btn c-btn--primary js-follow-tag-button" aria-label="Follow tag: nestjs"> Follow </button> <button class="c-btn js-hide-tag-button" aria-label="Hide tag: nestjs"> Hide </button> </div> </div> </div> </div> </div> </header> </div> <div class="home sub-home" id="index-container" data-params="{"tag":"nestjs","sort_by":"hotness_score","sort_direction":"desc"}" data-which="" data-tag="nestjs" data-feed="base-feed" data-requires-approval="false" data-articles-since=""> <div id="sidebar-wrapper-left" class="sidebar-wrapper sidebar-wrapper-left"> <div class="sidebar-bg" id="sidebar-bg-left"></div> <aside class="side-bar"> <div class="widget js-policy-article-create"> <a class="crayons-btn crayons-btn--s" href="/new/nestjs"> Create Post </a> </div> <div class="sidebar-data"> <div> 1047 Posts Published </div> <hr /> <div class="olderposts-header">Older #nestjs posts</div> <div class="olderposts-links"> <span class="olderposts-pagenumber">1</span> <a href="https://dev.to/t/nestjs/page/2" class="olderposts-pagenumber">2</a> <a href="https://dev.to/t/nestjs/page/3" class="olderposts-pagenumber">3</a> <a href="https://dev.to/t/nestjs/page/4" class="olderposts-pagenumber">4</a> <a href="https://dev.to/t/nestjs/page/5" class="olderposts-pagenumber">5</a> <a href="https://dev.to/t/nestjs/page/6" class="olderposts-pagenumber">6</a> <a href="https://dev.to/t/nestjs/page/7" class="olderposts-pagenumber">7</a> <a href="https://dev.to/t/nestjs/page/8" class="olderposts-pagenumber">8</a> <a href="https://dev.to/t/nestjs/page/9" class="olderposts-pagenumber">9</a> </div> </div> </aside> </div> <main class="articles-list" id="main-content" data-follow-button-container="true"> <header class="flex items-center p-2 m:p-0 m:pb-2" id="on-page-nav-controls"> <h1 class="screen-reader-only">Posts</h1> <button type="button" class="crayons-btn crayons-btn--ghost crayons-btn--icon mr-2 inline-block m:hidden mb-auto" id="on-page-nav-butt-left" aria-label="nav-button-left"> <div class="crayons-icon nav-icon "> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a5ddxbehnj0dewkv13hxnive3ik69s9a" class="crayons-icon"><title id="a5ddxbehnj0dewkv13hxnive3ik69s9a">Left menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </div> </button> <div class="flex-1 flex items-center justify-between"> <div class="crayons-notice w-100" aria-live="polite">👋 <a href="/enter">Sign in</a> for the ability to sort posts by <strong>relevant</strong>, <strong>latest</strong>, or <strong>top</strong>.</div> </div> <button type="button" class="crayons-btn crayons-btn--ghost crayons-btn--icon ml-2 inline-block l:hidden mb-auto" id="on-page-nav-butt-right" aria-label="nav-button-right"> <div class="crayons-icon nav-icon "> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a1813qv7qutwxg8bi0p5xq43b8e1q4ct" class="crayons-icon"><title id="a1813qv7qutwxg8bi0p5xq43b8e1q4ct">Right menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </div> </button> </header> <div class="substories" id="substories"> <div class="crayons-story " data-feed-content-id="2286574" data-content-user-id="1179366"> <a href="https://dev.to/nestjs-ninja/implementing-kubernetes-jobs-with-nestjs-and-nest-commander-a-practical-guide-ex-implementation-2a5d" aria-labelledby="article-link-2286574" class="crayons-story__hidden-navigation-link">Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster)</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/nestjs-ninja"> <img alt="NestJS-Ninja logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10341%2Fe7d95532-d8ed-46d1-bdf2-08834ef19f68.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/henriqueweiand" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1179366%2F48f72873-6af3-442a-b196-4341ab171d04.png" alt="henriqueweiand profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/henriqueweiand" class="crayons-story__secondary fw-medium m:hidden"> Henrique Weiand </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2286574" aria-controls="story-author-preview-content-2286574" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Henrique Weiand profile details"> Henrique Weiand </button> <div id="story-author-preview-content-2286574" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/henriqueweiand" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1179366%2F48f72873-6af3-442a-b196-4341ab171d04.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Henrique Weiand</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1179366,"className":"User","name":"Henrique Weiand"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1179366"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/nestjs-ninja" class="crayons-story__secondary fw-medium">NestJS-Ninja</a> </span> </div> <a href="https://dev.to/nestjs-ninja/implementing-kubernetes-jobs-with-nestjs-and-nest-commander-a-practical-guide-ex-implementation-2a5d" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-18T20:30:37Z">Feb 18</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739910637"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/nestjs-ninja/implementing-kubernetes-jobs-with-nestjs-and-nest-commander-a-practical-guide-ex-implementation-2a5d" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhupdsebc6omtxdjq021.png" id="article-link-2286574"> Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster) </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(50, 109, 230, 0.10); --tag-prefix: #326de6; --tag-bg-hover: rgba(50, 109, 230, 0.10); --tag-prefix-hover: #326de6; " href="/t/kubernetes"><span class="crayons-tag__prefix">#</span>kubernetes</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/nestjs-ninja/implementing-kubernetes-jobs-with-nestjs-and-nest-commander-a-practical-guide-ex-implementation-2a5d" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2286574" aria-label="Add a comment to post - Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster)"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/nestjs-ninja/implementing-kubernetes-jobs-with-nestjs-and-nest-commander-a-practical-guide-ex-implementation-2a5d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster)"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ah3xtvy2fr962woy05t0blfzhtkxv9th" class="crayons-icon"><title id="ah3xtvy2fr962woy05t0blfzhtkxv9th">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> <button type="button" id="article-save-button-2286574" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2286574" data-article-author-id="1179366" aria-label="Save post Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster) to reading list" title="Save post Implementing Kubernetes Jobs with NestJS and nest-commander: A Practical Guide (Ex. implementation with Ticketmaster) to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2286504" data-content-user-id="810508"> <a href="https://dev.to/subhos/managing-mongoose-projections-in-nestjs-3fl0" aria-labelledby="article-link-2286504" class="crayons-story__hidden-navigation-link">Managing Mongoose Projections in NestJS</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/subhos" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F810508%2Ffddafe90-7476-4e2d-89c8-8e6ce524056a.jpeg" alt="subhos profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/subhos" class="crayons-story__secondary fw-medium m:hidden"> Subhadeep Datta </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2286504" aria-controls="story-author-preview-content-2286504" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Subhadeep Datta profile details"> Subhadeep Datta </button> <div id="story-author-preview-content-2286504" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/subhos" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F810508%2Ffddafe90-7476-4e2d-89c8-8e6ce524056a.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Subhadeep Datta</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":810508,"className":"User","name":"Subhadeep Datta"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="810508"></div> </div> </div> </div> </div> <a href="https://dev.to/subhos/managing-mongoose-projections-in-nestjs-3fl0" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-18T19:15:02Z">Feb 18</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739906102"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/subhos/managing-mongoose-projections-in-nestjs-3fl0" data-preload-image="" id="article-link-2286504"> Managing Mongoose Projections in NestJS </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(123, 204, 124, 0.10); --tag-prefix: #7bcc7c; --tag-bg-hover: rgba(123, 204, 124, 0.10); --tag-prefix-hover: #7bcc7c; " href="/t/mongodb"><span class="crayons-tag__prefix">#</span>mongodb</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/firstpostpanic"><span class="crayons-tag__prefix">#</span>firstpostpanic</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/databasesecurity"><span class="crayons-tag__prefix">#</span>databasesecurity</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/subhos/managing-mongoose-projections-in-nestjs-3fl0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Managing Mongoose Projections in NestJS"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aq1zmxoq0coas0vzqxhvjgxalnmmplfo" class="crayons-icon"><title id="aq1zmxoq0coas0vzqxhvjgxalnmmplfo">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2286504" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2286504" data-article-author-id="810508" aria-label="Save post Managing Mongoose Projections in NestJS to reading list" title="Save post Managing Mongoose Projections in NestJS to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2286200" data-content-user-id="1261194"> <a href="https://dev.to/drilonhametaj25/ediliziami-un-gestionale-moderno-per-la-complessita-dei-cantieri-4lke" aria-labelledby="article-link-2286200" class="crayons-story__hidden-navigation-link">EdiliziaMi: Un gestionale moderno per la complessità dei cantieri</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/drilonhametaj25" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1261194%2Ff221dee0-549b-4075-8264-3bdec2319d50.jpeg" alt="drilonhametaj25 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/drilonhametaj25" class="crayons-story__secondary fw-medium m:hidden"> Drilon Hametaj </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2286200" aria-controls="story-author-preview-content-2286200" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Drilon Hametaj profile details"> Drilon Hametaj </button> <div id="story-author-preview-content-2286200" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/drilonhametaj25" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1261194%2Ff221dee0-549b-4075-8264-3bdec2319d50.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Drilon Hametaj</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1261194,"className":"User","name":"Drilon Hametaj"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1261194"></div> </div> </div> </div> </div> <a href="https://dev.to/drilonhametaj25/ediliziami-un-gestionale-moderno-per-la-complessita-dei-cantieri-4lke" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-18T15:32:12Z">Feb 18</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739892732"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/drilonhametaj25/ediliziami-un-gestionale-moderno-per-la-complessita-dei-cantieri-4lke" data-preload-image="" id="article-link-2286200"> EdiliziaMi: Un gestionale moderno per la complessità dei cantieri </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(137, 6, 6, 0.10); --tag-prefix: #890606; --tag-bg-hover: rgba(137, 6, 6, 0.10); --tag-prefix-hover: #890606; " href="/t/programming"><span class="crayons-tag__prefix">#</span>programming</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 197, 246, 0.10); --tag-prefix: #56C5F6; --tag-bg-hover: rgba(86, 197, 246, 0.10); --tag-prefix-hover: #56C5F6; " href="/t/flutter"><span class="crayons-tag__prefix">#</span>flutter</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/drilonhametaj25/ediliziami-un-gestionale-moderno-per-la-complessita-dei-cantieri-4lke" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2286200" aria-label="Add a comment to post - EdiliziaMi: Un gestionale moderno per la complessità dei cantieri"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/drilonhametaj25/ediliziami-un-gestionale-moderno-per-la-complessita-dei-cantieri-4lke#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - EdiliziaMi: Un gestionale moderno per la complessità dei cantieri"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a8hsipby3roiqs0rr7gstzaofg19eyjb" class="crayons-icon"><title id="a8hsipby3roiqs0rr7gstzaofg19eyjb">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2286200" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2286200" data-article-author-id="1261194" aria-label="Save post EdiliziaMi: Un gestionale moderno per la complessità dei cantieri to reading list" title="Save post EdiliziaMi: Un gestionale moderno per la complessità dei cantieri to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2289793" data-content-user-id="2808747"> <a href="https://dev.to/zorous/monorepos-3f0o" aria-labelledby="article-link-2289793" class="crayons-story__hidden-navigation-link">Monorepos</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/zorous" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2808747%2Fe6041948-0681-4694-b46e-6a8865882e5f.jpeg" alt="zorous profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/zorous" class="crayons-story__secondary fw-medium m:hidden"> Oussama Belhadi </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2289793" aria-controls="story-author-preview-content-2289793" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Oussama Belhadi profile details"> Oussama Belhadi </button> <div id="story-author-preview-content-2289793" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/zorous" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2808747%2Fe6041948-0681-4694-b46e-6a8865882e5f.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Oussama Belhadi</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2808747,"className":"User","name":"Oussama Belhadi"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2808747"></div> </div> </div> </div> </div> <a href="https://dev.to/zorous/monorepos-3f0o" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-20T13:07:21Z">Feb 20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1740056841"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zorous/monorepos-3f0o" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzdjfauzpacpxhds5mfz.png" id="article-link-2289793"> Monorepos </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/nextjs"><span class="crayons-tag__prefix">#</span>nextjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/monorepos"><span class="crayons-tag__prefix">#</span>monorepos</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zorous/monorepos-3f0o" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2289793" aria-label="Add a comment to post - Monorepos"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">2<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/zorous/monorepos-3f0o#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Monorepos"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aihqvx8cbmrnrwmh78hmhsp92sr1p434" class="crayons-icon"><title id="aihqvx8cbmrnrwmh78hmhsp92sr1p434">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2289793" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2289793" data-article-author-id="2808747" aria-label="Save post Monorepos to reading list" title="Save post Monorepos to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2281940" data-content-user-id="2869411"> <a href="https://dev.to/simonhaydendev/nestjs-prisma-proxy--3hc3" aria-labelledby="article-link-2281940" class="crayons-story__hidden-navigation-link">Nestjs + Prisma + Proxy = ♥️</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/simonhaydendev" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2869411%2Fc21866f8-c4e5-468c-8e8f-d4bb3069aa18.png" alt="simonhaydendev profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/simonhaydendev" class="crayons-story__secondary fw-medium m:hidden"> Simon Hayden </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2281940" aria-controls="story-author-preview-content-2281940" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Simon Hayden profile details"> Simon Hayden </button> <div id="story-author-preview-content-2281940" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/simonhaydendev" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2869411%2Fc21866f8-c4e5-468c-8e8f-d4bb3069aa18.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Simon Hayden</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2869411,"className":"User","name":"Simon Hayden"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2869411"></div> </div> </div> </div> </div> <a href="https://dev.to/simonhaydendev/nestjs-prisma-proxy--3hc3" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-16T09:11:36Z">Feb 16</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739697096"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/simonhaydendev/nestjs-prisma-proxy--3hc3" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fse2v1mv78kvhvpsc1jap.png" id="article-link-2281940"> Nestjs + Prisma + Proxy = ♥️ </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(76, 81, 191, 0.10); --tag-prefix: #4C51BF; --tag-bg-hover: rgba(76, 81, 191, 0.10); --tag-prefix-hover: #4C51BF; " href="/t/prisma"><span class="crayons-tag__prefix">#</span>prisma</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/dependencyinversion"><span class="crayons-tag__prefix">#</span>dependencyinversion</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/simonhaydendev/nestjs-prisma-proxy--3hc3" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2281940" aria-label="Add a comment to post - Nestjs + Prisma + Proxy = ♥️"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/simonhaydendev/nestjs-prisma-proxy--3hc3#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Nestjs + Prisma + Proxy = ♥️"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a8webwbc1o4ae3cwhtpukaoimkr7l28p" class="crayons-icon"><title id="a8webwbc1o4ae3cwhtpukaoimkr7l28p">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 8 min read </small> <button type="button" id="article-save-button-2281940" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2281940" data-article-author-id="2869411" aria-label="Save post Nestjs + Prisma + Proxy = ♥️ to reading list" title="Save post Nestjs + Prisma + Proxy = ♥️ to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2289307" data-content-user-id="818026"> <a href="https://dev.to/naahio/what-do-you-think-about-the-current-state-of-nestjs-in-the-backend-ecosystem-1aje" aria-labelledby="article-link-2289307" class="crayons-story__hidden-navigation-link">What do you think about the current state of NestJS in the backend ecosystem?</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/naahio" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F818026%2Fb5177a2e-d9ec-4f49-b708-0d03487b77d5.jpeg" alt="naahio profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/naahio" class="crayons-story__secondary fw-medium m:hidden"> naahio </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2289307" aria-controls="story-author-preview-content-2289307" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="naahio profile details"> naahio </button> <div id="story-author-preview-content-2289307" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/naahio" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F818026%2Fb5177a2e-d9ec-4f49-b708-0d03487b77d5.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">naahio</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":818026,"className":"User","name":"naahio"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="818026"></div> </div> </div> </div> </div> <a href="https://dev.to/naahio/what-do-you-think-about-the-current-state-of-nestjs-in-the-backend-ecosystem-1aje" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-20T08:23:26Z">Feb 20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1740039806"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/naahio/what-do-you-think-about-the-current-state-of-nestjs-in-the-backend-ecosystem-1aje" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3hyb9m0u8m16jn4ru8r.png" id="article-link-2289307"> What do you think about the current state of NestJS in the backend ecosystem? </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/backend"><span class="crayons-tag__prefix">#</span>backend</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/naahio/what-do-you-think-about-the-current-state-of-nestjs-in-the-backend-ecosystem-1aje#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - What do you think about the current state of NestJS in the backend ecosystem?"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="akdrriy1ipkyvb9l253dpalorytm0qoo" class="crayons-icon"><title id="akdrriy1ipkyvb9l253dpalorytm0qoo">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 1<span class="hidden s:inline"> comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2289307" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2289307" data-article-author-id="818026" aria-label="Save post What do you think about the current state of NestJS in the backend ecosystem? to reading list" title="Save post What do you think about the current state of NestJS in the backend ecosystem? to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2283304" data-content-user-id="749273"> <a href="https://dev.to/abhivyaktii/understanding-pre-and-post-middleware-in-mongoose-with-nestjs-typescript-3acf" aria-labelledby="article-link-2283304" class="crayons-story__hidden-navigation-link">Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/abhivyaktii" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F749273%2F193d608f-4a57-45b3-8db5-eed4a99a9077.jpg" alt="abhivyaktii profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/abhivyaktii" class="crayons-story__secondary fw-medium m:hidden"> Abhinav </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2283304" aria-controls="story-author-preview-content-2283304" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Abhinav profile details"> Abhinav </button> <div id="story-author-preview-content-2283304" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/abhivyaktii" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F749273%2F193d608f-4a57-45b3-8db5-eed4a99a9077.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Abhinav</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":749273,"className":"User","name":"Abhinav"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="749273"></div> </div> </div> </div> </div> <a href="https://dev.to/abhivyaktii/understanding-pre-and-post-middleware-in-mongoose-with-nestjs-typescript-3acf" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-17T07:28:04Z">Feb 17</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739777284"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/abhivyaktii/understanding-pre-and-post-middleware-in-mongoose-with-nestjs-typescript-3acf" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlkxaqm27rqy2xmoga5c.png" id="article-link-2283304"> Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀 </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/mongoose"><span class="crayons-tag__prefix">#</span>mongoose</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(123, 204, 124, 0.10); --tag-prefix: #7bcc7c; --tag-bg-hover: rgba(123, 204, 124, 0.10); --tag-prefix-hover: #7bcc7c; " href="/t/mongodb"><span class="crayons-tag__prefix">#</span>mongodb</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/abhivyaktii/understanding-pre-and-post-middleware-in-mongoose-with-nestjs-typescript-3acf" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2283304" aria-label="Add a comment to post - Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">2<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/abhivyaktii/understanding-pre-and-post-middleware-in-mongoose-with-nestjs-typescript-3acf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="an0eewuy0iatume2syj0jtaftkddbwmm" class="crayons-icon"><title id="an0eewuy0iatume2syj0jtaftkddbwmm">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2283304" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2283304" data-article-author-id="749273" aria-label="Save post Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀 to reading list" title="Save post Understanding Pre and Post Middleware in Mongoose with NestJS & TypeScript 🚀 to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2272069" data-content-user-id="670345"> <a href="https://dev.to/o_oleh/open-source-figma-plugin-for-image-optimization-favicon-generation-and-background-removing-586l" aria-labelledby="article-link-2272069" class="crayons-story__hidden-navigation-link">[Open source] Figma plugin for image optimization, favicon generation and background removing.</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/o_oleh" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F670345%2F9a0689a2-bd89-432f-beba-58c7835277e8.jpeg" alt="o_oleh profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/o_oleh" class="crayons-story__secondary fw-medium m:hidden"> Oleh </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2272069" aria-controls="story-author-preview-content-2272069" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Oleh profile details"> Oleh </button> <div id="story-author-preview-content-2272069" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/o_oleh" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F670345%2F9a0689a2-bd89-432f-beba-58c7835277e8.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Oleh</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":670345,"className":"User","name":"Oleh"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="670345"></div> </div> </div> </div> </div> <a href="https://dev.to/o_oleh/open-source-figma-plugin-for-image-optimization-favicon-generation-and-background-removing-586l" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T20:42:10Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739306530"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/o_oleh/open-source-figma-plugin-for-image-optimization-favicon-generation-and-background-removing-586l" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9hvbp5staf8lbqfwwag.png" id="article-link-2272069"> [Open source] Figma plugin for image optimization, favicon generation and background removing. </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(38, 190, 0, 0.10); --tag-prefix: #26BE00; --tag-bg-hover: rgba(38, 190, 0, 0.10); --tag-prefix-hover: #26BE00; " href="/t/opensource"><span class="crayons-tag__prefix">#</span>opensource</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(34, 34, 34, 0.10); --tag-prefix: #222222; --tag-bg-hover: rgba(34, 34, 34, 0.10); --tag-prefix-hover: #222222; " href="/t/react"><span class="crayons-tag__prefix">#</span>react</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/o_oleh/open-source-figma-plugin-for-image-optimization-favicon-generation-and-background-removing-586l" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2272069" aria-label="Add a comment to post - [Open source] Figma plugin for image optimization, favicon generation and background removing."> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/o_oleh/open-source-figma-plugin-for-image-optimization-favicon-generation-and-background-removing-586l#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - [Open source] Figma plugin for image optimization, favicon generation and background removing."> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aewou0mskx20ohcyvkc9kujdbbto9ki1" class="crayons-icon"><title id="aewou0mskx20ohcyvkc9kujdbbto9ki1">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2272069" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2272069" data-article-author-id="670345" aria-label="Save post [Open source] Figma plugin for image optimization, favicon generation and background removing. to reading list" title="Save post [Open source] Figma plugin for image optimization, favicon generation and background removing. to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2270694" data-content-user-id="837358"> <a href="https://dev.to/lgtome/nestjs-prisma-logs-4926" aria-labelledby="article-link-2270694" class="crayons-story__hidden-navigation-link">NestJs Prisma Logs</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/lgtome" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F837358%2Fe1ed2e6a-a4fc-407d-a97f-e0a8dcdcf7ab.jpeg" alt="lgtome profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/lgtome" class="crayons-story__secondary fw-medium m:hidden"> Denys </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2270694" aria-controls="story-author-preview-content-2270694" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Denys profile details"> Denys </button> <div id="story-author-preview-content-2270694" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/lgtome" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F837358%2Fe1ed2e6a-a4fc-407d-a97f-e0a8dcdcf7ab.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Denys</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":837358,"className":"User","name":"Denys"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="837358"></div> </div> </div> </div> </div> <a href="https://dev.to/lgtome/nestjs-prisma-logs-4926" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T07:12:21Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739257941"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/lgtome/nestjs-prisma-logs-4926" data-preload-image="" id="article-link-2270694"> NestJs Prisma Logs </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/backend"><span class="crayons-tag__prefix">#</span>backend</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/lgtome/nestjs-prisma-logs-4926" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2270694" aria-label="Add a comment to post - NestJs Prisma Logs"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">3<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/lgtome/nestjs-prisma-logs-4926#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - NestJs Prisma Logs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="anxne0200o7dwy3gy9mvkr4rzmun5eyf" class="crayons-icon"><title id="anxne0200o7dwy3gy9mvkr4rzmun5eyf">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2270694" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2270694" data-article-author-id="837358" aria-label="Save post NestJs Prisma Logs to reading list" title="Save post NestJs Prisma Logs to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2271244" data-content-user-id="876047"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-38mp" aria-labelledby="article-link-2271244" class="crayons-story__hidden-navigation-link">Simple Email Integration in NestJS with SendGrid</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ashishpatel546" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F876047%2F1810cd00-c4de-4d4a-9f8f-5cf61d405939.jpeg" alt="ashishpatel546 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ashishpatel546" class="crayons-story__secondary fw-medium m:hidden"> Ashish Patel </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2271244" aria-controls="story-author-preview-content-2271244" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Ashish Patel profile details"> Ashish Patel </button> <div id="story-author-preview-content-2271244" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ashishpatel546" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F876047%2F1810cd00-c4de-4d4a-9f8f-5cf61d405939.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Ashish Patel</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":876047,"className":"User","name":"Ashish Patel"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="876047"></div> </div> </div> </div> </div> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-38mp" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T11:55:44Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739274944"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-38mp" data-preload-image="" id="article-link-2271244"> Simple Email Integration in NestJS with SendGrid </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjsemail"><span class="crayons-tag__prefix">#</span>nestjsemail</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjssendgrid"><span class="crayons-tag__prefix">#</span>nestjssendgrid</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/sendgrid"><span class="crayons-tag__prefix">#</span>sendgrid</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-38mp" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2271244" aria-label="Add a comment to post - Simple Email Integration in NestJS with SendGrid"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-38mp#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Simple Email Integration in NestJS with SendGrid"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aadyb8impwr913mblnd1pzknca4zosj5" class="crayons-icon"><title id="aadyb8impwr913mblnd1pzknca4zosj5">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2271244" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2271244" data-article-author-id="876047" aria-label="Save post Simple Email Integration in NestJS with SendGrid to reading list" title="Save post Simple Email Integration in NestJS with SendGrid to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2271138" data-content-user-id="2027385"> <a href="https://dev.to/yehor_kardash_2d268868708/backwards-compatibility-in-nestjs-n6e" aria-labelledby="article-link-2271138" class="crayons-story__hidden-navigation-link">Backward compatibility in NestJS</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/yehor_kardash_2d268868708" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2027385%2F48eeee45-e8bc-4730-afc6-df9162497318.png" alt="yehor_kardash_2d268868708 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/yehor_kardash_2d268868708" class="crayons-story__secondary fw-medium m:hidden"> Yehor Kardash </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2271138" aria-controls="story-author-preview-content-2271138" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Yehor Kardash profile details"> Yehor Kardash </button> <div id="story-author-preview-content-2271138" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/yehor_kardash_2d268868708" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2027385%2F48eeee45-e8bc-4730-afc6-df9162497318.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Yehor Kardash</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2027385,"className":"User","name":"Yehor Kardash"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2027385"></div> </div> </div> </div> </div> <a href="https://dev.to/yehor_kardash_2d268868708/backwards-compatibility-in-nestjs-n6e" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T11:28:11Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739273291"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/yehor_kardash_2d268868708/backwards-compatibility-in-nestjs-n6e" data-preload-image="" id="article-link-2271138"> Backward compatibility in NestJS </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/express"><span class="crayons-tag__prefix">#</span>express</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/yehor_kardash_2d268868708/backwards-compatibility-in-nestjs-n6e" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2271138" aria-label="Add a comment to post - Backward compatibility in NestJS"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/yehor_kardash_2d268868708/backwards-compatibility-in-nestjs-n6e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Backward compatibility in NestJS"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a183x8p4mlu87v295smvp8jwknuuh7xe" class="crayons-icon"><title id="a183x8p4mlu87v295smvp8jwknuuh7xe">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> <button type="button" id="article-save-button-2271138" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2271138" data-article-author-id="2027385" aria-label="Save post Backward compatibility in NestJS to reading list" title="Save post Backward compatibility in NestJS to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2271121" data-content-user-id="876047"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-3l56" aria-labelledby="article-link-2271121" class="crayons-story__hidden-navigation-link">Simple Email Integration in NestJS with SendGrid</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ashishpatel546" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F876047%2F1810cd00-c4de-4d4a-9f8f-5cf61d405939.jpeg" alt="ashishpatel546 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ashishpatel546" class="crayons-story__secondary fw-medium m:hidden"> Ashish Patel </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2271121" aria-controls="story-author-preview-content-2271121" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Ashish Patel profile details"> Ashish Patel </button> <div id="story-author-preview-content-2271121" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ashishpatel546" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F876047%2F1810cd00-c4de-4d4a-9f8f-5cf61d405939.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Ashish Patel</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":876047,"className":"User","name":"Ashish Patel"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="876047"></div> </div> </div> </div> </div> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-3l56" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T11:11:26Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739272286"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-3l56" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2lakhngxc3e3h5iamtm.jpg" id="article-link-2271121"> Simple Email Integration in NestJS with SendGrid </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjsemail"><span class="crayons-tag__prefix">#</span>nestjsemail</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjssendgrid"><span class="crayons-tag__prefix">#</span>nestjssendgrid</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/sendgrid"><span class="crayons-tag__prefix">#</span>sendgrid</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-3l56" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2271121" aria-label="Add a comment to post - Simple Email Integration in NestJS with SendGrid"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">7<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/ashishpatel546/simple-email-integration-in-nestjs-with-sendgrid-3l56#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Simple Email Integration in NestJS with SendGrid"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ahfd8vemrt8genvpkgkjdsf7ts9cp7yb" class="crayons-icon"><title id="ahfd8vemrt8genvpkgkjdsf7ts9cp7yb">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 2<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2271121" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2271121" data-article-author-id="876047" aria-label="Save post Simple Email Integration in NestJS with SendGrid to reading list" title="Save post Simple Email Integration in NestJS with SendGrid to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2269240" data-content-user-id="1261378"> <a href="https://dev.to/nurulislamrimon/delete-eslintprettierprettier-error-solve-3434" aria-labelledby="article-link-2269240" class="crayons-story__hidden-navigation-link">Delete ` CR` eslint(prettier/prettier) error solved</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/nurulislamrimon" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1261378%2F595704c6-5506-4591-b369-09b64fef67ff.png" alt="nurulislamrimon profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/nurulislamrimon" class="crayons-story__secondary fw-medium m:hidden"> Nurul Islam Rimon </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2269240" aria-controls="story-author-preview-content-2269240" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Nurul Islam Rimon profile details"> Nurul Islam Rimon </button> <div id="story-author-preview-content-2269240" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/nurulislamrimon" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1261378%2F595704c6-5506-4591-b369-09b64fef67ff.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Nurul Islam Rimon</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1261378,"className":"User","name":"Nurul Islam Rimon"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1261378"></div> </div> </div> </div> </div> <a href="https://dev.to/nurulislamrimon/delete-eslintprettierprettier-error-solve-3434" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-10T11:24:16Z">Feb 10</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739186656"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/nurulislamrimon/delete-eslintprettierprettier-error-solve-3434" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05hhyk8lzxgyin7aqsfy.png" id="article-link-2269240"> Delete ` CR` eslint(prettier/prettier) error solved </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/prettier"><span class="crayons-tag__prefix">#</span>prettier</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/nurulislamrimon/delete-eslintprettierprettier-error-solve-3434" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2269240" aria-label="Add a comment to post - Delete ` CR` eslint(prettier/prettier) error solved"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/nurulislamrimon/delete-eslintprettierprettier-error-solve-3434#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Delete ` CR` eslint(prettier/prettier) error solved"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a5d7ijnd3lrss4qx29cdk1k9oyemhyjm" class="crayons-icon"><title id="a5d7ijnd3lrss4qx29cdk1k9oyemhyjm">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2269240" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2269240" data-article-author-id="1261378" aria-label="Save post Delete ` CR` eslint(prettier/prettier) error solved to reading list" title="Save post Delete ` CR` eslint(prettier/prettier) error solved to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2269957" data-content-user-id="1012829"> <a href="https://dev.to/wallacefreitas/adopting-nestjs-in-legacy-projects-benefits-and-challenges-4a44" aria-labelledby="article-link-2269957" class="crayons-story__hidden-navigation-link">Adopting NestJS in Legacy Projects: Benefits and Challenges</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/wallacefreitas" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1012829%2F873dd1df-ba7d-435c-bdc8-567e41d23043.jpg" alt="wallacefreitas profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/wallacefreitas" class="crayons-story__secondary fw-medium m:hidden"> Wallace Freitas </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2269957" aria-controls="story-author-preview-content-2269957" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Wallace Freitas profile details"> Wallace Freitas </button> <div id="story-author-preview-content-2269957" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/wallacefreitas" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1012829%2F873dd1df-ba7d-435c-bdc8-567e41d23043.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Wallace Freitas</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1012829,"className":"User","name":"Wallace Freitas"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1012829"></div> </div> </div> </div> </div> <a href="https://dev.to/wallacefreitas/adopting-nestjs-in-legacy-projects-benefits-and-challenges-4a44" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-10T19:38:45Z">Feb 10</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739216325"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/wallacefreitas/adopting-nestjs-in-legacy-projects-benefits-and-challenges-4a44" data-preload-image="" id="article-link-2269957"> Adopting NestJS in Legacy Projects: Benefits and Challenges </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/microservices"><span class="crayons-tag__prefix">#</span>microservices</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/wallacefreitas/adopting-nestjs-in-legacy-projects-benefits-and-challenges-4a44" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2269957" aria-label="Add a comment to post - Adopting NestJS in Legacy Projects: Benefits and Challenges"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">2<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/wallacefreitas/adopting-nestjs-in-legacy-projects-benefits-and-challenges-4a44#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Adopting NestJS in Legacy Projects: Benefits and Challenges"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9xuj661w72kd6cgku5nv9v73gpgjaax" class="crayons-icon"><title id="a9xuj661w72kd6cgku5nv9v73gpgjaax">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2269957" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2269957" data-article-author-id="1012829" aria-label="Save post Adopting NestJS in Legacy Projects: Benefits and Challenges to reading list" title="Save post Adopting NestJS in Legacy Projects: Benefits and Challenges to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2288192" data-content-user-id="1330286"> <a href="https://dev.to/ngtrthvu3007/nestjs-request-lifecycle-2jhe" aria-labelledby="article-link-2288192" class="crayons-story__hidden-navigation-link">NestJS: Request Lifecycle</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ngtrthvu3007" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1330286%2F559200ba-5360-4cf6-8c02-c6560ec82f9e.jpg" alt="ngtrthvu3007 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ngtrthvu3007" class="crayons-story__secondary fw-medium m:hidden"> ngtrvinc </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2288192" aria-controls="story-author-preview-content-2288192" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="ngtrvinc profile details"> ngtrvinc </button> <div id="story-author-preview-content-2288192" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ngtrthvu3007" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1330286%2F559200ba-5360-4cf6-8c02-c6560ec82f9e.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">ngtrvinc</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1330286,"className":"User","name":"ngtrvinc"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1330286"></div> </div> </div> </div> </div> <a href="https://dev.to/ngtrthvu3007/nestjs-request-lifecycle-2jhe" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-19T17:45:30Z">Feb 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739987130"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ngtrthvu3007/nestjs-request-lifecycle-2jhe" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08szlh9saw4l359g45gf.png" id="article-link-2288192"> NestJS: Request Lifecycle </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(137, 6, 6, 0.10); --tag-prefix: #890606; --tag-bg-hover: rgba(137, 6, 6, 0.10); --tag-prefix-hover: #890606; " href="/t/programming"><span class="crayons-tag__prefix">#</span>programming</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ngtrthvu3007/nestjs-request-lifecycle-2jhe" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2288192" aria-label="Add a comment to post - NestJS: Request Lifecycle"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">9<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/ngtrthvu3007/nestjs-request-lifecycle-2jhe#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - NestJS: Request Lifecycle"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aa3ocbz04vtomjag3k5xe9ra05debf95" class="crayons-icon"><title id="aa3ocbz04vtomjag3k5xe9ra05debf95">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 1<span class="hidden s:inline"> comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 6 min read </small> <button type="button" id="article-save-button-2288192" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2288192" data-article-author-id="1330286" aria-label="Save post NestJS: Request Lifecycle to reading list" title="Save post NestJS: Request Lifecycle to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2261160" data-content-user-id="2821632"> <a href="https://dev.to/mohammediliassaffani/boost-your-react-performance-with-usememo-hc5" aria-labelledby="article-link-2261160" class="crayons-story__hidden-navigation-link">Boost Your React Performance with useMemo</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/mohammediliassaffani" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2821632%2Fa6019c77-650c-4b91-a376-e80eef4493fa.jpeg" alt="mohammediliassaffani profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/mohammediliassaffani" class="crayons-story__secondary fw-medium m:hidden"> Mohammed Iliass Affani </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2261160" aria-controls="story-author-preview-content-2261160" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Mohammed Iliass Affani profile details"> Mohammed Iliass Affani </button> <div id="story-author-preview-content-2261160" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/mohammediliassaffani" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2821632%2Fa6019c77-650c-4b91-a376-e80eef4493fa.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Mohammed Iliass Affani</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2821632,"className":"User","name":"Mohammed Iliass Affani"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2821632"></div> </div> </div> </div> </div> <a href="https://dev.to/mohammediliassaffani/boost-your-react-performance-with-usememo-hc5" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-05T21:36:21Z">Feb 5</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738791381"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/mohammediliassaffani/boost-your-react-performance-with-usememo-hc5" data-preload-image="" id="article-link-2261160"> Boost Your React Performance with useMemo </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(34, 34, 34, 0.10); --tag-prefix: #222222; --tag-bg-hover: rgba(34, 34, 34, 0.10); --tag-prefix-hover: #222222; " href="/t/react"><span class="crayons-tag__prefix">#</span>react</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/nextjs"><span class="crayons-tag__prefix">#</span>nextjs</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/mohammediliassaffani/boost-your-react-performance-with-usememo-hc5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Boost Your React Performance with useMemo"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="afkfg0mwqhhjl6xptgjwvmx82dkf2hy5" class="crayons-icon"><title id="afkfg0mwqhhjl6xptgjwvmx82dkf2hy5">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2261160" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2261160" data-article-author-id="2821632" aria-label="Save post Boost Your React Performance with useMemo to reading list" title="Save post Boost Your React Performance with useMemo to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2256013" data-content-user-id="2202080"> <a href="https://dev.to/saad_ali_21c328f1cb588b4d/nest-unitintegratione2e-testing-techniques-and-concepts-11i5" aria-labelledby="article-link-2256013" class="crayons-story__hidden-navigation-link">nest (unit,integration,e2e) testing techniques and concepts</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/saad_ali_21c328f1cb588b4d" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2202080%2Fef7aa612-ed2a-4659-b473-04bc2bf89c75.png" alt="saad_ali_21c328f1cb588b4d profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/saad_ali_21c328f1cb588b4d" class="crayons-story__secondary fw-medium m:hidden"> Saad Ali </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2256013" aria-controls="story-author-preview-content-2256013" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Saad Ali profile details"> Saad Ali </button> <div id="story-author-preview-content-2256013" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/saad_ali_21c328f1cb588b4d" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2202080%2Fef7aa612-ed2a-4659-b473-04bc2bf89c75.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Saad Ali</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2202080,"className":"User","name":"Saad Ali"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2202080"></div> </div> </div> </div> </div> <a href="https://dev.to/saad_ali_21c328f1cb588b4d/nest-unitintegratione2e-testing-techniques-and-concepts-11i5" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-03T04:14:22Z">Feb 3</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738556062"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/saad_ali_21c328f1cb588b4d/nest-unitintegratione2e-testing-techniques-and-concepts-11i5" data-preload-image="" id="article-link-2256013"> nest (unit,integration,e2e) testing techniques and concepts </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(1, 155, 101, 0.10); --tag-prefix: #019b65; --tag-bg-hover: rgba(1, 155, 101, 0.10); --tag-prefix-hover: #019b65; " href="/t/testing"><span class="crayons-tag__prefix">#</span>testing</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(76, 81, 191, 0.10); --tag-prefix: #4C51BF; --tag-bg-hover: rgba(76, 81, 191, 0.10); --tag-prefix-hover: #4C51BF; " href="/t/prisma"><span class="crayons-tag__prefix">#</span>prisma</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(23, 30, 38, 0.10); --tag-prefix: #171e26; --tag-bg-hover: rgba(23, 30, 38, 0.10); --tag-prefix-hover: #171e26; " href="/t/graphql"><span class="crayons-tag__prefix">#</span>graphql</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/saad_ali_21c328f1cb588b4d/nest-unitintegratione2e-testing-techniques-and-concepts-11i5" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2256013" aria-label="Add a comment to post - nest (unit,integration,e2e) testing techniques and concepts"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/saad_ali_21c328f1cb588b4d/nest-unitintegratione2e-testing-techniques-and-concepts-11i5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - nest (unit,integration,e2e) testing techniques and concepts"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a62qlgo80qu4mtb7i4k7215v0h02fi44" class="crayons-icon"><title id="a62qlgo80qu4mtb7i4k7215v0h02fi44">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2256013" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2256013" data-article-author-id="2202080" aria-label="Save post nest (unit,integration,e2e) testing techniques and concepts to reading list" title="Save post nest (unit,integration,e2e) testing techniques and concepts to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2278256" data-content-user-id="2864165"> <a href="https://dev.to/ahmad_mohammadi_4b72a8bda/a-practical-guide-to-becoming-a-junior-nest-js-developer-5c4c" aria-labelledby="article-link-2278256" class="crayons-story__hidden-navigation-link">A Practical Guide to Becoming a Junior Nest JS Developer</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ahmad_mohammadi_4b72a8bda" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2864165%2F4566ba77-19e8-4e8a-badc-b71d2608c205.jpg" alt="ahmad_mohammadi_4b72a8bda profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ahmad_mohammadi_4b72a8bda" class="crayons-story__secondary fw-medium m:hidden"> ahmad mohammadi </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2278256" aria-controls="story-author-preview-content-2278256" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="ahmad mohammadi profile details"> ahmad mohammadi </button> <div id="story-author-preview-content-2278256" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ahmad_mohammadi_4b72a8bda" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2864165%2F4566ba77-19e8-4e8a-badc-b71d2608c205.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">ahmad mohammadi</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2864165,"className":"User","name":"ahmad mohammadi"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2864165"></div> </div> </div> </div> </div> <a href="https://dev.to/ahmad_mohammadi_4b72a8bda/a-practical-guide-to-becoming-a-junior-nest-js-developer-5c4c" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-15T10:06:55Z">Feb 15</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739614015"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ahmad_mohammadi_4b72a8bda/a-practical-guide-to-becoming-a-junior-nest-js-developer-5c4c" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4v1yrw2rkjlsij1u37iq.png" id="article-link-2278256"> A Practical Guide to Becoming a Junior Nest JS Developer </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ahmad_mohammadi_4b72a8bda/a-practical-guide-to-becoming-a-junior-nest-js-developer-5c4c" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2278256" aria-label="Add a comment to post - A Practical Guide to Becoming a Junior Nest JS Developer"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/ahmad_mohammadi_4b72a8bda/a-practical-guide-to-becoming-a-junior-nest-js-developer-5c4c#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - A Practical Guide to Becoming a Junior Nest JS Developer"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aikbmlang5xp65l8se1qd27yrz5e350b" class="crayons-icon"><title id="aikbmlang5xp65l8se1qd27yrz5e350b">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2278256" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2278256" data-article-author-id="2864165" aria-label="Save post A Practical Guide to Becoming a Junior Nest JS Developer to reading list" title="Save post A Practical Guide to Becoming a Junior Nest JS Developer to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2246698" data-content-user-id="2778041"> <a href="https://dev.to/abdelaziz_allem_280ae4110/middleware-for-dynamic-database-url-based-on-subdomain-in-nestjs-with-prisma-4k42" aria-labelledby="article-link-2246698" class="crayons-story__hidden-navigation-link">Middleware for Dynamic Database URL Based on Subdomain in NestJS with Prisma</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/abdelaziz_allem_280ae4110" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2778041%2Fbcbc0dc5-be21-4d93-8504-21911240a0b9.jpg" alt="abdelaziz_allem_280ae4110 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/abdelaziz_allem_280ae4110" class="crayons-story__secondary fw-medium m:hidden"> Abdelaziz Allem </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2246698" aria-controls="story-author-preview-content-2246698" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Abdelaziz Allem profile details"> Abdelaziz Allem </button> <div id="story-author-preview-content-2246698" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/abdelaziz_allem_280ae4110" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2778041%2Fbcbc0dc5-be21-4d93-8504-21911240a0b9.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Abdelaziz Allem</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2778041,"className":"User","name":"Abdelaziz Allem"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2778041"></div> </div> </div> </div> </div> <a href="https://dev.to/abdelaziz_allem_280ae4110/middleware-for-dynamic-database-url-based-on-subdomain-in-nestjs-with-prisma-4k42" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-28T15:38:35Z">Jan 28</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738078715"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/abdelaziz_allem_280ae4110/middleware-for-dynamic-database-url-based-on-subdomain-in-nestjs-with-prisma-4k42" data-preload-image="" id="article-link-2246698"> Middleware for Dynamic Database URL Based on Subdomain in NestJS with Prisma </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(76, 81, 191, 0.10); --tag-prefix: #4C51BF; --tag-bg-hover: rgba(76, 81, 191, 0.10); --tag-prefix-hover: #4C51BF; " href="/t/prisma"><span class="crayons-tag__prefix">#</span>prisma</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(237, 21, 86, 0.10); --tag-prefix: #ED1556; --tag-bg-hover: rgba(237, 21, 86, 0.10); --tag-prefix-hover: #ED1556; " href="/t/database"><span class="crayons-tag__prefix">#</span>database</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/backend"><span class="crayons-tag__prefix">#</span>backend</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/abdelaziz_allem_280ae4110/middleware-for-dynamic-database-url-based-on-subdomain-in-nestjs-with-prisma-4k42#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Middleware for Dynamic Database URL Based on Subdomain in NestJS with Prisma"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aa3kerex0qhsqai04zhi9u9e8m7jzdih" class="crayons-icon"><title id="aa3kerex0qhsqai04zhi9u9e8m7jzdih">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2246698" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2246698" data-article-author-id="2778041" aria-label="Save post Middleware for Dynamic Database URL Based on Subdomain in NestJS with Prisma to reading list" title="Save post Middleware for Dynamic Database URL Based on Subdomain in NestJS with Prisma to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2236640" data-content-user-id="1777389"> <a href="https://dev.to/juan_carlosvalderrbano/enfoque-en-la-verificacion-de-la-arquitectura-eleganflow-2cnp" aria-labelledby="article-link-2236640" class="crayons-story__hidden-navigation-link">👮🏻♂️ Enfoque en la Verificación de la Arquitectura 'EleganFlow'</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/juan_carlosvalderrbano" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1777389%2Fab689592-5d76-41a3-9beb-efaf8dc12b5e.png" alt="juan_carlosvalderrbano profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/juan_carlosvalderrbano" class="crayons-story__secondary fw-medium m:hidden"> Juan Carlos Valderrábano Hernández </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2236640" aria-controls="story-author-preview-content-2236640" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Juan Carlos Valderrábano Hernández profile details"> Juan Carlos Valderrábano Hernández </button> <div id="story-author-preview-content-2236640" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/juan_carlosvalderrbano" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1777389%2Fab689592-5d76-41a3-9beb-efaf8dc12b5e.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Juan Carlos Valderrábano Hernández</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1777389,"className":"User","name":"Juan Carlos Valderrábano Hernández"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1777389"></div> </div> </div> </div> </div> <a href="https://dev.to/juan_carlosvalderrbano/enfoque-en-la-verificacion-de-la-arquitectura-eleganflow-2cnp" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-23T17:30:41Z">Jan 23</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737653441"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/juan_carlosvalderrbano/enfoque-en-la-verificacion-de-la-arquitectura-eleganflow-2cnp" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zxoliujx17xfpzakepf.jpeg" id="article-link-2236640"> 👮🏻♂️ Enfoque en la Verificación de la Arquitectura 'EleganFlow' </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/cleancode"><span class="crayons-tag__prefix">#</span>cleancode</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/juan_carlosvalderrbano/enfoque-en-la-verificacion-de-la-arquitectura-eleganflow-2cnp#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - 👮🏻♂️ Enfoque en la Verificación de la Arquitectura 'EleganFlow'"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a4u7dh94tvbiamry0guz1fptwwrbai08" class="crayons-icon"><title id="a4u7dh94tvbiamry0guz1fptwwrbai08">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2236640" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2236640" data-article-author-id="1777389" aria-label="Save post 👮🏻♂️ Enfoque en la Verificación de la Arquitectura 'EleganFlow' to reading list" title="Save post 👮🏻♂️ Enfoque en la Verificación de la Arquitectura 'EleganFlow' to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2237265" data-content-user-id="1146421"> <a href="https://dev.to/urian121/alertas-modernas-y-efectivas-para-nextjs-con-nextjs-toast-notify-o8g" aria-labelledby="article-link-2237265" class="crayons-story__hidden-navigation-link">Alertas Modernas y Efectivas para Next.js con Next.js Toast Notify</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/urian121" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1146421%2Fd9fad614-1f51-43d1-a8db-60010b4fc732.jpeg" alt="urian121 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/urian121" class="crayons-story__secondary fw-medium m:hidden"> URIAN VIERA </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2237265" aria-controls="story-author-preview-content-2237265" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="URIAN VIERA profile details"> URIAN VIERA </button> <div id="story-author-preview-content-2237265" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/urian121" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1146421%2Fd9fad614-1f51-43d1-a8db-60010b4fc732.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">URIAN VIERA</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1146421,"className":"User","name":"URIAN VIERA"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1146421"></div> </div> </div> </div> </div> <a href="https://dev.to/urian121/alertas-modernas-y-efectivas-para-nextjs-con-nextjs-toast-notify-o8g" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-24T03:08:18Z">Jan 24</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737688098"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/urian121/alertas-modernas-y-efectivas-para-nextjs-con-nextjs-toast-notify-o8g" data-preload-image="" id="article-link-2237265"> Alertas Modernas y Efectivas para Next.js con Next.js Toast Notify </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/alertasparanextjs"><span class="crayons-tag__prefix">#</span>alertasparanextjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/toastnextjs"><span class="crayons-tag__prefix">#</span>toastnextjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/notifynextjs"><span class="crayons-tag__prefix">#</span>notifynextjs</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/urian121/alertas-modernas-y-efectivas-para-nextjs-con-nextjs-toast-notify-o8g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Alertas Modernas y Efectivas para Next.js con Next.js Toast Notify"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="alqpzk3eyyuvfzwluiaaytudyiy07utw" class="crayons-icon"><title id="alqpzk3eyyuvfzwluiaaytudyiy07utw">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> <button type="button" id="article-save-button-2237265" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2237265" data-article-author-id="1146421" aria-label="Save post Alertas Modernas y Efectivas para Next.js con Next.js Toast Notify to reading list" title="Save post Alertas Modernas y Efectivas para Next.js con Next.js Toast Notify to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2236932" data-content-user-id="188852"> <a href="https://dev.to/endykaufman/update-typegraphql-prisma-nestjs-v028005-1i1d" aria-labelledby="article-link-2236932" class="crayons-story__hidden-navigation-link">Update typegraphql-prisma-nestjs v0.2800.5</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/endykaufman" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F188852%2F79924ec7-d82d-4e4d-b23b-6c3e84c951bd.jpeg" alt="endykaufman profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/endykaufman" class="crayons-story__secondary fw-medium m:hidden"> ILshat Khamitov </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2236932" aria-controls="story-author-preview-content-2236932" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="ILshat Khamitov profile details"> ILshat Khamitov </button> <div id="story-author-preview-content-2236932" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/endykaufman" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F188852%2F79924ec7-d82d-4e4d-b23b-6c3e84c951bd.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">ILshat Khamitov</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":188852,"className":"User","name":"ILshat Khamitov"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="188852"></div> </div> </div> </div> </div> <a href="https://dev.to/endykaufman/update-typegraphql-prisma-nestjs-v028005-1i1d" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-23T21:21:59Z">Jan 23</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737667319"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/endykaufman/update-typegraphql-prisma-nestjs-v028005-1i1d" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9rk6mgn3ho3l5ppzmqj.png" id="article-link-2236932"> Update typegraphql-prisma-nestjs v0.2800.5 </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(76, 81, 191, 0.10); --tag-prefix: #4C51BF; --tag-bg-hover: rgba(76, 81, 191, 0.10); --tag-prefix-hover: #4C51BF; " href="/t/prisma"><span class="crayons-tag__prefix">#</span>prisma</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/crud"><span class="crayons-tag__prefix">#</span>crud</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/typegraphql"><span class="crayons-tag__prefix">#</span>typegraphql</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/endykaufman/update-typegraphql-prisma-nestjs-v028005-1i1d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Update typegraphql-prisma-nestjs v0.2800.5"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aizfsvaxp8n8tahizs097p5uhnoc2qzi" class="crayons-icon"><title id="aizfsvaxp8n8tahizs097p5uhnoc2qzi">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2236932" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2236932" data-article-author-id="188852" aria-label="Save post Update typegraphql-prisma-nestjs v0.2800.5 to reading list" title="Save post Update typegraphql-prisma-nestjs v0.2800.5 to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2231781" data-content-user-id="286221"> <a href="https://dev.to/slaknoah/what-is-a-cache-stampede-how-to-prevent-it-using-redis-1l9p" aria-labelledby="article-link-2231781" class="crayons-story__hidden-navigation-link">What is a Cache Stampede? How to Prevent It Using Redis</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/slaknoah" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F286221%2F41d21b31-c62a-4ae5-a486-6bf6e5f7ca78.jpeg" alt="slaknoah profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/slaknoah" class="crayons-story__secondary fw-medium m:hidden"> Slaknoah </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2231781" aria-controls="story-author-preview-content-2231781" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Slaknoah profile details"> Slaknoah </button> <div id="story-author-preview-content-2231781" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/slaknoah" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F286221%2F41d21b31-c62a-4ae5-a486-6bf6e5f7ca78.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Slaknoah</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":286221,"className":"User","name":"Slaknoah"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="286221"></div> </div> </div> </div> </div> <a href="https://dev.to/slaknoah/what-is-a-cache-stampede-how-to-prevent-it-using-redis-1l9p" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-21T20:20:28Z">Jan 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737490828"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/slaknoah/what-is-a-cache-stampede-how-to-prevent-it-using-redis-1l9p" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gej8z3joqnbswk74ks8.jpg" id="article-link-2231781"> What is a Cache Stampede? How to Prevent It Using Redis </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/cache"><span class="crayons-tag__prefix">#</span>cache</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(180, 0, 0, 0.10); --tag-prefix: #b40000; --tag-bg-hover: rgba(180, 0, 0, 0.10); --tag-prefix-hover: #b40000; " href="/t/redis"><span class="crayons-tag__prefix">#</span>redis</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 163, 100, 0.10); --tag-prefix: #ffa364; --tag-bg-hover: rgba(255, 163, 100, 0.10); --tag-prefix-hover: #ffa364; " href="/t/performance"><span class="crayons-tag__prefix">#</span>performance</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/slaknoah/what-is-a-cache-stampede-how-to-prevent-it-using-redis-1l9p" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2231781" aria-label="Add a comment to post - What is a Cache Stampede? How to Prevent It Using Redis"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/slaknoah/what-is-a-cache-stampede-how-to-prevent-it-using-redis-1l9p#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - What is a Cache Stampede? How to Prevent It Using Redis"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="agael0meahprtnmtj1a9cfhpr9qsq8fk" class="crayons-icon"><title id="agael0meahprtnmtj1a9cfhpr9qsq8fk">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 9 min read </small> <button type="button" id="article-save-button-2231781" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2231781" data-article-author-id="286221" aria-label="Save post What is a Cache Stampede? How to Prevent It Using Redis to reading list" title="Save post What is a Cache Stampede? How to Prevent It Using Redis to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2231108" data-content-user-id="2527192"> <a href="https://dev.to/ehsanahmadzadeh/nestjs-fundamentals-part-1-modularity-in-nestjs-5d7p" aria-labelledby="article-link-2231108" class="crayons-story__hidden-navigation-link">NestJS Fundamentals Part 1: Modularity in NestJS</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ehsanahmadzadeh" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2527192%2Fcea039d2-4866-429d-8768-e5fc1ede4a16.jpg" alt="ehsanahmadzadeh profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ehsanahmadzadeh" class="crayons-story__secondary fw-medium m:hidden"> Amir Ehsan Ahmadzadeh </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2231108" aria-controls="story-author-preview-content-2231108" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Amir Ehsan Ahmadzadeh profile details"> Amir Ehsan Ahmadzadeh </button> <div id="story-author-preview-content-2231108" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ehsanahmadzadeh" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2527192%2Fcea039d2-4866-429d-8768-e5fc1ede4a16.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Amir Ehsan Ahmadzadeh</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2527192,"className":"User","name":"Amir Ehsan Ahmadzadeh"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2527192"></div> </div> </div> </div> </div> <a href="https://dev.to/ehsanahmadzadeh/nestjs-fundamentals-part-1-modularity-in-nestjs-5d7p" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-21T13:55:53Z">Jan 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737467753"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ehsanahmadzadeh/nestjs-fundamentals-part-1-modularity-in-nestjs-5d7p" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgq3gh8q069b7sa98ywqk.jpg" id="article-link-2231108"> NestJS Fundamentals Part 1: Modularity in NestJS </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 74, 132, 0.10); --tag-prefix: #234A84; --tag-bg-hover: rgba(35, 74, 132, 0.10); --tag-prefix-hover: #234A84; " href="/t/typescript"><span class="crayons-tag__prefix">#</span>typescript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/dependencyinjection"><span class="crayons-tag__prefix">#</span>dependencyinjection</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ehsanahmadzadeh/nestjs-fundamentals-part-1-modularity-in-nestjs-5d7p#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - NestJS Fundamentals Part 1: Modularity in NestJS"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aqnqawso860419emqzhpe1yyvb4lnotf" class="crayons-icon"><title id="aqnqawso860419emqzhpe1yyvb4lnotf">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> <button type="button" id="article-save-button-2231108" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2231108" data-article-author-id="2527192" aria-label="Save post NestJS Fundamentals Part 1: Modularity in NestJS to reading list" title="Save post NestJS Fundamentals Part 1: Modularity in NestJS to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2257126" data-content-user-id="2500853"> <a href="https://dev.to/tamim_ikbal/setup-validation-pipes-and-yup-to-validate-nestjs-request-5ejm" aria-labelledby="article-link-2257126" class="crayons-story__hidden-navigation-link">Setup Validation Pipes & Yup for NestJS Request Validation.</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/tamim_ikbal" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2500853%2Ff1750215-7a38-49f7-85c0-1e6dc28c16f5.jpg" alt="tamim_ikbal profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/tamim_ikbal" class="crayons-story__secondary fw-medium m:hidden"> Tamim Ikbal </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2257126" aria-controls="story-author-preview-content-2257126" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Tamim Ikbal profile details"> Tamim Ikbal </button> <div id="story-author-preview-content-2257126" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/tamim_ikbal" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2500853%2Ff1750215-7a38-49f7-85c0-1e6dc28c16f5.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Tamim Ikbal</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2500853,"className":"User","name":"Tamim Ikbal"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2500853"></div> </div> </div> </div> </div> <a href="https://dev.to/tamim_ikbal/setup-validation-pipes-and-yup-to-validate-nestjs-request-5ejm" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-03T17:10:48Z">Feb 3</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738602648"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/tamim_ikbal/setup-validation-pipes-and-yup-to-validate-nestjs-request-5ejm" data-preload-image="" id="article-link-2257126"> Setup Validation Pipes & Yup for NestJS Request Validation. </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/nestjs"><span class="crayons-tag__prefix">#</span>nestjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/yup"><span class="crayons-tag__prefix">#</span>yup</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/tamim_ikbal/setup-validation-pipes-and-yup-to-validate-nestjs-request-5ejm" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2257126" aria-label="Add a comment to post - Setup Validation Pipes & Yup for NestJS Request Validation."> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">6<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/tamim_ikbal/setup-validation-pipes-and-yup-to-validate-nestjs-request-5ejm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Setup Validation Pipes & Yup for NestJS Request Validation."> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aeqprodhwj1o0x1x2iv0xrtj7qlsbo5c" class="crayons-icon"><title id="aeqprodhwj1o0x1x2iv0xrtj7qlsbo5c">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2257126" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2257126" data-article-author-id="2500853" aria-label="Save post Setup Validation Pipes & Yup for NestJS Request Validation. to reading list" title="Save post Setup Validation Pipes & Yup for NestJS Request Validation. to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="placeholder-div"></div> <div class="single-article-small-pic" id="article-index-hidden-div" style="display:none"></div> </div> <div class="loading-articles" id="loading-articles"> loading... </div> </main> <div id="sidebar-wrapper-right" class="sidebar-wrapper sidebar-wrapper-right"> <div class="sidebar-bg" id="sidebar-bg-right"></div> <aside class="side-bar sidebar-additional showing" id="sidebar-additional"> <div class="widget"> <header> <h4>trending guides/resources</h4> </header> <div class="widget-body"> <div class="widget-link-list"> <a class="crayons-link crayons-link--contentful" href="/rayenmabrouk/why-nestjs-is-the-new-gold-standard-for-node-backend-development-lm"> Why NestJS Is The New Gold Standard For Node Backend Development </a> <a class="crayons-link crayons-link--contentful" href="/tak089/ai-project-development-step-by-step-to-learn-in-2025-1m0d"> AI Project Development Step By Step to learn in 2025 </a> <a class="crayons-link crayons-link--contentful" href="/thedammyking/authentication-with-clerk-in-nestjs-server-application-gpm"> Authentication with Clerk in NestJS Server Application </a> <a class="crayons-link crayons-link--contentful" href="/tak089/nestjs-roadmap-for-2025-5jj"> 2025 NestJS BE Roadmap: Beginner to Senior Level </a> <a class="crayons-link crayons-link--contentful" href="/rayenmabrouk/best-tech-stack-for-startups-in-2025-5h2l"> The Ultimate Tech Stack for Startups in 2025 </a> <a class="crayons-link crayons-link--contentful" href="/code42cate/how-to-dockerize-nestjs-327j"> How to Dockerize NestJS </a> <a class="crayons-link crayons-link--contentful" href="/abdulghofurme/zod-vs-class-validator-class-transformer-3oam"> zod vs class-validator & class-transformer </a> <a class="crayons-link crayons-link--contentful" href="/nestjs-ninja/nestjs-typeorm-and-multi-tenancy-ekl"> NestJS TypeORM and Multi-Tenancy </a> <a class="crayons-link crayons-link--contentful" href="/endykaufman/converting-date-by-user-time-zone-in-nestjs-and-entering-and-displaying-date-in-angular-2195"> Converting date by user time zone in "NestJS", and entering and displaying date in "Angular" </a> <a class="crayons-link crayons-link--contentful" href="/juan_castillo/how-to-log-with-loki-and-grafana-using-nestjs-520i"> How to Log with Loki and Grafana Using NestJS 🚀 </a> <a class="crayons-link crayons-link--contentful" href="/luffy_p1r4t3/role-based-access-control-in-nestjs-2cl2"> Role-Based Access Control in NestJS </a> <a class="crayons-link crayons-link--contentful" href="/abhivyaktii/nestjs-databases-making-snake-case-seamless-4d32"> 🌟 NestJS + Databases: Making Snake Case Seamless!🐍 </a> <a class="crayons-link crayons-link--contentful" href="/cendekia/mastering-dtos-in-nestjs-24e4"> Mastering DTOs in NestJS </a> <a class="crayons-link crayons-link--contentful" href="/wallacefreitas/outbox-pattern-with-kafka-and-nestjs-ensuring-reliable-event-driven-systems-2f5k"> Outbox Pattern with Kafka and NestJS: Ensuring Reliable Event-Driven Systems </a> <a class="crayons-link crayons-link--contentful" href="/idrisakintobi/setting-up-paystack-for-subscription-based-billing-in-nestjs-520i"> Setting Up Paystack for Subscription-Based Billing in NestJS </a> <a class="crayons-link crayons-link--contentful" href="/nestjs-ninja/real-time-chat-with-nestjs-and-socketio-3e6e"> Real-time chat with NestJS and Socket.io </a> <a class="crayons-link crayons-link--contentful" href="/kasir-barati/nx-typeorm-nestjs-migrations-53an"> Nx + TypeORM + NestJS + Migrations </a> <a class="crayons-link crayons-link--contentful" href="/nestjs-ninja/how-to-integrate-multiple-payment-gateways-in-nestjs-with-stripe-example-54pi"> How to Integrate Multiple Payment Gateways in NestJS (With Stripe Example) </a> <a class="crayons-link crayons-link--contentful" href="/endykaufman/timezone-support-in-a-full-stack-application-based-on-nestjs-and-angular-working-with-rest-and-2pd6"> Timezone support in a full-stack application based on NestJS and Angular: working with REST and W... </a> <a class="crayons-link crayons-link--contentful" href="/tak089/nestjs-backend-overview-4no1"> NestJs Backend Overview </a> </div> </div> </div> </aside> </div> </div> <script src="https://assets.dev.to/assets/storiesList-b9c50cbd898a3a64258a3a49db1c531651b0a4a11937be35ed4651111802b5b5.js" defer="defer"></script> <script src="https://assets.dev.to/assets/followButtons-f2455d1f50a862b83fa006b1953e3a1644598781243cae25d3e75b13c04184fd.js" defer="defer"></script> <script src="https://assets.dev.to/assets/tagFollows-25496b4e3bf8bec41c7881be6b330ac8e9aa612d1ce876863a984d934d839384.js" defer="defer"></script> <script src="https://assets.dev.to/assets/feedPreviewCards-8d16b0b656456a28c0a290f756cf6e21e19833111c4796f48c631bfea8323d51.js" defer="defer"></script> <script src="https://assets.dev.to/assets/hideBookmarkButtons-0cc08aac1c422e6b6f75e5284b5350215abf211b59fb3eb8d8a4ef85e205b607.js" defer="defer"></script> <script src="https://assets.dev.to/assets/drawerSliders-823098a874684cfb50f32368b8dd1c7854954b83a588b8b6cfaef1e8fd30d858.js" defer="defer"></script> <script src="https://assets.dev.to/assets/localizeArticleDates-70147c5c6bfe350b42e020ebb2a3dd37419d83978982b5a67b6389119bf162ac.js" defer="defer"></script> <div id="runtime-banner-container"></div> </div> </div> <footer id="footer" class="crayons-footer print-hidden"> <div id="footer-container" class="crayons-footer__container"> <style> .long-bb-body { max-height: calc(100vh - 200px); overflow: hidden; } .long-bb-bottom { height: 180px; background: linear-gradient(to top, var(--card-bg), transparent); margin-top: -180px; position:relative; z-index: 5; } </style> <div style="" data-display-unit data-id="146443" data-category-click="click" data-category-impression="impression" data-context-type="home" data-special="nothing" data-article-id="1886223" data-type-of="in_house"> <p style="font-weight: bold;margin-bottom: 10px"> Thank you to our Diamond Sponsor <a href="https://neon.tech/">Neon</a> for supporting our community. </p> </div> <p class="fs-s crayons-footer__description"> <a class="c-link c-link--branded fw-medium" aria-label="DEV Community Home" href="/">DEV Community</a> — A constructive and inclusive social network for software developers. With you every step of your journey. </p> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/"> Home </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/++"> DEV++ </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/pod"> Podcasts </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/videos"> Videos </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/tags"> Tags </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/help"> DEV Help </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="https://shop.forem.com/"> Forem Shop </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/advertise"> Advertise on DEV </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/challenges"> DEV Challenges </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/showcase"> DEV Showcase </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/about"> About </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/contact"> Contact </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/free-postgres-database-tier"> Free Postgres Database </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/software-comparisons"> Software comparisons </a> <span class="dot ml-2"></span> </li> </ul> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/code-of-conduct"> Code of Conduct </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/privacy"> Privacy Policy </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/terms"> Terms of use </a> <span class="dot ml-2"></span> </li> </ul> <div class="fs-s"> <p>Built on <a class="c-link c-link--branded" target="_blank" rel="noopener" href="https://www.forem.com">Forem</a> — the <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/opensource">open source</a> software that powers <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to">DEV</a> and other inclusive communities.</p> <p>Made with love and <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/rails">Ruby on Rails</a>. DEV Community <span title="copyright">©</span> 2016 - 2025.</p> </div> </div> </footer> <div id="snack-zone"></div> <div id="global-signup-modal" class="authentication-modal hidden"> <div class="authentication-modal__container"> <figure class="authentication-modal__image-container"> <img class="authentication-modal__image" src="https://media2.dev.to/dynamic/image/width=190,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" alt="DEV Community" loading="lazy" /> </figure> <div class="authentication-modal__content"> <p class="authentication-modal__description"> We're a place where coders share, stay up-to-date and grow their careers. </p> </div> <div class="authentication-modal__actions"> <a href="/enter" class="crayons-btn" aria-label="Log in" data-no-instant> Log in </a> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--ghost-brand js-global-signup-modal__create-account" aria-label="Create new account" data-no-instant> Create account </a> </div> </div> </div> <script src="https://assets.dev.to/assets/signupModalShortcuts-0b25469b985100a01e94cbd7fccaf7f0a4d776e129aac65c766aa32cb28ab29a.js" defer="defer"></script> <div id="cookie-consent"></div> <div id="i18n-translations" data-translations="{"en":{"core":{"add_comment":"Add comment","beta":"beta","comment":"Comment","copy_link":"Copy link","edit_profile":"Edit profile","follow":"Follow","follow_back":"Follow back","following":"Following","like":"Like","loading":"loading...","reaction":"Reaction","report_abuse":"Report abuse","search":"Search","success_settings":"Successfully updated settings.","counted_organization":{"one":"%{count} organization","other":"%{count} organizations"},"counted_user":{"one":"%{count} person","other":"%{count} people"},"not_following":"You're not following anyone","following_everyone":"You're following %{details} (everyone)","you_are_following":"You're following","and":"and"}}}"></div> <div id="reaction-category-resources" class="hidden" aria-hidden="true"> <img data-name="Like" data-slug="like" data-position="1" src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> <img data-name="Unicorn" data-slug="unicorn" data-position="2" src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> <img data-name="Exploding Head" data-slug="exploding_head" data-position="3" src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> <img data-name="Raised Hands" data-slug="raised_hands" data-position="4" src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> <img data-name="Fire" data-slug="fire" data-position="5" src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </div> <script> var userSignedIn = false; if (document.readyState === 'complete' || document.readyState === 'interactive') { initAuth(); } else { document.addEventListener('DOMContentLoaded', initAuth); } function initAuth() { var paramToken = new URLSearchParams(window.location.search).get('jwt'); if (paramToken && !userSignedIn) { authenticateUser(paramToken); } else { var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = 'https://forem.com/auth_pass/iframe'; document.body.appendChild(iframe); window.addEventListener('message', function(event) { if (event.origin !== 'https://forem.com' && event.origin !== window.location.origin) { return; } var data = event.data; if (data.authenticated && !userSignedIn) { authenticateUser(data.token); } else if(data.authenticated && window.ReactNativeWebView && window.ReactNativeWebView.postMessage) { window.ReactNativeWebView.postMessage(JSON.stringify({ action: 'login', token: data.token, })); } }); } function authenticateUser(token) { fetch('/auth_pass/token_login', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getMetaContent('csrf-token'), }, body: JSON.stringify({ token: token }), }) .then(function(response) { return response.json(); }) .then(function(data) { if (data.success) { if (document.head.querySelector('meta[name="user-signed-in"][content="false"]')) { // Reload the page to update the user's state location.reload(); } } }) .catch(function(error) { console.error('Error during authentication:', error); }); } function getMetaContent(name) { var element = document.querySelector('meta[name="' + name + '"]'); return element ? element.getAttribute('content') : ''; } } </script> </body> </html>