feat: New post

This commit is contained in:
sauravdhakal12
2026-01-19 21:37:20 +05:45
parent 8a5439d2aa
commit 9995edb14d
49 changed files with 329 additions and 100 deletions

8
content/notes/demo.md Normal file
View File

@@ -0,0 +1,8 @@
---
title: "Search" # in any language you want
layout: "search" # necessary for search
# url: "/archive"
# description: "Description for Search"
summary: "search"
placeholder: "placeholder text in search input box"
---

View File

@@ -1,19 +0,0 @@
---
author: ["Saurav Dhakal"]
title: "Understanding Separation of Concerns (SoC) in NestJS"
date: "2025-08-19"
summary: "A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers."
tags: ["nestjs", "typescript", "architecture"]
categories: ["Backend Development", "NestJS"]
series: ["NestJS"]
ShowToc: true
TocOpen: false
---
When building applications, one of the most important design principles to keep in mind is **Separation of Concerns (SoC)**. NestJS, with its modular architecture, makes applying SoC almost effortless — but understanding _why_ it matters and _how_ to use it properly will help you write cleaner, testable, and future-proof code.
## What is Separation of Concerns and Why it Matters?
The basic idea is:
> A program should be divided into distinct sections, where each section addresses a single responsibility.

View File

@@ -0,0 +1,141 @@
---
author: ["Saurav Dhakal"]
title: "Understanding Separation of Concerns (SoC) in NestJS"
date: "2025-08-19"
summary: "A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers."
tags: ["nestjs", "typescript", "architecture"]
categories: ["Backend Development", "NestJS"]
series: ["NestJS"]
ShowToc: true
TocOpen: false
---
When building applications, one of the most important design principles to keep in mind is **Separation of Concerns (SoC)**. NestJS, with its modular architecture, makes applying SoC almost effortless — but understanding _why_ it matters and _how_ to use it properly will help you write cleaner, testable, and future-proof code.
## What is Separation of Concerns and Why it Matters?
The basic idea is:
> A program should be divided into distinct sections, where each section addresses a single responsibility.
In simpler terms:
- Every part of the code should have **one clear job**.
- This makes the code easier to **understand, test, and maintain**.
Lets take an analogy of a coffee shop to better understand this concept. A coffee shop has multiple employees with distinct roles:
- The **cashier** handles payments.
- The **barista** makes coffee.
- The **inventory manager** tracks beans and supplies.
If one person did everything, the system would collapse into chaos. The same goes for software. Each role has a single responsibility, and no one does everything.
Suppose youre building an **eCommerce platform**. Without SoC, all the logic might end up in one massive file — authentication, product catalog, payments, inventory, order processing. This quickly becomes **spaghetti code**: hard to read, impossible to test, and dangerous to modify.
With **Separation of Concerns**, you break it down into modules:
- **Auth Module** → Handles user registration, login, JWT tokens.
- **Products Module** → Manages product catalog and search.
- **Checkout Module** → Orchestrates payment and order creation.
- **Inventory Module** → Keeps track of stock levels.
Each module **does one thing**. When you need to upgrade your payment provider or switch databases, you only touch the **Checkout Module** or **Inventory Module** — everything else continues to work.
This approach of programming enhances:
- **Readability:** Developers can understand a piece of code without knowing the whole system.
- **Maintainability:** Changing one part (like authentication) wont break unrelated features.
- **Testability:** Smaller, focused components are easier to test in isolation.
- **Flexibility:** You can swap implementations (e.g., switch databases or auth providers) without rewriting the whole app.
---
## Separation of Concerns in NestJS
One of the reasons developers love NestJS is that it **bakes Separation of Concerns into its architecture**. By default, NestJS applications are structured around three core building blocks: **modules, services, and controllers**. Each of these naturally maps to a specific concern.
### 1. **Modules** → Group related functionality
- A module acts like a **container** for a specific domain or feature.
- Examples: `UsersModule`, `AuthModule`, `PostsModule`.
- A module owns everything related to its concern and can expose services for other modules to use.
Think of modules as **departments in a company** — each department specializes in one thing but can collaborate with others when needed.
### 2. **Services** → Handle business logic
- Services handle the actual “work” of the application.
- Example: `UsersService` deals only with user data.
- Example: `AuthService` deals only with authentication and tokens.
- Services should **not depend on controllers** or contain HTTP logic.
This makes them **reusable**. A service can be used in REST controllers, GraphQL resolvers, or even a CLI command without modification.
### 3. **Controllers** → Handle HTTP requests
- Controllers act as the **entry point** for requests.
- Their job is to **receive a request, delegate the work to a service, and return a response**.
- They should remain thin, containing no business logic.
This ensures controllers are simple and services stay focused.
---
## Example: Auth and Users in NestJS
Lets look at a real-world scenario: Implementing **authentication**.
### UserService in UsersModule
```tsx
@Injectable()
export class UsersService {
constructor(private prisma: PrismaService) {}
findByEmail(email: string) {
return this.prisma.user.findUnique({ where: { email } });
}
create(data: any) {
return this.prisma.user.create({ data });
}
}
```
UserService is only concerned with **managing user data**. It knows nothing about JWTs, passwords, or authentication.
### AuthService in AuthModule
```tsx
@Injectable()
export class AuthService {
constructor(
private usersService: UsersService,
private jwtService: JwtService,
) {}
async validateUser(email: string, password: string) {
const user = await this.usersService.findByEmail(email);
// validate password...
return user;
}
login(user: any) {
return { access_token: this.jwtService.sign({ sub: user.id }) };
}
}
```
AuthService handles **authentication logic**. It uses `UsersService`, to work with user data (findByEmail) but doesnt leak authentication concerns back into it.
A clear boundary is maintained: `UsersService` manages user data, `AuthService` manages auth.
---
## Conclusion
Separation of Concerns isnt just a design principle — its a mindset. By keeping each part of your application focused on a single responsibility, you reduce complexity, make testing easier, and keep your codebase flexible as your project grows.
NestJS makes this natural with its **modules, services, and controllers**. If you embrace SoC from the start, youll end up with applications that are not only **scalable** but also a joy to maintain.
(Proofread by ChatGPT)

