<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Piash Islam</title>
    <description>The latest articles on DEV Community by Piash Islam (@piash_islam).</description>
    <link>https://dev.to/piash_islam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4074001%2F898410d1-df81-4c74-b166-9fd0c20a9416.jpg</url>
      <title>DEV Community: Piash Islam</title>
      <link>https://dev.to/piash_islam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/piash_islam"/>
    <language>en</language>
    <item>
      <title>What I’ve Learned Building Full-Stack Web Applications with Next.js and Node.js</title>
      <dc:creator>Piash Islam</dc:creator>
      <pubDate>Wed, 12 Aug 2026 04:18:23 +0000</pubDate>
      <link>https://dev.to/piash_islam/what-ive-learned-building-full-stack-web-applications-with-nextjs-and-nodejs-501h</link>
      <guid>https://dev.to/piash_islam/what-ive-learned-building-full-stack-web-applications-with-nextjs-and-nodejs-501h</guid>
      <description>&lt;p&gt;When I first started building full-stack applications, I thought knowing React and Node.js would be enough.&lt;/p&gt;

&lt;p&gt;It didn't take long to realize that building a real application is a completely different experience.&lt;/p&gt;

&lt;p&gt;You have to think about the frontend, backend, database, authentication, API errors, loading states, deployment, and a lot of small things that you don't really notice when you're only following tutorials.&lt;/p&gt;

&lt;p&gt;After working on several projects, I started using a stack that I really enjoy: Next.js, React.js, Node.js, Express.js, PostgreSQL, MongoDB, Prisma, and Tailwind CSS.&lt;/p&gt;

&lt;p&gt;I wanted to share a few things I've learned from actually working with these technologies.&lt;/p&gt;

&lt;p&gt;Why I like Next.js&lt;/p&gt;

&lt;p&gt;I started with React, and I still use it heavily. But for larger projects, I really like using Next.js.&lt;/p&gt;

&lt;p&gt;The routing, layouts, server-side features, and overall project structure make things much easier to manage.&lt;/p&gt;

&lt;p&gt;One thing I particularly like is that I don't have to build everything from scratch. Next.js gives me a good starting point, and I can focus more on the actual application.&lt;/p&gt;

&lt;p&gt;Of course, Next.js isn't magic. There are still plenty of things that can go wrong. I've spent quite a bit of time debugging things like server/client issues, API requests, caching, authentication, and deployment problems.&lt;/p&gt;

&lt;p&gt;But that's also where most of the learning happens.&lt;/p&gt;

&lt;p&gt;The backend is where things get interesting&lt;/p&gt;

&lt;p&gt;When I started learning backend development, I mostly focused on creating APIs.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;p&gt;GET /products&lt;br&gt;
POST /auth/login&lt;br&gt;
POST /auth/register&lt;br&gt;
GET /orders&lt;br&gt;
PUT /users/:id&lt;/p&gt;

&lt;p&gt;It seemed pretty straightforward.&lt;/p&gt;

&lt;p&gt;Then I started building applications where these APIs actually had to work together.&lt;/p&gt;

&lt;p&gt;Suddenly there were questions like:&lt;/p&gt;

&lt;p&gt;What happens if the user isn't logged in?&lt;br&gt;
What if the API returns an error?&lt;br&gt;
What if the database is unavailable?&lt;br&gt;
How should authentication tokens be handled?&lt;br&gt;
What should happen while data is loading?&lt;br&gt;
What happens if the user clicks the button twice?&lt;/p&gt;

&lt;p&gt;These are the parts that made backend development much more interesting to me.&lt;/p&gt;

&lt;p&gt;I usually work with Node.js and Express.js for backend APIs. Keeping the API logic separate from the frontend has also made my projects much easier to maintain.&lt;/p&gt;

&lt;p&gt;Choosing the database&lt;/p&gt;

&lt;p&gt;I've worked with both MongoDB and PostgreSQL, and I don't think one database is automatically better than the other.&lt;/p&gt;

&lt;p&gt;It depends on the project.&lt;/p&gt;

&lt;p&gt;MongoDB feels very comfortable when working with document-based data, while PostgreSQL is something I prefer when the application has more structured relationships between data.&lt;/p&gt;

&lt;p&gt;The more projects I build, the more I realize that database design matters a lot.&lt;/p&gt;

&lt;p&gt;A bad database structure can create problems later that are much harder to fix.&lt;/p&gt;

&lt;p&gt;Prisma made PostgreSQL easier for me&lt;/p&gt;

&lt;p&gt;When working with PostgreSQL, I've also used Prisma.&lt;/p&gt;

