<?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: himanshu negi</title>
    <description>The latest articles on DEV Community by himanshu negi (@negih).</description>
    <link>https://dev.to/negih</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3613854%2Fb55de531-3d8d-451a-812e-c7947082b1fc.jpg</url>
      <title>DEV Community: himanshu negi</title>
      <link>https://dev.to/negih</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/negih"/>
    <language>en</language>
    <item>
      <title>Coming Back to a Project After a Long Break</title>
      <dc:creator>himanshu negi</dc:creator>
      <pubDate>Tue, 13 Jan 2026 18:39:06 +0000</pubDate>
      <link>https://dev.to/negih/coming-back-to-a-project-after-a-long-break-1gm2</link>
      <guid>https://dev.to/negih/coming-back-to-a-project-after-a-long-break-1gm2</guid>
      <description>&lt;p&gt;I had to take a break from this project due to exams, and coming back to it made me realize how much consistency actually matters in programming.&lt;/p&gt;

&lt;p&gt;Even small things like running migrations or adding components to settings slipped out of my mind, even though I had done them before. I ended up spending almost an entire day just reading my own code to understand what was going on. That made it very clear that learning is not just about picking up new stacks or technologies, but about staying consistent enough to build and retain understanding from top to bottom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picking Up Where I Left Off&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before the exams, I had already set up a base user class (got stuck for a while on the user manager), integrated Clerk for authentication, and added it globally in the settings. After coming back, I started working on the actual models for the main components of the project.&lt;/p&gt;

&lt;p&gt;I decided to focus first on the core components like projects and tasks. Before writing the models, I thought through a few rules that these components should follow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project and Task Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below is a rough diagram I made while thinking through how projects and tasks should behave and relate to each other:&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.amazonaws.com%2Fuploads%2Farticles%2Fuwf0we4mlwkyen1y8q1p.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.amazonaws.com%2Fuploads%2Farticles%2Fuwf0we4mlwkyen1y8q1p.png" alt="Rules" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having these rules written down helped a lot while designing the models and keeping things consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Models, Services, and APIs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The models themselves were fairly intuitive since I have worked with SQL before. The only part I got a bit stuck on was Meta, but that also became clear after reading through the docs.&lt;/p&gt;

&lt;p&gt;After defining the models, I created service classes for creating, updating, deleting and fetching projects so they could be reused later when building APIs. Once that was done, I moved on to building the APIs with URLs and tested everything using Postman. Since I am already familiar with it, testing was quick, even though I ran into pretty much every possible error along the way. After fixing those I added tests for both the services and APIs so I can now just run the tests to check whether things behave as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problems I Faced&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While working on this part of the project, I ran into a few problems, most of which were due to my own stupidity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I overcomplicated things at the beginning. Focusing only on core functionality would have been a better approach, especially since the main goal of this project was learning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instead of using an online PostgreSQL server during development, I ran the project directly from Docker. This meant rebuilding containers and using the container terminal every time, which turned out to be a bad decision.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I did not have a frontend initially. This made testing authentication painful because getting auth tokens from Clerk required impersonating a user and using the console every time. Later on, I found out about session templates, which would have made this much easier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Thoughts on Using AI While Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Earlier, I was not really into using AI while learning a new stack. Working on this project changed my view a bit. I don't think copying and pasting code from AI helps much, but using it as a tool to understand things does.&lt;/p&gt;

&lt;p&gt;What helped me more was reading the generated code, asking what each part is doing and why it is written that way, then trying to fix issues on my own. Asking for hints instead of full solutions felt more useful. I think if you are writing the code, you should still understand what is happening and be able to notice when something feels off, even if the code comes from AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Next (Maybe)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I might expand this project further by adding things like Celery for background tasks or workspaces with profiles, but I am not completely sure yet. I am also thinking about starting a separate project related to chess and machine learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Link&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to check the project, here’s the GitHub link:&lt;br&gt;
&lt;a href="https://github.com/negihimanshu015/Tenguin" rel="noopener noreferrer"&gt;https://github.com/negihimanshu015/Tenguin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>django</category>
    </item>
    <item>
      <title>Week 2 – Core Setup, TDD, and Starting Auth</title>
      <dc:creator>himanshu negi</dc:creator>
      <pubDate>Tue, 25 Nov 2025 19:03:47 +0000</pubDate>
      <link>https://dev.to/negih/week-2-core-setup-tdd-and-starting-auth-1a20</link>
      <guid>https://dev.to/negih/week-2-core-setup-tdd-and-starting-auth-1a20</guid>
      <description>&lt;p&gt;This week I continued building my project and focused on getting some important foundations in place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this week, I focused on setting up the core section of my project. This part of the app will handle things that are needed across different components like exceptions, utils, and pagination. The main reason I wanted to get this right from the start is because, in one of my previous projects, I handled exceptions differently in the backend and frontend, and it created a lot of confusion and chaos. So this time, I decided to keep everything consistent from the very beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning TDD&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While researching more about Django, I also learned about Test Driven Development (TDD) and realized how useful it can be. Usually, I would write tests after the project is already working, but I noticed that it can lead to biased testing where you only test what you see. This makes it easy to miss edge cases. Writing tests first gives a clear goal and makes planning the structure much easier.&lt;/p&gt;