View File

@@ -1,2 +1,2 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>404 Page not found | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/404.html><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/404.html><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/404.html"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="404 Page not found"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><div class=not-found>404</div></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>404 Page not found | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/404.html><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=http://localhost:1313/404.html><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/404.html"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="404 Page not found"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><div class=not-found>404</div></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Backend Development | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/categories/backend-development/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/categories/backend-development/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/categories/backend-development/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/categories/backend-development/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Backend Development"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Backend Development"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a>&nbsp;»&nbsp;<a href=https://sauravdhakal.com.np/categories/>Categories</a></div><h1>Backend Development <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Backend Development | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/categories/backend-development/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/categories/backend-development/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/categories/backend-development/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/categories/backend-development/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Backend Development"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Backend Development"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a>&nbsp;»&nbsp;<a href=http://localhost:1313/categories/>Categories</a></div><h1>Backend Development
<a href=/categories/backend-development/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/categories/backend-development/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Backend Development on Saurav Dhakal</title> <title>Backend Development on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/categories/backend-development/</link> <link>http://localhost:1313/categories/backend-development/</link>
<description>Recent content in Backend Development on Saurav Dhakal</description> <description>Recent content in Backend Development on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/categories/backend-development/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/categories/backend-development/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/categories/backend-development/</title><link rel=canonical href=https://sauravdhakal.com.np/categories/backend-development/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/categories/backend-development/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/categories/backend-development/</title><link rel=canonical href=http://localhost:1313/categories/backend-development/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/categories/backend-development/"></head></html>

View File

