<?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: Tushar</title>
    <description>The latest articles on DEV Community by Tushar (@tushar7084).</description>
    <link>https://dev.to/tushar7084</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%2F4057504%2Fe252520b-8c30-4418-9978-d000ba613942.jpg</url>
      <title>DEV Community: Tushar</title>
      <link>https://dev.to/tushar7084</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tushar7084"/>
    <language>en</language>
    <item>
      <title>Authentication Before Building Features</title>
      <dc:creator>Tushar</dc:creator>
      <pubDate>Wed, 19 Aug 2026 16:36:42 +0000</pubDate>
      <link>https://dev.to/tushar7084/authentication-before-building-features-boa</link>
      <guid>https://dev.to/tushar7084/authentication-before-building-features-boa</guid>
      <description>&lt;p&gt;One thing almost every developer can relate to is &lt;strong&gt;implementing authentication before building the actual features&lt;/strong&gt;.&lt;br&gt;
In most applications, many endpoints need to be secured so that only authenticated users can access them. Because of this, authentication is usually one of the first things worth setting up before moving on to the rest of the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing an Authentication Method
&lt;/h2&gt;

&lt;p&gt;authentication methods I was familiar with were &lt;strong&gt;password-based authentication&lt;/strong&gt; and OAuth.&lt;br&gt;
Later, I learned that there are other approaches as well, such as magic links and &lt;strong&gt;OTP-based authentication&lt;/strong&gt;.&lt;br&gt;
I decided to go with &lt;strong&gt;password-based authentication&lt;/strong&gt; because I wanted to understand the decisions and problems involved in building authentication myself instead of relying entirely on an external authentication provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Password-Based Authentication
&lt;/h2&gt;

&lt;p&gt;In password-based authentication, we store a user's email (or another unique identifier) along with their password.&lt;br&gt;
However, we should never store the actual password in the database. Instead, the password needs to be hashed using a suitable password-hashing algorithm.&lt;br&gt;
There are a couple of important things to consider:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Store a hashed password&lt;/em&gt;&lt;/strong&gt;, never the plain-text password.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Verify the user's email or phone number&lt;/em&gt;&lt;/strong&gt; when the application requires account verification.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Registering a User Isn't Enough
&lt;/h2&gt;

&lt;p&gt;Now suppose we stop after registering the user and storing their credentials.&lt;br&gt;
When the user tries to access a feature that is only available to authenticated users, how does the server know that the user has already logged in?&lt;br&gt;
We obviously don't want users to enter their email and password on every single request. That would be a terrible user experience.&lt;br&gt;
This is where &lt;strong&gt;&lt;em&gt;sessions and tokens&lt;/em&gt;&lt;/strong&gt; come into the picture.&lt;br&gt;
After a successful login, the application can establish a session for the user. The client can then use the resulting authentication credentials when making subsequent requests, allowing the server to identify and authenticate the user without asking for their password every time.&lt;br&gt;
I'll discuss how sessions, access tokens, and refresh tokens work in the next part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learnings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create auth endpoints before any feature as it acts as foundation.&lt;/li&gt;
&lt;li&gt;Always hash passwords and verify user.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>backend</category>
      <category>security</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Routes as Roadmap</title>
      <dc:creator>Tushar</dc:creator>
      <pubDate>Fri, 07 Aug 2026 12:08:57 +0000</pubDate>
      <link>https://dev.to/tushar7084/routes-as-roadmap-17an</link>
      <guid>https://dev.to/tushar7084/routes-as-roadmap-17an</guid>
      <description>&lt;p&gt;It wouldn't be an exaggeration to say that using routes as a roadmap made backend development a lot easier for me.&lt;/p&gt;

