feat: Init with clean layout

This commit is contained in:
SauravDhakal
2026-04-01 08:06:08 +05:45
parent 1206387246
commit df6f488ccd
46 changed files with 747 additions and 432 deletions

21
.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
# Hugo build output
public/
resources/_gen/
# Hugo lock file
.hugo_build.lock
# OS files
.DS_Store
Thumbs.db
# Editor files
*.swp
*.swo
*~
.idea/
.vscode/
# Environment files
.env
.env.local

532
CUSTOMIZATION.md Normal file
View File

@@ -0,0 +1,532 @@
# Hugo + PaperMod Customization Guide
This guide covers how to customize your Hugo portfolio site using the PaperMod theme.
---
## Table of Contents
1. [Project Structure](#project-structure)
2. [Development Workflow](#development-workflow)
3. [Configuration (hugo.yaml)](#configuration-hugoyaml)
4. [Adding Content](#adding-content)
5. [Creating New Sections](#creating-new-sections)
6. [Customizing Styles (CSS)](#customizing-styles-css)
7. [Overriding Layouts](#overriding-layouts)
8. [Common Customizations](#common-customizations)
9. [Deployment](#deployment)
---
## Project Structure
```
MyPortfolio/
├── archetypes/ # Templates for new content
├── assets/
│ └── css/
│ └── extended/
│ └── custom.css # YOUR custom CSS (this gets merged)
├── content/
│ ├── posts/ # Long-form articles
│ │ └── _index.md # Section config
│ ├── notes/ # Short notes/TILs
│ │ └── _index.md # Section config
│ └── search.md # Search page
├── layouts/
│ ├── partials/ # Override theme partials
│ │ └── footer.html # Custom footer
│ └── notes/ # Section-specific layouts
│ └── list.html # Custom notes list
├── static/
│ └── files/ # Static files (CV.pdf, images, etc.)
├── themes/
│ └── PaperMod/ # Theme (git submodule - DON'T edit)
├── hugo.yaml # Main configuration
└── .gitignore # Ignores public/, etc.
```
### Key Principle: Never Edit the Theme Directly
The `themes/PaperMod/` folder is a git submodule. To customize:
- **CSS**: Add to `assets/css/extended/custom.css`
- **Layouts**: Copy the file from `themes/PaperMod/layouts/` to `layouts/` and modify
- **Config**: Everything in `hugo.yaml`
---
## Development Workflow
### Local Development
```bash
# Start dev server (watches for changes)
hugo serve
# With drafts visible
hugo serve -D
# Build for production (outputs to public/)
hugo build --minify
```
### Why `public/` is Gitignored
- `public/` is generated output - it's rebuilt fresh every time
- Your CI/CD (GitHub Actions) builds it during deployment
- Never commit build artifacts to git
### Git Workflow
```bash
# After making changes
git add .
git commit -m "Add new post about X"
git push origin master # Triggers deployment
```
---
## Configuration (hugo.yaml)
### Key Sections
#### Site Basics
```yaml
baseURL: "/" # Use "/" for relative URLs (works on localhost + prod)
relativeURLs: true # Makes all URLs relative
title: Saurav Dhakal
languageCode: en-us
theme: ["PaperMod"]
```
#### Menu (Header Navigation)
```yaml
menu:
main:
- identifier: posts # Internal ID
name: Posts # Display name
url: /posts/ # URL path
weight: 10 # Order (lower = first)
- identifier: notes
name: Notes
url: /notes/
weight: 20
- identifier: tags
name: Tags
url: /tags/
weight: 30
- identifier: search
name: Search
url: /search/
weight: 40
```
#### Home Page Info
```yaml
params:
homeInfoParams:
Title: "Hi there 👋, I'm Saurav!"
Content: >
I'm a software engineer...
```
#### Social Icons
```yaml
params:
socialIcons:
- name: github
url: "https://github.com/yourusername"
- name: linkedin
url: "https://linkedin.com/in/yourusername"
- name: x
url: "https://x.com/yourusername"
```
Available icons: github, linkedin, x, twitter, email, rss, youtube, instagram, facebook, stackoverflow, etc.
---
## Adding Content
### New Post
```bash
hugo new posts/my-new-post.md
```
Or manually create `content/posts/my-new-post.md`:
```markdown
---
title: "My New Post"
date: 2025-08-20
summary: "A brief description for the list view"
tags: ["tag1", "tag2"]
categories: ["Category"]
draft: false
ShowToc: true
TocOpen: false
---
Your content here...
```
### New Note
Create `content/notes/my-note.md`:
```markdown
---
title: "Quick TIL"
date: 2025-08-20
summary: "Today I learned about X"
tags: ["til"]
---
Short content here...
```
### Front Matter Options
| Field | Description |
|-------|-------------|
| `title` | Post title |
| `date` | Publication date (YYYY-MM-DD) |
| `summary` | Short description for list views |
| `tags` | Array of tags |
| `categories` | Array of categories |
| `draft` | If `true`, won't be published |
| `ShowToc` | Show table of contents |
| `TocOpen` | TOC expanded by default |
| `ShowReadingTime` | Override global setting |
| `ShowWordCount` | Override global setting |
| `cover.image` | Cover image path |
---
## Creating New Sections
### Example: Adding a "Projects" Section
1. **Add to menu** in `hugo.yaml`:
```yaml
menu:
main:
# ... existing items
- identifier: projects
name: Projects
url: /projects/
weight: 25
```
2. **Create content directory**:
```bash
mkdir -p content/projects
```
3. **Create section index** `content/projects/_index.md`:
```markdown
---
title: "Projects"
description: "Things I've built"
---
```
4. **Add project pages** `content/projects/my-project.md`:
```markdown
---
title: "My Cool Project"
date: 2025-01-15
summary: "A brief description"
tags: ["golang", "cli"]
---
Project description...
```
5. **(Optional) Custom layout** - If you want projects to look different, create `layouts/projects/list.html`
---
## Customizing Styles (CSS)
### Where to Add CSS
**Only edit**: `assets/css/extended/custom.css`
PaperMod automatically includes this file. You don't need to import it anywhere.
### CSS Variables (Theme Colors)
PaperMod uses CSS variables. Override them in your custom.css:
```css
:root {
/* Light mode */
--primary: #282828; /* Main text */
--secondary: #3c3836; /* Secondary text */
--tertiary: rgb(214, 214, 214); /* Borders, etc */
--theme: rgb(255, 255, 255); /* Background */
--entry: rgb(255, 255, 255); /* Card background */
}
:root[data-theme="dark"] {
/* Dark mode */
--primary: #fbf1c7;
--secondary: #ebdbb2;
--theme: #181818;
--entry: rgb(46, 46, 51);
}
```
### Common CSS Customizations
#### Change fonts
```css
@import url("https://fonts.googleapis.com/css2?family=Your+Font&display=swap");
body {
font-family: "Your Font", sans-serif;
}
```
#### Style links
```css
main a {
text-decoration: underline;
text-decoration-color: var(--green);
}
main a:hover {
background-color: var(--green);
color: white;
}
```
#### Customize post cards
```css
main .post-entry {
border: 2px solid #383838;
background-color: var(--entry);
border-radius: 8px;
}
```
---
## Overriding Layouts
### How Layout Override Works
Hugo looks for templates in this order:
1. `layouts/` (your overrides)
2. `themes/PaperMod/layouts/` (theme defaults)
### To Override a Template
1. Find the file in `themes/PaperMod/layouts/`
2. Copy it to the same path in `layouts/`
3. Modify your copy
### Common Files to Override
| File | Purpose |
|------|---------|
| `layouts/partials/header.html` | Site header/nav |
| `layouts/partials/footer.html` | Site footer |
| `layouts/partials/post_meta.html` | Post metadata (date, read time) |
| `layouts/_default/list.html` | List pages (posts, tags) |
| `layouts/_default/single.html` | Individual post/page |
### Example: Simpler Footer
Your `layouts/partials/footer.html` already overrides the theme's footer.
### Section-Specific Layouts
Create `layouts/SECTION_NAME/list.html` for a custom list layout for that section.
Example: `layouts/notes/list.html` - custom compact layout for notes.
---
## Common Customizations
### Disable Reading Time for a Section
In the section's `_index.md`:
```markdown
---
title: "Notes"
ShowReadingTime: false
---
```
Or per-post in front matter.
### Add a Static Page (About, Contact)
Create `content/about.md`:
```markdown
---
title: "About"
layout: "single"
url: "/about/"
---
About me content...
```
Add to menu:
```yaml
menu:
main:
- identifier: about
name: About
url: /about/
weight: 50
```
### Add Favicon
1. Place favicon files in `static/`:
- `static/favicon.ico`
- `static/favicon-16x16.png`
- `static/favicon-32x32.png`
- `static/apple-touch-icon.png`
2. Update `hugo.yaml`:
```yaml
params:
assets:
favicon: "/favicon.ico"
favicon16x16: "/favicon-16x16.png"
favicon32x32: "/favicon-32x32.png"
apple_touch_icon: "/apple-touch-icon.png"
```
### Enable Comments (Disqus)
```yaml
params:
comments: true
disqusShortname: "your-disqus-shortname"
```
### Add Google Analytics
Already configured in your `hugo.yaml`:
```yaml
googleAnalytics: "G-XXXXXXXXXX"
```
---
## Deployment
### Current Setup (GitHub Actions → SSH/SCP)
Your `.github/workflows/deploy.yml`:
1. Triggers on push to `master`
2. Builds site with `hugo build --minify`
3. Deploys `public/` via SCP to your server
### Required GitHub Secrets
Set these in your repo's Settings → Secrets:
- `SSH_HOST` - Your server hostname/IP
- `SSH_USER` - SSH username
- `SSH_KEY` - Private SSH key
- `SSH_PORT` - SSH port (usually 22)
### Alternative: GitHub Pages
If you want to use GitHub Pages instead:
1. Change workflow to use `peaceiris/actions-gh-pages`
2. Set `baseURL` to `https://yourusername.github.io/repo-name/`
### Alternative: Netlify/Vercel
These platforms auto-detect Hugo and build for you:
1. Connect your GitHub repo
2. Set build command: `hugo --minify`
3. Set publish directory: `public`
---
## Quick Reference
### Useful Commands
```bash
# Local dev
hugo serve -D # Serve with drafts
# Create content
hugo new posts/title.md # New post
hugo new notes/title.md # New note
# Build
hugo build --minify # Production build
# Debug
hugo config # Show full config
hugo list all # List all content
```
### File Locations
| What | Where |
|------|-------|
| Config | `hugo.yaml` |
| Custom CSS | `assets/css/extended/custom.css` |
| Posts | `content/posts/` |
| Notes | `content/notes/` |
| Static files | `static/` |
| Layout overrides | `layouts/` |
---
## Troubleshooting
### Links Go to Production URL in Dev
Fixed by setting:
```yaml
baseURL: "/"
relativeURLs: true
```
### Changes Not Showing
1. Hard refresh browser (Ctrl+Shift+R)
2. Clear `public/` folder: `rm -rf public/`
3. Restart hugo serve
### Theme Not Loading
```bash
git submodule update --init --recursive
```
### Search Not Working
Ensure `hugo.yaml` has:
```yaml
outputs:
home:
- HTML
- RSS
- JSON # Required for search
```
---
## Resources
- [Hugo Documentation](https://gohugo.io/documentation/)
- [PaperMod Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki)
- [PaperMod Demo](https://adityatelange.github.io/hugo-PaperMod/)

View File

@@ -66,7 +66,7 @@
}
body {
font-family: "Space Grotesk", sans-serif;
font-family: "Space Grotesk", monospace;
}
nav #menu span {
@@ -139,3 +139,54 @@ main .post-entry {
color: var(--post-entry-fg);
border: 2px solid #383838;
}
/* *
* NOTES SECTION - Compact list style
* */
.notes-list {
list-style: none;
padding: 0;
margin: 0;
}
.note-item {
padding: 12px 0;
border-bottom: 1px solid var(--tertiary);
}
.note-item:last-child {
border-bottom: none;
}
.note-item a {
display: flex;
justify-content: space-between;
align-items: baseline;
text-decoration: none;
gap: 16px;
}
.note-item a:hover .note-title {
text-decoration: underline;
text-decoration-color: var(--green);
text-decoration-thickness: 2px;
}
.note-title {
font-size: 1.1rem;
font-weight: 500;
color: var(--primary);
}
.note-date {
font-size: 0.85rem;
color: var(--secondary);
white-space: nowrap;
}
.note-summary {
margin: 4px 0 0 0;
font-size: 0.9rem;
color: var(--secondary);
line-height: 1.4;
}

4
content/notes/_index.md Normal file
View File

@@ -0,0 +1,4 @@
---
title: "Notes"
description: "Quick notes, TILs, and short thoughts"
---

View File

@@ -1,8 +1,11 @@
---
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"
title: "Sample Note"
date: 2025-08-20
# summary: "This is a sample note to demonstrate the notes section"
tags: ["example"]
draft: false
---
This is a sample note. Notes are meant to be short, quick thoughts or TILs (Today I Learned).
Delete this file and add your own notes here!

4
content/posts/_index.md Normal file
View File

@@ -0,0 +1,4 @@
---
title: "Posts"
description: "Long-form articles on software development, architecture, and engineering"
---

View File

@@ -1,141 +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.
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,8 +1,7 @@
---
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"
title: "Search"
layout: "search"
url: "/search/"
summary: "Search posts and notes"
placeholder: "Search..."
---

View File

@@ -1,5 +1,5 @@
# DEmo
baseURL: "https://sauravdhakal.com.np/"
baseURL: "/"
relativeURLs: true
languageCode: en-us
title: Saurav Dhakal
theme: ["PaperMod"]
@@ -77,14 +77,12 @@ params:
# home-info mode
homeInfoParams:
Title: "Hi there \U0001F44B, I'm Saurav!"
Title: "Hi there \U0001F44B, Im Saurav!"
Content: >
Im a software engineer who enjoys building thoughtful systems and learning how things really work.
<br />
<br /><br />
This is my digital garden - notes, projects, and lessons along the way.
- <br />
<br /><br />
Checkout my [CV](files/CV.pdf) for my works and projects.
socialIcons:
@@ -123,16 +121,27 @@ params:
menu:
main:
- identifier: posts
name: posts
name: Posts
url: /posts/
weight: 10
- identifier: tags
name: tags
url: /tags/
- identifier: notes
name: Notes
url: /notes/
weight: 20
- identifier: tags
name: Tags
url: /tags/
weight: 30
- identifier: search
name: Search
url: /search/
weight: 40
# Read: https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#using-hugos-syntax-highlighter-chroma
pygmentsUseClasses: true
markup:
goldmark:
renderer:
unsafe: true
highlight:
noClasses: false
# anchorLineNos: true

30
layouts/notes/list.html Normal file
View File

@@ -0,0 +1,30 @@
{{- define "main" }}
<header class="page-header">
<h1>{{ .Title }}</h1>
{{- if .Description }}
<div class="post-description">{{ .Description }}</div>
{{- end }}
</header>
{{- $pages := .Pages }}
{{- if .Site.Params.fuseOpts }}
<div id="searchResults" class="post-list"></div>
{{- end }}
<ul class="notes-list">
{{- range $pages }}
<li class="note-item">
<a href="{{ .Permalink }}">
<span class="note-title">{{ .Title }}</span>
<span class="note-date">{{ .Date.Format "Jan 2, 2006" }}</span>
</a>
{{- if .Summary }}
<p class="note-summary">{{ .Summary | plainify | truncate 100 }}</p>
{{- end }}
</li>
{{- end }}
</ul>
{{- end }}{{/* end main */}}

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; 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>
<!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=//localhost:1313/404.html><link crossorigin=anonymous href=./assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//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=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</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>

View File

@@ -1,3 +0,0 @@
<!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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>

View File

@@ -1,20 +0,0 @@
<?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>Backend Development on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/categories/backend-development/</link>
<description>Recent content in Backend Development on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!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>

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; 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>
<!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=//localhost:1313/categories/><link crossorigin=anonymous href=../assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//localhost:1313/categories/index.xml title=rss><link rel=alternate hreflang=en href=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//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=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Categories</h1></header><ul class=terms-tags></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>

View File

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

View File

@@ -1,3 +0,0 @@
<!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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>

View File

@@ -1,20 +0,0 @@
<?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>NestJS on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/categories/nestjs/</link>
<description>Recent content in NestJS on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!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>

View File

@@ -1,4 +1,5 @@
<!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.158.0"><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=//localhost:1313/><link crossorigin=anonymous href=./assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//localhost:1313/index.xml title=rss><link rel=alternate type=application/json href=//localhost:1313/index.json title=json><link rel=alternate hreflang=en href=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//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":"//localhost:1313/","description":"A personal blog","logo":"//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=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li></ul></nav></header><main class=main><article class="first-entry home-info"><header class=entry-header><h1>Hi there 👋, Im Saurav!</h1></header><div class=entry-content>Im a software engineer who enjoys building thoughtful systems and learning how things really work.<br><br>This is my digital garden - notes, projects, and lessons along the way.<br><br>Checkout my <a href=files/CV.pdf>CV</a> for my works and projects.</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://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>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=https://sauravdhakal.com.np/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><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>Sample Note</h2></header><div class=entry-content><p>This is a sample note. Notes are meant to be short, quick thoughts or TILs (Today I Learned).
Delete this file and add your own notes here!</p></div><footer class=entry-footer><span title='2025-08-20 00:00:00 +0000 UTC'>August 20, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>27 words</span>&nbsp;·&nbsp;<span>saurav</span></footer><a class=entry-link aria-label="post link to Sample Note" href=//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>

File diff suppressed because one or more lines are too long

View File

@@ -2,19 +2,20 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/</link>
<link>//localhost:1313/</link>
<description>Recent content on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<generator>Hugo -- 0.158.0</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<lastBuildDate>Wed, 20 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="//localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
<title>Sample Note</title>
<link>//localhost:1313/notes/demo/</link>
<pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
<guid>//localhost:1313/notes/demo/</guid>
<description>&lt;p&gt;This is a sample note. Notes are meant to be short, quick thoughts or TILs (Today I Learned).&lt;/p&gt;
&lt;p&gt;Delete this file and add your own notes here!&lt;/p&gt;</description>
</item>
</channel>
</rss>

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,4 @@
<!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>Notes | Saurav Dhakal</title><meta name=keywords content><meta name=description content="Notes - Saurav Dhakal"><meta name=author content="saurav"><link rel=canonical href=https://sauravdhakal.com.np/notes/><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/notes/index.xml title=rss><link rel=alternate hreflang=en href=https://sauravdhakal.com.np/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="https://sauravdhakal.com.np/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":"https://sauravdhakal.com.np/notes/"}]}</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><div class=breadcrumbs><a href=https://sauravdhakal.com.np/>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=https://sauravdhakal.com.np/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>
<!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="Quick notes, TILs, and short thoughts"><meta name=author content="saurav"><link rel=canonical href=//localhost:1313/notes/><link crossorigin=anonymous href=../assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//localhost:1313/notes/index.xml title=rss><link rel=alternate hreflang=en href=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//localhost:1313/notes/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Notes"><meta property="og:description" content="Quick notes, TILs, and short thoughts"><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="Quick notes, TILs, and short thoughts"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Notes","item":"//localhost:1313/notes/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span class=active>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Notes</h1><div class=post-description>Quick notes, TILs, and short thoughts</div></header><div id=searchResults class=post-list></div><ul class=notes-list><li class=note-item><a href=//localhost:1313/notes/demo/><span class=note-title>Sample Note</span>
<span class=note-date>Aug 20, 2025</span></a><p class=note-summary>This is a sample note. Notes are meant to be short, quick thoughts or TILs (Today I Learned).
Delete …</p></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>

View File

@@ -2,11 +2,20 @@
<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>https://sauravdhakal.com.np/notes/</link>
<link>//localhost:1313/notes/</link>
<description>Recent content in Notes on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<generator>Hugo -- 0.158.0</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<atom:link href="https://sauravdhakal.com.np/notes/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Wed, 20 Aug 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="//localhost:1313/notes/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Sample Note</title>
<link>//localhost:1313/notes/demo/</link>
<pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
<guid>//localhost:1313/notes/demo/</guid>
<description>&lt;p&gt;This is a sample note. Notes are meant to be short, quick thoughts or TILs (Today I Learned).&lt;/p&gt;
&lt;p&gt;Delete this file and add your own notes here!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!doctype html><html lang=en-us><head><title>https://sauravdhakal.com.np/notes/</title><link rel=canonical href=https://sauravdhakal.com.np/notes/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://sauravdhakal.com.np/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>//localhost:1313/</title><link rel=canonical href=//localhost:1313/><meta charset=utf-8><meta http-equiv=refresh content="0; url=//localhost:1313/"></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>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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>
<!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="Long-form articles on software development, architecture, and engineering"><meta name=author content="saurav"><link rel=canonical href=//localhost:1313/posts/><link crossorigin=anonymous href=../assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//localhost:1313/posts/index.xml title=rss><link rel=alternate hreflang=en href=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//localhost:1313/posts/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Posts"><meta property="og:description" content="Long-form articles on software development, architecture, and engineering"><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="Long-form articles on software development, architecture, and engineering"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Posts","item":"//localhost:1313/posts/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span class=active>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=//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><div class=post-description>Long-form articles on software development, architecture, and engineering</div></header></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>

View File

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

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>//localhost:1313/posts/</title><link rel=canonical href=//localhost:1313/posts/><meta charset=utf-8><meta http-equiv=refresh content="0; url=//localhost:1313/posts/"></head></html>

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
User-agent: *
Disallow:
Sitemap: https://sauravdhakal.com.np/sitemap.xml
Sitemap: //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; 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>
<!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 posts and notes"><meta name=author content="saurav"><link rel=canonical href=//localhost:1313/search/><link crossorigin=anonymous href=../assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" 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=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//localhost:1313/search/"><meta property="og:site_name" content="Saurav Dhakal"><meta property="og:title" content="Search"><meta property="og:description" content="Search posts and notes"><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 posts and notes"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Search","item":"//localhost:1313/search/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"Search","name":"Search","description":"Search posts and notes","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":"//localhost:1313/search/"},"publisher":{"@type":"Organization","name":"Saurav Dhakal","logo":{"@type":"ImageObject","url":"//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=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span class=active>Search</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=Search... 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>

View File

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

View File

@@ -1,3 +0,0 @@
<!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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>

View File

@@ -1,20 +0,0 @@
<?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>Architecture on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/architecture/</link>
<description>Recent content in Architecture on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!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>

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; 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>
<!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=//localhost:1313/tags/><link crossorigin=anonymous href=../assets/css/stylesheet.f3b5a353c674b5e6b6989a6ec07a987e4eec46ddc105399d3b2df9cb53eaaa1f.css integrity="sha256-87WjU8Z0tea2mJpuwHqYfk7sRt3BBTmdOy35y1Pqqh8=" rel="preload stylesheet" as=style><link rel=icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=16x16 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=//localhost:1313/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=//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=//localhost:1313/tags/index.xml title=rss><link rel=alternate hreflang=en href=//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 doNotTrack=!1,dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,doNotTrack=dnt=="1"||dnt=="yes";if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V0CXG8ZEG2")}</script><meta property="og:url" content="//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=//localhost:1313/ accesskey=h title="SauravDhakal (Alt + H)">SauravDhakal</a><div class=logo-switches></div></div><ul id=menu><li><a href=//localhost:1313/posts/ title=Posts><span>Posts</span></a></li><li><a href=//localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=//localhost:1313/tags/ title=Tags><span class=active>Tags</span></a></li><li><a href=//localhost:1313/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li></ul></nav></header><main class=main><header class=page-header><h1>Tags</h1></header><ul class=terms-tags><li><a href=//localhost:1313/tags/example/>example <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>

View File

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

View File

@@ -1,3 +0,0 @@
<!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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>

View File

@@ -1,20 +0,0 @@
<?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>Nestjs on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/nestjs/</link>
<description>Recent content in Nestjs on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!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>

View File

@@ -1,3 +0,0 @@
<!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
<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>4 min</span>&nbsp;·&nbsp;<span>767 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/seperation-of-concern-in-nextjs/></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>

View File

@@ -1,20 +0,0 @@
<?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>Typescript on Saurav Dhakal</title>
<link>https://sauravdhakal.com.np/tags/typescript/</link>
<description>Recent content in Typescript on Saurav Dhakal</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<copyright>SauravDhakal</copyright>
<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" />
<item>
<title>Understanding Separation of Concerns (SoC) in NestJS</title>
<link>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</link>
<pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
<guid>https://sauravdhakal.com.np/posts/seperation-of-concern-in-nextjs/</guid>
<description>A guide to understanding Separation of Concerns in NestJS using modules, services, and controllers.</description>
</item>
</channel>
</rss>

View File

@@ -1 +0,0 @@
<!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>