@@ -1,2 +1,2 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Categories | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/categories/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/categories/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/categories/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/categories/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Categories"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Categories"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Categories</h1></header><ul class=terms-tags><li><a href=https://sauravdhakal.com.np/categories/backend-development/>Backend Development <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://sauravdhakal.com.np/categories/nestjs/>NestJS <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Categories | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/categories/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/categories/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/categories/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/categories/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Categories"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Categories"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Categories</h1></header><ul class=terms-tags><li><a href=http://localhost:1313/categories/backend-development/>Backend Development <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=http://localhost:1313/categories/nestjs/>NestJS <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,25 +2,25 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Categories on Saurav Dhakal</title> <title>Categories on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/categories/</link> <link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on Saurav Dhakal</description> <description>Recent content in Categories on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/categories/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Backend Development</title> <title>Backend Development</title>
<link>https://sauravdhakal.com.np/categories/backend-development/</link> <link>http://localhost:1313/categories/backend-development/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/categories/backend-development/</guid> <guid>http://localhost:1313/categories/backend-development/</guid>
<description></description> <description></description>
</item> </item>
<item> <item>
<title>NestJS</title> <title>NestJS</title>
<link>https://sauravdhakal.com.np/categories/nestjs/</link> <link>http://localhost:1313/categories/nestjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/categories/nestjs/</guid> <guid>http://localhost:1313/categories/nestjs/</guid>
<description></description> <description></description>
</item> </item>
</channel> </channel>

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>NestJS | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/categories/nestjs/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/categories/nestjs/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/categories/nestjs/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/categories/nestjs/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="NestJS"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="NestJS"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a>&nbsp;»&nbsp;<a href=https://sauravdhakal.com.np/categories/>Categories</a></div><h1>NestJS <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>NestJS | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/categories/nestjs/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/categories/nestjs/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/categories/nestjs/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/categories/nestjs/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="NestJS"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="NestJS"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a>&nbsp;»&nbsp;<a href=http://localhost:1313/categories/>Categories</a></div><h1>NestJS
<a href=/categories/nestjs/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/categories/nestjs/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>NestJS on Saurav Dhakal</title> <title>NestJS on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/categories/nestjs/</link> <link>http://localhost:1313/categories/nestjs/</link>
<description>Recent content in NestJS on Saurav Dhakal</description> <description>Recent content in NestJS on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/categories/nestjs/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/categories/nestjs/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/categories/nestjs/</title><link rel=canonical href=https://sauravdhakal.com.np/categories/nestjs/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/categories/nestjs/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/categories/nestjs/</title><link rel=canonical href=http://localhost:1313/categories/nestjs/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/categories/nestjs/"></head></html>

View File