&lt;p&gt;When I started building my first backend project, my first thought was, "&lt;strong&gt;&lt;em&gt;After setting up the server, I should probably start creating the routes&lt;/em&gt;&lt;/strong&gt;." After all, that's the path every request follows.&lt;br&gt;
But I wouldn't recommend jumping straight into writing code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Roadmap (Routes)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39979w5rde33icy93uic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39979w5rde33icy93uic.png" alt=" " width="800" height="534"&gt;&lt;/a&gt;&lt;br&gt;
Before I started implementing anything, I'd take a moment to think about all the features I wanted my app to have. Once I had a rough idea, I'd design the routes for those features first.&lt;/p&gt;

&lt;p&gt;It didn't have to be perfect. Just listing out the endpoints was enough to give me a clear direction.&lt;/p&gt;

&lt;p&gt;I found that this made a huge difference. Instead of constantly wondering what to build next, I already had a roadmap to follow. It also helped me understand how different parts of the application would connect, making the whole project feel much less overwhelming.&lt;/p&gt;

&lt;p&gt;For me, this was one of those small habits that ended up making backend development a lot more enjoyable.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The First Hurdle</title>
      <dc:creator>Tushar</dc:creator>
      <pubDate>Sat, 01 Aug 2026 17:40:01 +0000</pubDate>
      <link>https://dev.to/tushar7084/the-first-hurdle-15p5</link>
      <guid>https://dev.to/tushar7084/the-first-hurdle-15p5</guid>
      <description>&lt;p&gt;In my opinion, anyone who has only built small apps or coded alongside a tutorial eventually faces the same challenge when trying to build their first complete project from scratch:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do I even start?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxaegi82jitsbeln7wgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxaegi82jitsbeln7wgy.png" alt=" " width="416" height="416"&gt;&lt;/a&gt;&lt;br&gt;
This question becomes the biggest hurdle because it lays the foundation for everything that comes next. I had the exact same doubt. It's always a good idea to ask someone more experienced when you're stuck. But what if you don't have a senior to ask?&lt;/p&gt;

&lt;p&gt;That was my situation.&lt;br&gt;
Fortunately, I had AI as my senior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI as a Senior&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglvy5yrd1fqks120oewh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglvy5yrd1fqks120oewh.jpg" alt=" " width="551" height="453"&gt;&lt;/a&gt;&lt;br&gt;
This might sound like vibe coding, but it wasn't.&lt;/p&gt;

&lt;p&gt;I never asked AI to write my project for me. Instead, I asked architectural questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What should I design first?&lt;/li&gt;
&lt;li&gt;How should I structure my project?&lt;/li&gt;
&lt;li&gt;Why is one approach better than another?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding the why behind those decisions was much more valuable than simply getting code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solving the Hurdle
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The biggest lesson I learned before writing any code was this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Design first. Build later.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The first thing I designed was the database schema.&lt;/p&gt;

&lt;p&gt;For my project, designing the database schema turned out to be a great starting point. Before writing any code, I planned what information my application would need to store. Having that clarity made it much easier to design the rest of the features because I already knew what data was available.&lt;/p&gt;

&lt;p&gt;For example, the User schema contained fields such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fullname&lt;/li&gt;
&lt;li&gt;username&lt;/li&gt;
&lt;li&gt;email&lt;/li&gt;
&lt;li&gt;password&lt;/li&gt;
&lt;li&gt;avatar&lt;/li&gt;
&lt;li&gt;thumbnail&lt;/li&gt;
&lt;li&gt;createdAt&lt;/li&gt;
&lt;li&gt;updatedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fafrh7bovfdnxt46jnfao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fafrh7bovfdnxt46jnfao.png" alt=" " width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that was done, I designed the schemas for the remaining features as well—videos, comments, likes, subscriptions, playlists, and so on.&lt;/p&gt;

&lt;p&gt;It felt a little slow and even boring at first, but it saved me a lot of time and prevented many design changes later in development.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Learning
&lt;/h2&gt;

&lt;p&gt;One lesson that has stayed with me is:&lt;/p&gt;

&lt;p&gt;Before building features, &lt;strong&gt;&lt;em&gt;design your database&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A well-thought-out database makes it much easier to design the flow of your application, connect features together, and avoid unnecessary refactoring later.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