&lt;p&gt;My thoughts on unit testing so far are that they can be really helpful, especially on larger projects. Once you create them, they keep checking the same things throughout development and can help catch bugs early.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Starting Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also started working on authentication since I already decided to use Clerk. I read through the &lt;a href="https://github.com/clerk/clerk-sdk-python/blob/main/README.md" rel="noopener noreferrer"&gt;Clerk SDK documentation&lt;/a&gt;, which is very well written. I found a simple &lt;a href="https://youtu.be/Z8kkyk98w54?si=bE03n3Zd21tOciup" rel="noopener noreferrer"&gt;video&lt;/a&gt; on Clerk and Django integration that helped me understand the setup better.&lt;/p&gt;

&lt;p&gt;I also decided to use an abstract base class for my user model. It might be overkill, but I liked the idea of including only the fields I need. During this, I also learned more in depth about mixins and JWT.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Link&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to check the project, here’s the GitHub link:&lt;br&gt;
&lt;a href="https://github.com/negihimanshu015/Tenguin" rel="noopener noreferrer"&gt;https://github.com/negihimanshu015/Tenguin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This week was mostly foundation work, but I’m happy with the progress. I’ll continue building and share more updates next week.&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@markusspiske?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Markus Spiske&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/text-p-l8OjDH9eE?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tdd</category>
      <category>clerk</category>
      <category>programming</category>
    </item>
    <item>
      <title>Learning Django by Building: Week 1</title>
      <dc:creator>himanshu negi</dc:creator>
      <pubDate>Sun, 16 Nov 2025 17:34:38 +0000</pubDate>
      <link>https://dev.to/negih/learning-django-by-building-week-1-2h47</link>
      <guid>https://dev.to/negih/learning-django-by-building-week-1-2h47</guid>
      <description>&lt;p&gt;So I wanted to learn Django and decided the best way to do it was by creating a project and slowly learning through the docs and YouTube.&lt;/p&gt;

&lt;p&gt;If you want to learn Django yourself, I highly recommend going through the Django docs and the polls app tutorial. It is very well made and explains key concepts in Django. After that, start building any small personal project. And if you get stuck with the Django ORM like I did, which can be a bit confusing, I recommend the &lt;a href="https://www.youtube.com/playlist?list=PLOLrQ9Pn6cazjoDEnwzcdWWf4SNS0QZml" rel="noopener noreferrer"&gt;Django ORM Mastery Series&lt;/a&gt; from Very Academy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Chose Django&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reason I decided to go for Django is that I already knew FastAPI, which is good for small projects but I felt it provided very low structure for bigger projects, and I heard from a friend how nice and powerful the Django ORM feels while working with it. &lt;br&gt;
I also decided to build a Task Management Platform, something I had been thinking about for a long time but kept avoiding because of its complexity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Inspired This Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another factor that pushed me toward this project was listening to Theo:&lt;br&gt;
&lt;a href="https://www.youtube.com/@t3dotgg" rel="noopener noreferrer"&gt;Theo’s YouTube channel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I highly recommend watching him if you are a geek like me and want to know about new tools and what’s happening in the development world.&lt;br&gt;
As soon as I heard about tools like shadcn and Clerk from him, I got excited to build something with them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ui.shadcn.com/" rel="noopener noreferrer"&gt;shadcn&lt;/a&gt;: Clean, custom UI components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://clerk.com/" rel="noopener noreferrer"&gt;Clerk&lt;/a&gt;: Easy auth and user stuff.&lt;/p&gt;

&lt;p&gt;I've never been the type who focuses a lot on frontend, so I usually didn't take on big frontend-heavy projects. I enjoy ML and backend more. However, seeing how flexible shadcn is and how Clerk handles the annoying parts of authentication made me excited to finally try a modern stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools I'm Using&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In my recent internship, I also learned about tools like Docker and how you can manage multiple services with Compose. I didn't realize how useful this setup is in teamwork until I used it there. So, I decided to employ the same approach here. Currently, I have already set up Docker, Postgres and Django, finished the Django tutorial, and designed the overall structure of my project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Plan for Week 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This week, I just want to take the setup I’ve already done and start making real progress. I want to move past the tutorial stage and begin building the main parts of the Task Management Platform. I’ll keep working on it and share how things go.&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@faisaldada?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Faisal&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/black-and-yellow-box-on-white-table-BI465ksrlWs?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