@@ -1,4 +1,4 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta name=generator content="Hugo 0.152.2"><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Saurav Dhakal</title><meta name=keywords content="Blog,Portfolio,SauravDhakal,Saurav,Dhakal,Backend"><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/index.xml title=rss><link rel=alternate type=application/json href=https://sauravdhakal.com.np/index.json title=json><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Saurav Dhakal"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Saurav Dhakal"><meta name=twitter:description content="A personal blog"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","name":"Saurav Dhakal","url":"https://sauravdhakal.com.np/","description":"A personal blog","logo":"https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E","sameAs":["https://github.com/sauravdhakal12","https://www.linkedin.com/in/saurav-dhakal-9a8b27220/","https://x.com/s0x1495"]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><article class="first-entry home-info"><header class=entry-header><h1>Hi there 👋, I&rsquo;m Saurav!</h1></header><div class=entry-content><p>Im a software engineer who enjoys building thoughtful systems and learning how things really work. This is my digital garden - notes, projects, and lessons along the way.</p><ul><li></li></ul><p>Checkout my <a href=files/CV.pdf>CV</a> for my works and projects.</p></div><footer class=entry-footer><div class=social-icons><a href=https://github.com/sauravdhakal12 target=_blank rel="noopener noreferrer me" title=Github><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg> <!doctype html><html lang=en dir=auto data-theme=dark><head><meta name=generator content="Hugo 0.152.2"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Saurav Dhakal</title><meta name=keywords content="Blog,Portfolio,SauravDhakal,Saurav,Dhakal,Backend"><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/index.xml title=rss><link rel=alternate type=application/json href=http://localhost:1313/index.json title=json><link rel=alternate hreflang=en href=http://localhost:1313/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Saurav Dhakal"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Saurav Dhakal"><meta name=twitter:description content="A personal blog"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","name":"Saurav Dhakal","url":"http://localhost:1313/","description":"A personal blog","logo":"http://localhost:1313/%3Clink%20/%20abs%20url%3E","sameAs":["https://github.com/sauravdhakal12","https://www.linkedin.com/in/saurav-dhakal-9a8b27220/","https://x.com/s0x1495"]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><article class="first-entry home-info"><header class=entry-header><h1>Hi there 👋, I&rsquo;m Saurav!</h1></header><div class=entry-content><p>Im a software engineer who enjoys building thoughtful systems and learning how things really work. This is my digital garden - notes, projects, and lessons along the way.</p><ul><li></li></ul><p>Checkout my <a href=files/CV.pdf>CV</a> for my works and projects.</p></div><footer class=entry-footer><div class=social-icons><a href=https://github.com/sauravdhakal12 target=_blank rel="noopener noreferrer me" title=Github><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg>
</a><a href=https://www.linkedin.com/in/saurav-dhakal-9a8b27220/ target=_blank rel="noopener noreferrer me" title=Linkedin><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg> </a><a href=https://www.linkedin.com/in/saurav-dhakal-9a8b27220/ target=_blank rel="noopener noreferrer me" title=Linkedin><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
</a><a href=https://x.com/s0x1495 target=_blank rel="noopener noreferrer me" title=X><svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a></div></footer></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> </a><a href=https://x.com/s0x1495 target=_blank rel="noopener noreferrer me" title=X><svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a></div></footer></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -1 +1 @@
[{"content":"When building applications, one of the most important design principles to keep in mind is Separation of Concerns (SoC). NestJS, with its modular architecture, makes applying SoC almost effortless — but understanding why it matters and how to use it properly will help you write cleaner, testable, and future-proof code.\nWhat is Separation of Concerns and Why it Matters? The basic idea is:\nA program should be divided into distinct sections, where each section addresses a single responsibility.\n","permalink":"https://sauravdhakal.com.np/posts/demo/","summary":"A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.","title":"Understanding Separation of Concerns (SoC) in NestJS"}] [{"content":"When building applications, one of the most important design principles to keep in mind is Separation of Concerns (SoC). NestJS, with its modular architecture, makes applying SoC almost effortless — but understanding why it matters and how to use it properly will help you write cleaner, testable, and future-proof code.\nWhat is Separation of Concerns and Why it Matters? The basic idea is:\nA program should be divided into distinct sections, where each section addresses a single responsibility.\n","permalink":"http://localhost:1313/posts/demo/","summary":"A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.","title":"Understanding Separation of Concerns (SoC) in NestJS"},{"content":"When building applications, one of the most important design principles to keep in mind is Separation of Concerns (SoC). NestJS, with its modular architecture, makes applying SoC almost effortless — but understanding why it matters and how to use it properly will help you write cleaner, testable, and future-proof code.\nWhat is Separation of Concerns and Why it Matters? The basic idea is:\nA program should be divided into distinct sections, where each section addresses a single responsibility.\n","permalink":"http://localhost:1313/posts/demo/","summary":"A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.","title":"Understanding Separation of Concerns (SoC) in NestJS"}]

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Saurav Dhakal</title> <title>Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/</link> <link>http://localhost:1313/</link>
<description>Recent content on Saurav Dhakal</description> <description>Recent content on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -0,0 +1,2 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Search | Saurav Dhakal</title><meta name=keywords content><meta name=description content="search"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/notes/demo/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link crossorigin=anonymous rel=preload as=fetch href=../index.json><script defer crossorigin=anonymous src=/assets/js/search.b58269539d49d6ca2d32b61a53054d36df61ba713a257cbe66f257e175cb4d73.js integrity="sha256-tYJpU51J1sotMrYaUwVNNt9hunE6JXy+ZvJX4XXLTXM="></script><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=http://localhost:1313/notes/demo/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/notes/demo/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Search"><meta property="og:description" content="search"><meta property="og:locale" content="en-us"><meta property="og:type" content="article"><meta property="article:section" content="notes"><meta name=twitter:card content="summary"><meta name=twitter:title content="Search"><meta name=twitter:description content="search"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Notes","item":"http://localhost:1313/notes/"},{"@type":"ListItem","position":2,"name":"Search","item":"http://localhost:1313/notes/demo/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"Search","name":"Search","description":"search","keywords":[],"articleBody":"","wordCount":"0","inLanguage":"en","datePublished":"0001-01-01T00:00:00Z","dateModified":"0001-01-01T00:00:00Z","author":{"@type":"Person","name":"saurav"},"mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:1313/notes/demo/"},"publisher":{"@type":"Organization","name":"Saurav Dhakal","logo":{"@type":"ImageObject","url":"http://localhost:1313/%3Clink%20/%20abs%20url%3E"}}}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Search <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></h1><div class=post-meta></div></header><div id=searchbox><input id=searchInput autofocus placeholder="placeholder text in search input box" aria-label=search type=search autocomplete=off maxlength=64><ul id=searchResults aria-label="search results"></ul></div></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

