Written by: developervsandhu
Technology and Gadgets
From Express to NestJS: My Early Experience
As a developer who has spent most of their time working with Express, jumping into NestJS felt like stepping into a completely different environment. At first, I honestly thought, "This is harder than I expected." But now, after spending some time learning and experimenting, I can say — it's actually pretty great.
Here’s how it’s been going so far.
👋 The Initial Confusion
Coming from Express, I was used to writing quick APIs using minimal setup. With NestJS, the first time I saw:
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
}}
My reaction was: “Why do I need all this to return a simple response?”
NestJS uses decorators, modules, and a layer of abstraction that can be confusing when you're used to writing routes directly in Express. But once you understand the structure, it starts making sense.
🔍 What’s Different?
1. Project Structure
NestJS is highly opinionated — which means it wants you to structure things in a certain way. Instead of having everything in a single file or folder, you have:
controllers
services
modules
At first, it felt like too much boilerplate. But now I see the benefits — especially as your app grows. It’s organized, readable, and easy to scale.
2. Dependency Injection
NestJS uses a concept called dependency injection — which, in simple terms, lets you inject reusable logic (like a service) into a controller or another service.
In Express, I usually had to import everything manually and manage instances myself. With NestJS, this is handled automatically — and it feels really clean once you get used to it.
3. Decorators Everywhere
Decorators like @Controller()
, @Get()
, @Post()
, @Injectable()
add metadata to your code so NestJS knows what to do with it.
They can be a bit intimidating at first, but they actually make your code easier to read once you're familiar.
<Highlight code={@Get('profile') getProfile() { return { message: 'User profile data' }; }
} language="ts" />
Compared to app.get('/profile', handler)
in Express, it feels more structured and modular.
🎯 What I Like About NestJS So Far
- The separation of concerns makes the code easier to maintain.
- It encourages good practices from the beginning.
- It’s great for building scalable APIs.
- You don’t have to set up everything from scratch — a lot is already built-in (validation, guards, interceptors, etc.).
💥 What’s Been Challenging
- Getting used to modules and how everything fits together.
- Understanding when and how to use decorators properly.
- Adapting my Express mindset to a more structured NestJS one.
But honestly, these are the kinds of challenges that lead to better understanding and growth.
🤔 Final Thoughts
If you’re comfortable with Express but looking for a more structured framework that helps you build larger applications in a cleaner way, NestJS is a solid choice. Yes, the learning curve is real. But once you get used to it, you’ll start to appreciate how much it helps in the long run.
I’m still learning — and that’s okay. Every day I build something small, break something, fix it, and learn something new.
And that’s the fun part. 😄
Let me know if you’re learning NestJS too — I’d love to hear your experience!
Login To Add Comment
No comments yet.