&lt;p&gt;One of the things I like about Prisma is that I don't have to write raw SQL for every database operation.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;const users = await prisma.user.findMany();&lt;/p&gt;

&lt;p&gt;It also gives me a clear schema and makes working with the database much more comfortable, especially in a TypeScript project.&lt;/p&gt;

&lt;p&gt;Authentication is more complicated than it looks&lt;/p&gt;

&lt;p&gt;Authentication was another area where I learned a lot by actually building projects.&lt;/p&gt;

&lt;p&gt;At first, login looks simple:&lt;/p&gt;

&lt;p&gt;User enters email and password&lt;br&gt;
        ↓&lt;br&gt;
Backend checks credentials&lt;br&gt;
        ↓&lt;br&gt;
User is authenticated&lt;/p&gt;

&lt;p&gt;But a real application needs much more than that.&lt;/p&gt;

&lt;p&gt;You need to think about protected routes, token handling, logout, expired sessions, password reset, validation, and what happens when authentication fails.&lt;/p&gt;

&lt;p&gt;I've had my share of bugs around authentication, and honestly, debugging them taught me more than simply reading about authentication ever did.&lt;/p&gt;

&lt;p&gt;The frontend isn't just about making it look good&lt;/p&gt;

&lt;p&gt;When I build a frontend, I try to think about what happens when things don't go perfectly.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;What does the user see while data is loading?&lt;/p&gt;

&lt;p&gt;What happens when an API fails?&lt;/p&gt;

&lt;p&gt;What happens when there are no results?&lt;/p&gt;

&lt;p&gt;What happens on a small screen?&lt;/p&gt;

&lt;p&gt;What happens after an action is completed?&lt;/p&gt;

&lt;p&gt;These small details make a big difference in how an application feels.&lt;/p&gt;

&lt;p&gt;I usually use Tailwind CSS because it lets me move quickly while keeping the UI consistent.&lt;/p&gt;

&lt;p&gt;I've also learned that project structure matters&lt;/p&gt;

&lt;p&gt;When a project is small, you can put things almost anywhere and still get away with it.&lt;/p&gt;

&lt;p&gt;That changes pretty quickly as the project grows.&lt;/p&gt;

&lt;p&gt;I now try to keep things like components, hooks, API services, state management, types, and utilities organized instead of putting everything in one place.&lt;/p&gt;

&lt;p&gt;It might take a little more time at the beginning, but it saves a lot of time later.&lt;/p&gt;

&lt;p&gt;Building projects taught me more than tutorials&lt;/p&gt;

&lt;p&gt;This is probably the biggest lesson I've learned so far.&lt;/p&gt;

&lt;p&gt;Tutorials are great for understanding how something works.&lt;/p&gt;

&lt;p&gt;But building a project forces you to figure out what happens when things don't work.&lt;/p&gt;

&lt;p&gt;You get errors you have never seen before.&lt;/p&gt;

&lt;p&gt;You search through documentation.&lt;/p&gt;

&lt;p&gt;You read GitHub issues.&lt;/p&gt;

&lt;p&gt;You try something, it doesn't work, and then you try something else.&lt;/p&gt;

&lt;p&gt;Sometimes you spend an hour fixing something that looked like it should take five minutes.&lt;/p&gt;

&lt;p&gt;And that's actually where I feel I've learned the most.&lt;/p&gt;

&lt;p&gt;What I'm focusing on now&lt;/p&gt;

&lt;p&gt;I'm still learning and improving my skills, especially around building applications that are easier to maintain and scale.&lt;/p&gt;

&lt;p&gt;My current stack includes:&lt;/p&gt;

&lt;p&gt;React.js · Next.js · Node.js · Express.js · PostgreSQL · MongoDB · Prisma · Tailwind CSS&lt;/p&gt;

&lt;p&gt;I'm also trying to spend less time just learning individual technologies and more time understanding how everything fits together in a real application.&lt;/p&gt;

&lt;p&gt;There is still a lot I want to learn, but I'm enjoying the process.&lt;/p&gt;

&lt;p&gt;If you're also learning full-stack development, my biggest advice would be simple:&lt;/p&gt;

&lt;p&gt;Build something real.&lt;/p&gt;

&lt;p&gt;It doesn't have to be a huge project.&lt;/p&gt;

&lt;p&gt;Start with something small, finish it, deploy it, break it, fix it, and then improve it.&lt;/p&gt;

&lt;p&gt;You'll probably learn more from that experience than you expect.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>react</category>
      <category>node</category>
    </item>
  </channel>
</rss>