3
public/notes/index.html Normal file
View File

@@ -0,0 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Notes | Saurav Dhakal</title><meta name=keywords content><meta name=description content="Notes - Saurav Dhakal"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/notes/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/notes/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/notes/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/notes/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Notes"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Notes"><meta name=twitter:description content="A personal blog"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Notes","item":"http://localhost:1313/notes/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a></div><h1>Notes
<a href=/notes/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Search</h2></header><div class=entry-content><p>search</p></div><footer class=entry-footer><span>0 min</span>&nbsp;·&nbsp;<span>0 words</span>&nbsp;·&nbsp;<span>saurav</span></footer><a class=entry-link aria-label="post link to Search" href=http://localhost:1313/notes/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

12
public/notes/index.xml Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Notes on Saurav Dhakal</title>
<link>http://localhost:1313/notes/</link>
<description>Recent content in Notes on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<atom:link href="http://localhost:1313/notes/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View File

@@ -0,0 +1 @@
<!doctype html><html lang=en-us><head><title>http://localhost:1313/notes/</title><link rel=canonical href=http://localhost:1313/notes/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/notes/"></head></html>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/</title><link rel=canonical href=https://sauravdhakal.com.np/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/</title><link rel=canonical href=http://localhost:1313/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/"></head></html>

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Posts | Saurav Dhakal</title><meta name=keywords content><meta name=description content="Posts - Saurav Dhakal"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/posts/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/posts/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/posts/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/posts/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Posts"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Posts"><meta name=twitter:description content="A personal blog"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Posts","item":"https://sauravdhakal.com.np/posts/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span class=active>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a></div><h1>Posts <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Posts | Saurav Dhakal</title><meta name=keywords content><meta name=description content="Posts - Saurav Dhakal"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/posts/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/posts/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/posts/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/posts/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Posts"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Posts"><meta name=twitter:description content="A personal blog"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Posts","item":"http://localhost:1313/posts/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span class=active>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a></div><h1>Posts
<a href=/posts/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/posts/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Posts on Saurav Dhakal</title> <title>Posts on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/posts/</link> <link>http://localhost:1313/posts/</link>
<description>Recent content in Posts on Saurav Dhakal</description> <description>Recent content in Posts on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/posts/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/posts/</title><link rel=canonical href=https://sauravdhakal.com.np/posts/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/posts/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/posts/</title><link rel=canonical href=http://localhost:1313/posts/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/posts/"></head></html>

View File

@@ -1,3 +1,3 @@
User-agent: * User-agent: *
Disallow: Disallow:
Sitemap: https://sauravdhakal.com.np/sitemap.xml Sitemap: http://localhost:1313/sitemap.xml

View File

@@ -1,2 +1,2 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Search | Saurav Dhakal</title><meta name=keywords content><meta name=description content="search"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/search/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link crossorigin=anonymous rel=preload as=fetch href=../index.json><script defer crossorigin=anonymous src=/assets/js/search.b58269539d49d6ca2d32b61a53054d36df61ba713a257cbe66f257e175cb4d73.js integrity="sha256-tYJpU51J1sotMrYaUwVNNt9hunE6JXy+ZvJX4XXLTXM="></script><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/search/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/search/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Search"><meta property="og:description" content="search"><meta property="og:locale" content="en-us"><meta property="og:type" content="article"><meta name=twitter:card content="summary"><meta name=twitter:title content="Search"><meta name=twitter:description content="search"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Search","item":"https://sauravdhakal.com.np/search/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"Search","name":"Search","description":"search","keywords":[],"articleBody":"","wordCount":"0","inLanguage":"en","datePublished":"0001-01-01T00:00:00Z","dateModified":"0001-01-01T00:00:00Z","author":{"@type":"Person","name":"saurav"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://sauravdhakal.com.np/search/"},"publisher":{"@type":"Organization","name":"Saurav Dhakal","logo":{"@type":"ImageObject","url":"https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E"}}}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Search <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></h1><div class=post-meta></div></header><div id=searchbox><input id=searchInput autofocus placeholder="placeholder text in search input box" aria-label=search type=search autocomplete=off maxlength=64><ul id=searchResults aria-label="search results"></ul></div></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Search | Saurav Dhakal</title><meta name=keywords content><meta name=description content="search"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/search/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link crossorigin=anonymous rel=preload as=fetch href=../index.json><script defer crossorigin=anonymous src=/assets/js/search.b58269539d49d6ca2d32b61a53054d36df61ba713a257cbe66f257e175cb4d73.js integrity="sha256-tYJpU51J1sotMrYaUwVNNt9hunE6JXy+ZvJX4XXLTXM="></script><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=http://localhost:1313/search/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/search/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Search"><meta property="og:description" content="search"><meta property="og:locale" content="en-us"><meta property="og:type" content="article"><meta name=twitter:card content="summary"><meta name=twitter:title content="Search"><meta name=twitter:description content="search"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Search","item":"http://localhost:1313/search/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"Search","name":"Search","description":"search","keywords":[],"articleBody":"","wordCount":"0","inLanguage":"en","datePublished":"0001-01-01T00:00:00Z","dateModified":"0001-01-01T00:00:00Z","author":{"@type":"Person","name":"saurav"},"mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:1313/search/"},"publisher":{"@type":"Organization","name":"Saurav Dhakal","logo":{"@type":"ImageObject","url":"http://localhost:1313/%3Clink%20/%20abs%20url%3E"}}}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Search <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></h1><div class=post-meta></div></header><div id=searchbox><input id=searchInput autofocus placeholder="placeholder text in search input box" aria-label=search type=search autocomplete=off maxlength=64><ul id=searchResults aria-label="search results"></ul></div></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,36 +2,40 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"> xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url> <url>
<loc>https://sauravdhakal.com.np/tags/architecture/</loc> <loc>http://localhost:1313/tags/architecture/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/categories/backend-development/</loc> <loc>http://localhost:1313/categories/backend-development/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/categories/</loc> <loc>http://localhost:1313/categories/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/tags/nestjs/</loc> <loc>http://localhost:1313/tags/nestjs/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/categories/nestjs/</loc> <loc>http://localhost:1313/categories/nestjs/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/posts/</loc> <loc>http://localhost:1313/posts/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/</loc> <loc>http://localhost:1313/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/tags/</loc> <loc>http://localhost:1313/tags/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/tags/typescript/</loc> <loc>http://localhost:1313/tags/typescript/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/posts/demo/</loc> <loc>http://localhost:1313/posts/demo/</loc>
<lastmod>2025-08-19T00:00:00+00:00</lastmod> <lastmod>2025-08-19T00:00:00+00:00</lastmod>
</url><url> </url><url>
<loc>https://sauravdhakal.com.np/search/</loc> <loc>http://localhost:1313/notes/</loc>
</url><url>
<loc>http://localhost:1313/notes/demo/</loc>
</url><url>
<loc>http://localhost:1313/search/</loc>
</url> </url>
</urlset> </urlset>

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Architecture | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/tags/architecture/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/tags/architecture/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/tags/architecture/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/tags/architecture/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Architecture"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Architecture"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a>&nbsp;»&nbsp;<a href=https://sauravdhakal.com.np/tags/>Tags</a></div><h1>Architecture <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Architecture | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/tags/architecture/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/tags/architecture/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/tags/architecture/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/tags/architecture/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Architecture"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Architecture"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a>&nbsp;»&nbsp;<a href=http://localhost:1313/tags/>Tags</a></div><h1>Architecture
<a href=/tags/architecture/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/tags/architecture/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Architecture on Saurav Dhakal</title> <title>Architecture on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/architecture/</link> <link>http://localhost:1313/tags/architecture/</link>
<description>Recent content in Architecture on Saurav Dhakal</description> <description>Recent content in Architecture on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/tags/architecture/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/tags/architecture/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/tags/architecture/</title><link rel=canonical href=https://sauravdhakal.com.np/tags/architecture/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/tags/architecture/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/tags/architecture/</title><link rel=canonical href=http://localhost:1313/tags/architecture/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/tags/architecture/"></head></html>

View File

@@ -1,2 +1,2 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Tags | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/tags/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/tags/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/tags/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/tags/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Tags"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Tags"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span class=active>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Tags</h1></header><ul class=terms-tags><li><a href=https://sauravdhakal.com.np/tags/architecture/>architecture <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://sauravdhakal.com.np/tags/nestjs/>nestjs <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://sauravdhakal.com.np/tags/typescript/>typescript <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Tags | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/tags/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/tags/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/tags/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/tags/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Tags"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Tags"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span class=active>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Tags</h1></header><ul class=terms-tags><li><a href=http://localhost:1313/tags/architecture/>architecture <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=http://localhost:1313/tags/nestjs/>nestjs <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=http://localhost:1313/tags/typescript/>typescript <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,32 +2,32 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Tags on Saurav Dhakal</title> <title>Tags on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/</link> <link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on Saurav Dhakal</description> <description>Recent content in Tags on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/tags/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Architecture</title> <title>Architecture</title>
<link>https://sauravdhakal.com.np/tags/architecture/</link> <link>http://localhost:1313/tags/architecture/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/tags/architecture/</guid> <guid>http://localhost:1313/tags/architecture/</guid>
<description></description> <description></description>
</item> </item>
<item> <item>
<title>Nestjs</title> <title>Nestjs</title>
<link>https://sauravdhakal.com.np/tags/nestjs/</link> <link>http://localhost:1313/tags/nestjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/tags/nestjs/</guid> <guid>http://localhost:1313/tags/nestjs/</guid>
<description></description> <description></description>
</item> </item>
<item> <item>
<title>Typescript</title> <title>Typescript</title>
<link>https://sauravdhakal.com.np/tags/typescript/</link> <link>http://localhost:1313/tags/typescript/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/tags/typescript/</guid> <guid>http://localhost:1313/tags/typescript/</guid>
<description></description> <description></description>
</item> </item>
</channel> </channel>

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Nestjs | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/tags/nestjs/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/tags/nestjs/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/tags/nestjs/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/tags/nestjs/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Nestjs"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Nestjs"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a>&nbsp;»&nbsp;<a href=https://sauravdhakal.com.np/tags/>Tags</a></div><h1>Nestjs <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Nestjs | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/tags/nestjs/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/tags/nestjs/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/tags/nestjs/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/tags/nestjs/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Nestjs"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Nestjs"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a>&nbsp;»&nbsp;<a href=http://localhost:1313/tags/>Tags</a></div><h1>Nestjs
<a href=/tags/nestjs/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/tags/nestjs/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Nestjs on Saurav Dhakal</title> <title>Nestjs on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/nestjs/</link> <link>http://localhost:1313/tags/nestjs/</link>
<description>Recent content in Nestjs on Saurav Dhakal</description> <description>Recent content in Nestjs on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/tags/nestjs/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/tags/nestjs/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/tags/nestjs/</title><link rel=canonical href=https://sauravdhakal.com.np/tags/nestjs/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/tags/nestjs/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/tags/nestjs/</title><link rel=canonical href=http://localhost:1313/tags/nestjs/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/tags/nestjs/"></head></html>

View File

@@ -1,3 +1,3 @@
<!doctype html><html lang=en dir=auto data-theme=dark><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Typescript | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/tags/typescript/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://sauravdhakal.com.np/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://sauravdhakal.com.np/tags/typescript/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/tags/typescript/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="https://sauravdhakal.com.np/tags/typescript/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Typescript"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Typescript"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://sauravdhakal.com.np/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=https://sauravdhakal.com.np/posts/ title=posts><span>posts</span></a></li><li><a href=https://sauravdhakal.com.np/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>Home</a>&nbsp;»&nbsp;<a href=https://sauravdhakal.com.np/tags/>Tags</a></div><h1>Typescript <!doctype html><html lang=en dir=auto data-theme=dark><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Typescript | Saurav Dhakal</title><meta name=keywords content><meta name=description content="A personal blog"><meta name=author content="saurav"><link rel=canonical href=http://localhost:1313/tags/typescript/><link crossorigin=anonymous href=/assets/css/stylesheet.1819d1b52fd9f2af4d88316fde3f9b918c48d08dac9a2e1ef0a7ca49d1f18ddb.css integrity="sha256-GBnRtS/Z8q9NiDFv3j+bkYxI0I2smi4e8KfKSdHxjds=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=http://localhost:1313/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=http://localhost:1313/tags/typescript/index.xml title=rss><link rel=alternate hreflang=en href=http://localhost:1313/tags/typescript/><noscript><style>#theme-toggle,.top-link{display:none}</style></noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-V0CXG8ZEG2"></script><script>var dnt,doNotTrack=!1;if(!1&&(dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes"),!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="http://localhost:1313/tags/typescript/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Typescript"><meta property="og:description" content="A personal blog"><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Typescript"><meta name=twitter:description content="A personal blog"></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=http://localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=http://localhost:1313/posts/ title=posts><span>posts</span></a></li><li><a href=http://localhost:1313/tags/ title=tags><span>tags</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=http://localhost:1313/>Home</a>&nbsp;»&nbsp;<a href=http://localhost:1313/tags/>Tags</a></div><h1>Typescript
<a href=/tags/typescript/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=https://sauravdhakal.com.np/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2025 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg> <a href=/tags/typescript/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>Understanding Separation of Concerns (SoC) in NestJS</h2></header><div class=entry-content><p>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</p></div><footer class=entry-footer><span title='2025-08-19 00:00:00 +0000 UTC'>August 19, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>78 words</span>&nbsp;·&nbsp;<span>Saurav Dhakal</span></footer><a class=entry-link aria-label="post link to Understanding Separation of Concerns (SoC) in NestJS" href=http://localhost:1313/posts/demo/></a></article></main><footer class=footer><span>Copyright &copy; 2026 SauravDhakal</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html> </a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script></body></html>

View File

@@ -2,18 +2,18 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<title>Typescript on Saurav Dhakal</title> <title>Typescript on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/typescript/</link> <link>http://localhost:1313/tags/typescript/</link>
<description>Recent content in Typescript on Saurav Dhakal</description> <description>Recent content in Typescript on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator> <generator>Hugo -- 0.152.2</generator>
<language>en-us</language> <language>en-us</language>
<copyright>SauravDhakal</copyright> <copyright>SauravDhakal</copyright>
<lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate> <lastBuildDate>Tue, 19 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://sauravdhakal.com.np/tags/typescript/index.xml" rel="self" type="application/rss+xml" /> <atom:link href="http://localhost:1313/tags/typescript/index.xml" rel="self" type="application/rss+xml" />
<item> <item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title> <title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/demo/</link> <link>http://localhost:1313/posts/demo/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate> <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/demo/</guid> <guid>http://localhost:1313/posts/demo/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description> <description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item> </item>
</channel> </channel>

View File

@@ -1 +1 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/tags/typescript/</title><link rel=canonical href=https://sauravdhakal.com.np/tags/typescript/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/tags/typescript/"></head></html> <!doctype html><html lang=en-us><head><title>http://localhost:1313/tags/typescript/</title><link rel=canonical href=http://localhost:1313/tags/typescript/><meta charset=utf-8><meta http-equiv=refresh content="0; url=http://localhost:1313/tags/typescript/"></head></html>