<?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: Md Kaif Ansari</title>
    <description>The latest articles on DEV Community by Md Kaif Ansari (@mdkaifansari04).</description>
    <link>https://dev.to/mdkaifansari04</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%2F1255431%2F73fb317c-67d6-4d80-8c34-d428c61d6e30.jpg</url>
      <title>DEV Community: Md Kaif Ansari</title>
      <link>https://dev.to/mdkaifansari04</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mdkaifansari04"/>
    <language>en</language>
    <item>
      <title>How I Replaced Axios With `fetch` Without Breaking the App</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Thu, 02 Apr 2026 10:42:11 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/how-i-replaced-axios-with-fetch-without-breaking-the-app-207o</link>
      <guid>https://dev.to/mdkaifansari04/how-i-replaced-axios-with-fetch-without-breaking-the-app-207o</guid>
      <description>&lt;p&gt;This migration did not happen because I woke up one day and decided to become a minimalist monk of HTTP clients.&lt;/p&gt;

&lt;p&gt;It happened because of the Axios compromise story.&lt;/p&gt;

&lt;p&gt;According to the Fireship video summary that pushed me to take this seriously, attackers allegedly compromised the project maintainer's npm account and published malicious Axios versions. Those versions reportedly pulled in a rogue dependency called &lt;code&gt;plain-crypto-js&lt;/code&gt;, which is exactly the sort of package name that sounds fake even before it ruins your week.&lt;/p&gt;

&lt;p&gt;From the summary, the malicious package used a &lt;code&gt;post-install&lt;/code&gt; script as a RAT dropper. It would detect the OS, download a second-stage payload from a command-and-control server, establish remote access, and then clean up after itself to avoid leaving obvious evidence in security audits.&lt;/p&gt;

&lt;p&gt;That is an insane sentence to write about a package manager.&lt;/p&gt;

&lt;p&gt;So yes, this migration started because of a security concern, but also because npm packages have been losing trust lately in a very "are we serious right now?" kind of way.&lt;/p&gt;

&lt;p&gt;So I removed it.&lt;/p&gt;

&lt;p&gt;Not in a dramatic, "delete it and pray" kind of way. More in a calm, boring, production-safe kind of way. Which, honestly, is the better kind of dramatic.&lt;/p&gt;

&lt;p&gt;Also, sorry Fireship for using your YouTube thumbnail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Did This Now
&lt;/h2&gt;

&lt;p&gt;The security angle was the whole reason this moved from "nice cleanup idea" to "do it now."&lt;/p&gt;

&lt;p&gt;Based on that Fireship summary, the practical advice was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;check &lt;code&gt;package.json&lt;/code&gt; for the affected Axios versions&lt;/li&gt;
&lt;li&gt;check &lt;code&gt;node_modules&lt;/code&gt; for &lt;code&gt;plain-crypto-js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;if compromised, do not just delete the file and move on&lt;/li&gt;
&lt;li&gt;roll API keys and tokens immediately&lt;/li&gt;
&lt;li&gt;follow proper incident cleanup guidance, like the kind Step Security documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last part is important. If a machine is compromised, deleting one sketchy package is not a victory lap. That is just the beginning of a worse conversation.&lt;/p&gt;

&lt;p&gt;In my case, the safest and cleanest move for the project was simple: remove Axios entirely and replace it with something tiny that I control.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Goal
&lt;/h2&gt;

&lt;p&gt;I did not want a huge rewrite.&lt;/p&gt;

&lt;p&gt;I did not want to touch every API call in the app.&lt;/p&gt;

&lt;p&gt;And I definitely did not want to replace Axios with "just raw &lt;code&gt;fetch&lt;/code&gt;" and then spend the next two days fixing things that Axios had been quietly doing for me all along.&lt;/p&gt;

&lt;p&gt;So the real goal was simple:&lt;/p&gt;

&lt;p&gt;Replace Axios with a small internal client built on top of &lt;code&gt;fetch&lt;/code&gt;, while keeping the same developer experience for the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Important Realization
&lt;/h2&gt;

&lt;p&gt;A lot of people say, "Why not just use &lt;code&gt;fetch&lt;/code&gt;? It already returns promises."&lt;/p&gt;

&lt;p&gt;That part is true.&lt;/p&gt;

&lt;p&gt;But Axios was doing a few useful things for us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It handled a base URL&lt;/li&gt;
&lt;li&gt;It serialized JSON requests nicely&lt;/li&gt;
&lt;li&gt;It rejected on failed responses&lt;/li&gt;
&lt;li&gt;It let us return &lt;code&gt;response.data&lt;/code&gt; directly&lt;/li&gt;
&lt;li&gt;It gave us a clean place to normalize errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;fetch&lt;/code&gt; gives you the raw ingredients. Axios gives you the sandwich.&lt;/p&gt;

&lt;p&gt;So instead of rebuilding all of Axios, I only rebuilt the tiny slice of it that this project actually used.&lt;/p&gt;

&lt;p&gt;That was the key decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Audit What the App Was Really Using
&lt;/h2&gt;

&lt;p&gt;Before changing anything, I checked how &lt;code&gt;axios&lt;/code&gt; was being used across the project.&lt;/p&gt;

&lt;p&gt;The result was better than I expected: all usage was already going through one wrapper file.&lt;/p&gt;

&lt;p&gt;That meant I didn’t have to go on a treasure hunt through 47 random components yelling "who imported axios directly?"&lt;/p&gt;

&lt;p&gt;The app mostly relied on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;api.get(...)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api.post(...)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api.patch(...)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api.delete(...)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the wrapper was already doing two important things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unwrapping the API response envelope&lt;/li&gt;
&lt;li&gt;converting server errors into a custom &lt;code&gt;ApiClientError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made the migration way easier, because I didn’t need Axios compatibility. I just needed behavior compatibility.&lt;/p&gt;

&lt;p&gt;Big difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Keep the Same API Surface
&lt;/h2&gt;

&lt;p&gt;Instead of changing the whole app, I created a small internal client with the same shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;patch&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything still returns promises.&lt;/p&gt;

&lt;p&gt;So the rest of the code didn’t need to change its mental model at all.&lt;/p&gt;

&lt;p&gt;React Query still works the same.&lt;br&gt;
Mutations still work the same.&lt;br&gt;
Error handling still works the same.&lt;/p&gt;

&lt;p&gt;The app basically says, "cool story," and keeps moving.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Build a Thin &lt;code&gt;fetch&lt;/code&gt; Wrapper
&lt;/h2&gt;

&lt;p&gt;The core implementation lives in &lt;code&gt;lib/api-client.ts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That file handles the boring but important stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;joining &lt;code&gt;baseURL&lt;/code&gt; with request paths&lt;/li&gt;
&lt;li&gt;adding query params&lt;/li&gt;
&lt;li&gt;merging headers&lt;/li&gt;
&lt;li&gt;automatically JSON-stringifying request bodies&lt;/li&gt;
&lt;li&gt;calling &lt;code&gt;fetch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;parsing JSON responses&lt;/li&gt;
&lt;li&gt;rejecting on non-2xx responses&lt;/li&gt;
&lt;li&gt;converting API errors into &lt;code&gt;ApiClientError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the kind of code nobody posts on social media, but it’s exactly the kind of code that saves you from pain later.&lt;/p&gt;

&lt;p&gt;Which is basically backend romance.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4: Preserve Existing Error Behavior
&lt;/h2&gt;

&lt;p&gt;This part mattered a lot.&lt;/p&gt;

&lt;p&gt;The app already expected a custom error class with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s how some UI states worked, especially for share pages with cases like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;revoked link&lt;/li&gt;
&lt;li&gt;expired link&lt;/li&gt;
&lt;li&gt;not found&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I had changed the error shape, the UI would not have exploded loudly. It would have broken politely, which is honestly worse.&lt;/p&gt;

&lt;p&gt;So I kept the exact same error contract.&lt;/p&gt;

&lt;p&gt;That way the UI could keep doing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apiError&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;EXPIRED&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No changes needed.&lt;/p&gt;

&lt;p&gt;No "small follow-up fix" at 1:30 AM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Leave Upload Progress Alone
&lt;/h2&gt;

&lt;p&gt;One thing I did not touch was the upload flow that uses &lt;code&gt;XMLHttpRequest&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because file upload progress with browser &lt;code&gt;fetch&lt;/code&gt; is still not as straightforward as people wish it were. And this project already had working upload progress with XHR.&lt;/p&gt;

&lt;p&gt;So I kept it.&lt;/p&gt;

&lt;p&gt;Not everything needs to be rewritten just because we are already in the file pretending to be productive.&lt;/p&gt;

&lt;p&gt;Sometimes the best engineering choice is to leave the working part alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Migrate Imports, Then Remove Axios
&lt;/h2&gt;

&lt;p&gt;Once the new client was ready, I updated imports from the old Axios wrapper to the new internal client.&lt;/p&gt;

&lt;p&gt;After that, I removed &lt;code&gt;axios&lt;/code&gt; from &lt;code&gt;package.json&lt;/code&gt; and refreshed the lockfile.&lt;/p&gt;

&lt;p&gt;That order matters.&lt;/p&gt;

&lt;p&gt;You don’t pull the ladder away before checking whether you’re still on the roof.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Validate Like a Responsible Adult
&lt;/h2&gt;

&lt;p&gt;After the migration, I ran:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tests&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;a production build&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is especially important. A migration is not done when the code "looks right." It’s done when the app actually builds and behaves correctly.&lt;/p&gt;

&lt;p&gt;There was one unrelated build issue caused by sandboxed Google Fonts fetching, but once that was allowed, the production build passed cleanly.&lt;/p&gt;

&lt;p&gt;So the migration wasn’t just theoretically correct. It was actually verified.&lt;/p&gt;

&lt;p&gt;A rare and beautiful moment in software.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Ended Up With
&lt;/h2&gt;

&lt;p&gt;Now the app has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no direct Axios dependency&lt;/li&gt;
&lt;li&gt;a small internal HTTP client&lt;/li&gt;
&lt;li&gt;the same promise-based developer experience&lt;/li&gt;
&lt;li&gt;the same API error handling behavior&lt;/li&gt;
&lt;li&gt;no large-scale call site rewrite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which is exactly what I wanted.&lt;/p&gt;

&lt;p&gt;This is one of those migrations that sounds dramatic when you describe it out loud:&lt;/p&gt;

&lt;p&gt;"I replaced Axios with a custom fetch client."&lt;/p&gt;

&lt;p&gt;But in practice, the best version of this job is the boring version.&lt;/p&gt;

&lt;p&gt;No broken flows.&lt;br&gt;
No weird regressions.&lt;br&gt;
No emergency patch.&lt;br&gt;
No Slack message that starts with "quick question."&lt;/p&gt;

&lt;h2&gt;
  
  
  npm Trust Is Weird Right Now
&lt;/h2&gt;

&lt;p&gt;The funniest and least funny part of modern JavaScript is that half the ecosystem is brilliant, and the other half feels like we are all three typo packages away from a cybersecurity documentary.&lt;/p&gt;

&lt;p&gt;I still love JS and TS. I really do.&lt;/p&gt;

&lt;p&gt;In fact, JavaScript and TypeScript played a huge part in making one of my biggest dreams come true: buying a MacBook as a teenager.&lt;/p&gt;

&lt;p&gt;That still means something to me.&lt;/p&gt;

&lt;p&gt;So this is not me doing the dramatic "JavaScript is dead" speech from the back of the conference room.&lt;/p&gt;

&lt;p&gt;But it &lt;em&gt;is&lt;/em&gt; me saying I have a very keen plan to move more critical parts of my stack to Go or Rust sooner rather than later.&lt;/p&gt;

&lt;p&gt;Not because JS/TS failed me.&lt;/p&gt;

&lt;p&gt;More because the supply-chain circus around npm keeps reminding me that reducing unnecessary dependencies is just good survival instinct now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;I didn’t replace Axios because &lt;code&gt;fetch&lt;/code&gt; is cooler.&lt;/p&gt;

&lt;p&gt;I replaced it because the dependency no longer made sense for this project, and the app only needed a very small subset of what Axios was providing.&lt;/p&gt;

&lt;p&gt;So instead of dragging around a whole library, I kept the useful behavior, dropped the unnecessary dependency, and made the system simpler.&lt;/p&gt;

&lt;p&gt;Which, in my opinion, is the nicest kind of refactor:&lt;br&gt;
less code, fewer dependencies, same behavior, zero chaos.&lt;/p&gt;

&lt;p&gt;That’s the dream.&lt;/p&gt;

&lt;p&gt;And if one small migration also means one less reason to trust a random install script with my machine, even better.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>axios</category>
    </item>
    <item>
      <title>Multitasking, A NIGHTMARE !</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Fri, 13 Mar 2026 23:51:07 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/multitasking-a-nightmare--1e7p</link>
      <guid>https://dev.to/mdkaifansari04/multitasking-a-nightmare--1e7p</guid>
      <description>&lt;p&gt;Every person/developer muti-task in day to day life, to get huge promotion, to complete all the task in limited time, to work on something new or follow up with pending task in while working on on their primary work, and at age of AI it quite easy for anyone to do so. &lt;/p&gt;

&lt;h2&gt;
  
  
  A NIGHTMARE ?
&lt;/h2&gt;

&lt;p&gt;So I'm super good at muti-tasking and also enjoy doing so, as small amount of time, with huge dopamine HITS, every task and a intention behind it, and for dev it ended up been getting insentives for it, if they are working for unpaid work, they might need appreciation or global recognition for their work !&lt;/p&gt;

&lt;p&gt;As a student I felt the same so I started working on multiple things to showcase on my portfolio and flex in public. &lt;br&gt;
But the problem started when I felt into the Mutitask HELL, where we do a lot of work, ended up spending a lot time into something that made sense to me. &lt;/p&gt;

&lt;p&gt;But after doing some analyzation of that time, was nothing but shallow work of 100 of project that nobody cares. &lt;/p&gt;

&lt;h3&gt;
  
  
  What I feel I'm doing and What I ended up doing
&lt;/h3&gt;

&lt;p&gt;I felt like I've touched 5 repos today, managed my social media profiles, watched some learning content in YT and ended my with a lot of dopamine hits.&lt;/p&gt;

&lt;p&gt;Reality: I touched 5 repos but only solved some UI bugs and design changes, Yes I managed by social media but was just commenting on other's post and doom scrolling, and some low dopamine hunt. Yes I watched YT content but some short vid, but short content, didn't learned something which was game chnager, nor something which would actully matterns. And called it DAY !&lt;/p&gt;

&lt;p&gt;-- &lt;/p&gt;

&lt;p&gt;If we think more about the tasks/commits we are making entire day, it was just waste of precious time. &lt;/p&gt;

&lt;p&gt;The reason why mutitasking become the nightmare !&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;If you recognize that you are stuked into muti-tasking HELL and it's becoming fruitful, then it's mattern of concern!&lt;/p&gt;

&lt;p&gt;But the good thing about this is you know it's not working for you. &lt;br&gt;
So just transform the way you work everyday.&lt;/p&gt;

&lt;h3&gt;
  
  
  The real changes that WORKS !
&lt;/h3&gt;

&lt;p&gt;Changes that worked for me, and helped me becoming the better version of myself, the top contributor in one of the open source organization ,building my own component library and doing gihub farming. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://paperflow.k04.tech/" rel="noopener noreferrer"&gt;Paperflow: &lt;/a&gt;&lt;br&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%2Fx42yjsawgtgxjt2bvi43.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%2Fx42yjsawgtgxjt2bvi43.png" alt=" " width="800" height="502"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/mdkaifansari04" rel="noopener noreferrer"&gt;Github: &lt;/a&gt;&lt;br&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%2F8xohqqritqk89svwj8sc.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%2F8xohqqritqk89svwj8sc.png" alt=" " width="800" height="199"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/search?q=org%3AOWASP-BLT+author%3Amdkaifansari04+is%3Amerged&amp;amp;type=pullrequests" rel="noopener noreferrer"&gt;Proof: &lt;/a&gt;&lt;br&gt;
And merged more the 50 prs in an open source org&lt;/p&gt;

&lt;p&gt;I'll not just write the entire book of actionable items with story, rather some bulletpoint that actually works&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintain a set of todos before starting the day, follow up with the updates you have done so far, and things which are rest, priotise items based on your priority. 
(You can use any platform that works well for you, and you are comforble using it, I used notion and it worked super well for me)&lt;/li&gt;
&lt;li&gt;Try doing one task at a time, and diving deeper into it, once you master the art of deep work and increment task accordingly.
(Research proves building focus on a task after small distraction takes 25 mins)&lt;/li&gt;
&lt;li&gt;Isolate yourself in a room, notification OFF and phone somewhere hidden from your eyes&lt;/li&gt;
&lt;li&gt;Try to complete the entire todo in the day, which you planned with some focus deep session. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NOTE: make sure you have feasible todos, not like completing the entire syllabus today, or building the entire SAAS product in one go, which is not feasible. &lt;/p&gt;

&lt;p&gt;CAUSION: I'm not an intellectual nor someone from FAANG, I'm just a undergrad student, who build incredible product and try to accomplish as much as I could in my age. So these are just my bare thoughts. &lt;/p&gt;

&lt;p&gt;If you like the article, drop a comment and stay conncted some cool article are in my todos, &lt;/p&gt;

&lt;p&gt;Till then PEASE !&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why Owasp BLT ? Contribution from 5 to 50+ prs !</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Sat, 07 Mar 2026 16:40:02 +0000</pubDate>
      <link>https://dev.to/owaspblt/why-owasp-blt-contribution-from-5-to-50-prs--1j7o</link>
      <guid>https://dev.to/owaspblt/why-owasp-blt-contribution-from-5-to-50-prs--1j7o</guid>
      <description>&lt;p&gt;It was the time when I thought to get some open source contribution after I was done from my internship. I was heavily into TS/JS ecosystem and started finding projects for the same.&lt;/p&gt;

&lt;p&gt;So I went to &lt;a href="https://www.gsocorganizations.dev/" rel="noopener noreferrer"&gt;gsocorganizations.dev&lt;/a&gt; to find some organization, then I just applied the filter for web and started scrolling. Most of the orgs were either too big to get started or had zero activity; you know the type, last commit 8 months ago, issues with no responses.&lt;/p&gt;

&lt;p&gt;Then I saw OWASP BLT.&lt;/p&gt;

&lt;p&gt;Honestly my first reaction was, what even is this? A bug logging tool with BACON tokens and a leaderboard? Sounded like someone mixed a bug bounty platform with a gamified Reddit. I was skeptical. But the repo had recent commits, open issues with responses, and the maintainer (Donnie) was actually replying to people. That was enough for me to at least clone it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The First PR — Small But It Counts
&lt;/h2&gt;

&lt;p&gt;I spent the first few days just reading the codebase. BLT runs Django on the backend, has a Cloudflare Workers API layer called BLT-API, a Chrome extension, a Flutter app, and about 30+ other sub-repos. It's not a small project.&lt;/p&gt;

&lt;p&gt;My first PR was tiny. A small bug fix; nothing fancy. I wasn't even sure it would get noticed. But it got reviewed, commented on, and merged within a couple days. That was the moment I thought okay, this is actually active, people are paying attention here.&lt;/p&gt;

&lt;p&gt;That one merged PR basically hooked me in.&lt;/p&gt;




&lt;h2&gt;
  
  
  Going Deeper — BLT-API and the D1 Migration
&lt;/h2&gt;

&lt;p&gt;After a few more small PRs I started digging into BLT-API; the Cloudflare Workers layer. This is where things got interesting and also where I spent most of my time.&lt;/p&gt;

&lt;p&gt;The project was in the middle of migrating from a traditional database setup to Cloudflare D1 (basically SQLite at the edge). Nobody had fully done it yet. I looked at the codebase, figured out what was missing, and just started doing it.&lt;/p&gt;

&lt;p&gt;The D1 migration ended up being a bigger chunk of work than I expected — schema design, migration files, bugs API, user schema, 2FA auth with Mailgun, domain routing. At some point I realized I had context on this entire layer that very few other contributors had.&lt;/p&gt;

&lt;p&gt;That's kind of how it happens with open source. You don't plan to become the person who knows X. You just keep pulling threads until suddenly you're the one explaining it to others.&lt;/p&gt;




&lt;h2&gt;
  
  
  Talking to Donnie
&lt;/h2&gt;

&lt;p&gt;One thing that kept me going was that Donnie was actually there. Not just merging PRs silently — actually talking, discussing direction, pushing back when something didn't make sense.&lt;/p&gt;

&lt;p&gt;I remember one conversation where I brought up whether we should migrate to wrangler@latest and clean up some of the utility functions. I laid out both sides; old version is stable and working, new version is cleaner for contributors but we might break things. He just said "I like this improvement" and we went from there.&lt;/p&gt;

&lt;p&gt;That kind of back and forth made it feel less like contributing to a repo and more like actually building something with someone. That changes how you approach the work.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 PRs to 50+
&lt;/h2&gt;

&lt;p&gt;Looking back at how it went from 5 to 50+ PRs; it wasn't a strategy. I didn't sit down and think "I'm going to contribute a lot." It was more like every time I fixed something I found two more things that needed fixing. And every time I went deep on one layer I found connections to other layers I wanted to understand.&lt;/p&gt;

&lt;p&gt;BLT is genuinely a weird project in the best way. It has a bug bounty platform, blockchain rewards, a PR readiness checker, an AI code review bot, a Slack bot, a web scanner agent; all as separate repos that loosely connect. Once you start understanding how it fits together it's hard to stop.&lt;/p&gt;

&lt;p&gt;By the time I had 50+ PRs merged across 10+ repos I realized I wasn't just a contributor anymore, I actually understood the system. Not just one part of it, the whole thing.&lt;/p&gt;

&lt;p&gt;That's when I started thinking about GSoC.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why BLT Specifically
&lt;/h2&gt;

&lt;p&gt;There are bigger projects. More popular ones. Ones with better documentation and easier onboarding.&lt;/p&gt;

&lt;p&gt;But BLT had something most of them didn't; room to actually build things. Not just fix typos or update dependencies, but design and implement real features. The kind of work where you're making decisions that actually affect how the platform works.&lt;/p&gt;

&lt;p&gt;If you're looking for an open source project to contribute to and you want to go from zero to genuinely understanding a real production system; BLT is worth the initial confusion. Push through the first few PRs, get into the codebase, find the thing that interests you and go deep on it.&lt;/p&gt;

&lt;p&gt;The BACON tokens are optional. The learning isn't.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Built a LinkedIn Automation Tool and Survived 206 Commits Later 🫠</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Fri, 12 Sep 2025 11:16:57 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/how-two-students-built-a-linkedin-automation-tool-and-survived-206-commits-later-384g</link>
      <guid>https://dev.to/mdkaifansari04/how-two-students-built-a-linkedin-automation-tool-and-survived-206-commits-later-384g</guid>
      <description>&lt;p&gt;yo devs! 👋 &lt;/p&gt;

&lt;p&gt;so we just launched our first product (post0 - a LinkedIn automation tool) and honestly, the technical journey has been absolutely WILD. thought i'd share how we went from "let's just build a simple app" to accidentally creating a distributed nightmare that somehow actually works now lol&lt;/p&gt;

&lt;h2&gt;
  
  
  the "simple" beginning
&lt;/h2&gt;

&lt;p&gt;started with what every student does - a good old monolith. one repo, one deployment, one massive headache waiting to happen. we were young, naive, and thought "microservices are just corporate overengineering" 🤡&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;post0-app/
├── frontend/
├── backend/
├── workers/
└── database/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;seemed simple enough right? WRONG.&lt;/p&gt;

&lt;h2&gt;
  
  
  when everything went to sh*t
&lt;/h2&gt;

&lt;p&gt;about 3 months in, our CI/CD started taking 20+ minutes. deployments were breaking constantly. one bug in the posting logic would take down the entire frontend. classic monolith problems hitting us like a truck.&lt;/p&gt;

&lt;p&gt;the breaking point was when i pushed a "small fix" to the posting service and accidentally broke user authentication for 2 hours 💀&lt;/p&gt;

&lt;h2&gt;
  
  
  the great migration (aka going full microservices)
&lt;/h2&gt;

&lt;p&gt;said f*ck it and decided to split everything up:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;current architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;posting-service&lt;/code&gt; (24 commits) - handles all the LinkedIn API magic&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;notification-service&lt;/code&gt; (7 commits) - push notifications and email stuff
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;frontend&lt;/code&gt; (162 commits) - next.js app that looks decent&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prisma-service&lt;/code&gt; (13 commits) - shared database schemas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;event-driven with pub-sub model:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// when user schedules a post&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pubsub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post.scheduled&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;postContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;scheduledTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;linkedin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// posting service picks it up&lt;/span&gt;
&lt;span class="nx"&gt;pubsub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post.scheduled&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;scheduleLinkedInPost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pubsub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post.status.updated&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  the pain points (aka where we cried)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  prisma schema syncing nightmare
&lt;/h3&gt;

&lt;p&gt;sharing prisma schemas across services is... interesting. we tried:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git submodules (hell no)&lt;/li&gt;
&lt;li&gt;npm packages (version hell)&lt;/li&gt;
&lt;li&gt;monorepo (back where we started?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ended up with a separate &lt;code&gt;prisma-service&lt;/code&gt; repo that publishes schema updates. not perfect but works.&lt;/p&gt;

&lt;h3&gt;
  
  
  vercel + github orgs = 💸
&lt;/h3&gt;

&lt;p&gt;vercel doesn't deploy org repos on free tier. had to setup github actions to build and deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy Frontend&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;main&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deploy to Vercel&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;amondnet/vercel-action@v20&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;vercel-token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.VERCEL_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;vercel-org-id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.ORG_ID }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  azure deployment chaos
&lt;/h3&gt;

&lt;p&gt;deploying 4 separate services to azure container instances while maintaining secrets, environment variables, and not going broke as students = pure chaos&lt;/p&gt;

&lt;h2&gt;
  
  
  what we learned (the hard way)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;start simple, split when it hurts&lt;/strong&gt; - monolith wasn't wrong initially, we just grew out of it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;event-driven architecture is beautiful&lt;/strong&gt; but debugging async flows at 3am is not&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;shared schemas are hard&lt;/strong&gt; - there's no perfect solution, pick your poison
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;free tiers have limits&lt;/strong&gt; but github actions + some creativity goes far&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;commit often&lt;/strong&gt; - 162 commits in frontend repo saved our ass multiple times&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  current status: somehow working ✨
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;all services deployed on azure&lt;/li&gt;
&lt;li&gt;frontend on vercel (through our CI/CD hack)&lt;/li&gt;
&lt;li&gt;pub-sub events flowing smoothly &lt;/li&gt;
&lt;li&gt;users actually scheduling LinkedIn posts without everything exploding&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  the real talk
&lt;/h2&gt;

&lt;p&gt;was it overengineered for a student project? probably. &lt;br&gt;
did we learn a ton about distributed systems, event-driven architecture, and deployment hell? absolutely.&lt;br&gt;
would we do it again? honestly... yeah, but with better planning 😅&lt;/p&gt;

&lt;p&gt;if you're building something similar, my advice: start with the monolith, split when you feel the pain, and don't be afraid to make mistakes. that's literally how you learn this stuff.&lt;/p&gt;

&lt;p&gt;anyway, we're live on product hunt today if you want to check out what came out of this beautiful disaster: [link]&lt;/p&gt;

&lt;p&gt;what's your biggest architecture fail? drop it in the comments, let's suffer together 🫡&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tech stack for the curious:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;next.js + typescript (frontend)&lt;/li&gt;
&lt;li&gt;node.js + express (services)
&lt;/li&gt;
&lt;li&gt;prisma + postgresql&lt;/li&gt;
&lt;li&gt;azure pub/sub + container instances&lt;/li&gt;
&lt;li&gt;github actions (CI/CD)&lt;/li&gt;
&lt;li&gt;vercel (frontend hosting)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
   &lt;a href="https://post0.live" rel="noopener noreferrer"&gt;&lt;em&gt;Post0&lt;/em&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ps: if you're also a student dealing with deployment nightmares, my dms are open. let's cry together&lt;/em&gt; 😭&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>Nodedash: A Simple and Scalable Node.js Backend Template</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Sat, 22 Feb 2025 14:42:07 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/nodedash-a-simple-and-scalable-nodejs-backend-template-me9</link>
      <guid>https://dev.to/mdkaifansari04/nodedash-a-simple-and-scalable-nodejs-backend-template-me9</guid>
      <description>&lt;h1&gt;
  
  
  Nodedash: A Simple and Scalable Node.js Backend Template
&lt;/h1&gt;

&lt;p&gt;We love building backend applications in TypeScript with Node.js, leveraging features like rate limiting, fast response times, ESLint support, and a well-structured folder layout.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Nodedash?
&lt;/h2&gt;

&lt;p&gt;When it comes to Node.js frameworks, Express and Nest.js are the most popular choices. I've been working with Express for over two years now. However, every time I started a new project, I found myself copying the structure from an old project, cleaning it up, and then beginning development. Over time, this became tedious and inefficient.&lt;/p&gt;

&lt;p&gt;That's when I thought—why not create an NPM package or a repository where I can set up a reusable schema and clone it whenever needed? This led to the creation of &lt;strong&gt;Nodedash&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Nodedash is a &lt;strong&gt;simple and scalable Node.js backend template&lt;/strong&gt; designed to kickstart your projects. It includes essential configurations and middleware, all written in TypeScript.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Basic Express server setup&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment variable configuration&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common middleware integration&lt;/strong&gt; (e.g., compression, CORS, helmet, morgan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jest for testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prettier for code formatting&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Well-structured folder layout for scalability&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before getting started, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js v14 or higher&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;npm installed&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Clone the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/mdkaifansari04/NODE_BACKEND_TEMPLATE.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate to the project directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;NODE_BACKEND_TEMPLATE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Start the development server:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Start the production server:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server will be running at: &lt;a href="http://localhost:5000" rel="noopener noreferrer"&gt;http://localhost:5000&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Tests
&lt;/h2&gt;

&lt;p&gt;To run tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run tests in watch mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run &lt;span class="nb"&gt;test&lt;/span&gt;:watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check test coverage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run &lt;span class="nb"&gt;test&lt;/span&gt;:coverage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Formatting Code
&lt;/h2&gt;

&lt;p&gt;To format the code with Prettier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run format
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NODE_BACKEND_TEMPLATE/
├── node_modules/
├── src/
│   ├── api/
│   │   └── v1/
│   │       ├── controllers/
│   │       ├── models/
│   │       └── routes/
│   ├── helpers/
│   ├── middleware/
│   ├── types/
│   ├── validation/
│   └── app.ts
├── .env
├── .gitignore
├── jest.config.js
├── package.json
├── tsconfig.json
├── README.md
└── ... (additional files)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;I just started this project, and it has a lot of potential to become even more scalable and efficient. Contributions are welcome! Feel free to fork the repository and submit a pull request.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;This project is licensed under the &lt;strong&gt;ISC License&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/mdkaifansari04/NODE_BACKEND_TEMPLATE" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://nodedash.vercel.app/" rel="noopener noreferrer"&gt;Nodedash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of &lt;strong&gt;Nodedash&lt;/strong&gt; is to create a clean and efficient development environment for Node.js backend projects. Join me in making it better and more developer-friendly!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to deploy your Typescript backend on Render (Simple steps)</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Wed, 17 Jul 2024 10:58:18 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/how-to-deploy-your-typescript-backend-on-render-simple-steps-4pb</link>
      <guid>https://dev.to/mdkaifansari04/how-to-deploy-your-typescript-backend-on-render-simple-steps-4pb</guid>
      <description>&lt;p&gt;Deploying a TypeScript backend on Render can be straightforward if you follow these simple steps. In this guide, I will walk you through the process using a &lt;code&gt;package.json&lt;/code&gt; file as an example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Prepare Your &lt;code&gt;package.json&lt;/code&gt; File
&lt;/h3&gt;

&lt;p&gt;First, ensure your &lt;code&gt;package.json&lt;/code&gt; file contains the correct scripts for building and starting your application. Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"backend"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nodemon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ts-node -r tsconfig-paths/register src/index.ts"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tsc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"axios"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.7.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"bcrypt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.1.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"compression"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.7.4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cors"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.8.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dotenv"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^16.4.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"express"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.19.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"groq-sdk"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.5.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"helmet"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jsonwebtoken"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^9.0.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mindsdb-js-sdk"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.3.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module-alias"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.2.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mongoose"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.4.4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"morgan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.10.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"nodemon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.1.4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.52.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pdf2json"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.1.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.3.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ts-node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^10.9.2"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/bcrypt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.0.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/express"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.17.21"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/hapi__joi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^17.1.14"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tsconfig-paths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.5.3"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"_moduleDirectories"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"node_modules_custom"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"_moduleAliases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the &lt;code&gt;scripts&lt;/code&gt; section, you need to have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;start&lt;/code&gt;: Command to start your server.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;build&lt;/code&gt;: Command to build your TypeScript code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Run the Necessary Commands
&lt;/h3&gt;

&lt;p&gt;To deploy your backend, you need to execute three commands in the Render build settings:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install dependencies&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build the project&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start the server&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Deploy on Render
&lt;/h3&gt;

&lt;p&gt;Now, let's move on to deploying your project on Render.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Create a New Web Service
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render&lt;/a&gt; and log in to your account.&lt;/li&gt;
&lt;li&gt;Click on the "New" button and select "Web Service".&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.amazonaws.com%2Fuploads%2Farticles%2F40616yes9g8h2y1vkwwk.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%2F40616yes9g8h2y1vkwwk.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Connect Your Repository
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Select the repository that contains your TypeScript backend project.&lt;/li&gt;
&lt;li&gt;Render will automatically detect the root directory of your project.&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.amazonaws.com%2Fuploads%2Farticles%2Fqwr11hff5a1obs0di4zu.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%2Fqwr11hff5a1obs0di4zu.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Configure Build and Start Commands
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;In the build command section, enter &lt;code&gt;npm run build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the start command section, enter &lt;code&gt;npm run start&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the configurations:&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%2Fx18i8piwjsaiv8wzsw5h.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%2Fx18i8piwjsaiv8wzsw5h.png" alt=" " width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Build Command&lt;/em&gt;&lt;br&gt;
You have to make sure you install and build your backend in &lt;code&gt;Build Command&lt;/code&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.amazonaws.com%2Fuploads%2Farticles%2Fw8b9t453qdvybsblcf4p.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%2Fw8b9t453qdvybsblcf4p.png" alt=" " width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Start Command&lt;/em&gt;&lt;br&gt;
You have to make sure you start your server from the start command not with &lt;code&gt;nodemon&lt;/code&gt; as it is the development mode.&lt;/p&gt;

&lt;p&gt;Here I have &lt;code&gt;start": "ts-node -r tsconfig-paths/register src/index.ts&lt;/code&gt; on my package.json file. &lt;/p&gt;

&lt;p&gt;So I used &lt;code&gt;npm run start&lt;/code&gt;&lt;br&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%2F0dj8x4v8krgn8nsuo8il.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%2F0dj8x4v8krgn8nsuo8il.png" alt=" " width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Select you Instance type&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I am using free version.&lt;br&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%2F8sr5xck0gwxwssh79390.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%2F8sr5xck0gwxwssh79390.png" alt=" " width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Add environment variable if you have any&lt;/em&gt;&lt;br&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%2Frigp44ysdqgpa202igab.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%2Frigp44ysdqgpa202igab.png" alt=" " width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Deploy
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Click the "Create Web Service" button.&lt;/li&gt;
&lt;li&gt;Render will start the deployment process. You can monitor the logs to see the progress.&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.amazonaws.com%2Fuploads%2Farticles%2F6y10zk1o0ydq1yttem59.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%2F6y10zk1o0ydq1yttem59.png" alt=" " width="361" height="315"&gt;&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2F2smqzhgyo7bzcx6qww41.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%2F2smqzhgyo7bzcx6qww41.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Your deployment will start, if you have configured everything right. It will be deployed successfully.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Final Notes
&lt;/h3&gt;

&lt;p&gt;Ensure that your &lt;code&gt;build&lt;/code&gt; and &lt;code&gt;start&lt;/code&gt; commands in the &lt;code&gt;package.json&lt;/code&gt; file are correctly defined to avoid any issues during the deployment.&lt;/p&gt;

&lt;p&gt;Following these steps, you can successfully deploy your TypeScript backend on Render.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ContentAce : A Cool AI-Powered Content Generation Platform 🚀</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Sun, 07 Jul 2024 21:27:53 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/contentace-a-cool-ai-powered-content-generation-platform-4dmc</link>
      <guid>https://dev.to/mdkaifansari04/contentace-a-cool-ai-powered-content-generation-platform-4dmc</guid>
      <description>&lt;p&gt;Hey everyone! 😎 I’m super excited to share my journey of creating &lt;strong&gt;ContentAce&lt;/strong&gt;, a platform designed to help you generate content ideas, titles, tags, descriptions, and much more! This adventure started with a spark of curiosity and ended with a functional, feature-rich application. Let’s dive into the details and features of ContentAce and my 5-day coding journey! 🛠️&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 1: Diving into MindsDB 🏊‍♂️
&lt;/h2&gt;

&lt;p&gt;It all started with a day of deep diving into the &lt;strong&gt;MindsDB&lt;/strong&gt; documentation. 📝 I was curious to see what cool things I could build on top of it. After a few hours of exploring, I realized MindsDB could help me create something really useful for content creators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 2: Planning the Masterpiece 🗺️
&lt;/h2&gt;

&lt;p&gt;The second day was all about planning. I sat down with my trusty notebook and sketched out the entire layout and workflow of ContentAce. From the user interface to the backend APIs, everything was meticulously planned. It felt like setting the foundation for a big project, and I was super pumped! 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 3: Frontend Frenzy 💻
&lt;/h2&gt;

&lt;p&gt;With the plan in place, I started building the frontend using &lt;strong&gt;Next.js 14&lt;/strong&gt;, &lt;strong&gt;React Query&lt;/strong&gt;, &lt;strong&gt;Zustand&lt;/strong&gt;, and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;. The goal was to make a sleek, user-friendly interface. This part was really fun because I love seeing things come to life visually. 🌟&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 4: Backend Bonanza 🔧
&lt;/h2&gt;

&lt;p&gt;Next, I moved to the backend. I used &lt;strong&gt;Node.js&lt;/strong&gt;, &lt;strong&gt;Express&lt;/strong&gt;, &lt;strong&gt;MongoDB&lt;/strong&gt;, and a bunch of other tools to build the APIs. Setting up the database and ensuring everything worked smoothly was a bit challenging, but hey, that’s part of the fun! By the end of the day, I had a working backend ready to handle requests. 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 5: Interaction Integration 🤝
&lt;/h2&gt;

&lt;p&gt;Finally, it was time to connect the frontend with the backend using &lt;strong&gt;React Query&lt;/strong&gt; and &lt;strong&gt;Zustand&lt;/strong&gt;. This part involved a lot of learning and debugging, but it was totally worth it. Seeing the frontend and backend communicate seamlessly felt incredibly satisfying. I wrapped up the project with a big smile on my face! 😁&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of ContentAce ✨
&lt;/h2&gt;

&lt;p&gt;ContentAce comes packed with a bunch of cool features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Content Ideas&lt;/strong&gt;: Get creative ideas for your YouTube videos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Title Generation&lt;/strong&gt;: Generate catchy and optimized titles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Tag Generation&lt;/strong&gt;: Suggest relevant tags for your videos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Description Generator&lt;/strong&gt;: Write engaging and SEO-friendly descriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thumbnail Text Generator&lt;/strong&gt;: Create attractive text for thumbnails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video Script Generator&lt;/strong&gt;: Produce detailed scripts for your videos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimization Tips&lt;/strong&gt;: Get suggestions to improve your video SEO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engagement Tips&lt;/strong&gt;: Learn best practices for engaging with your audience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email Generators&lt;/strong&gt;: Generate professional emails, cold outreach, follow-ups, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blog Generators&lt;/strong&gt;: Generate blog ideas, titles, and content.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Future Plans 🌈
&lt;/h2&gt;

&lt;p&gt;The journey doesn’t stop here! I have big plans for ContentAce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More Integrations&lt;/strong&gt;: Integrate with other platforms like Instagram and Twitter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced AI Models&lt;/strong&gt;: Use advanced AI models for better content suggestions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Feedback&lt;/strong&gt;: Implement user feedback features to constantly improve the platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile App&lt;/strong&gt;: Develop a mobile version of ContentAce for content creation on the go.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation Guide 🚀
&lt;/h2&gt;

&lt;p&gt;Ready to try out ContentAce? Here’s how you can set it up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone the Repository&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/your-username/contentace.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Navigate to the Frontend Folder&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;contentace/frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set Up Environment Variables&lt;/strong&gt;:&lt;br&gt;
Create a &lt;code&gt;.env&lt;/code&gt; file with the following:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_HOST_URL=http://localhost:5000/api/v1
NEXT_PUBLIC_EMAILJS_SERVICE_ID=
NEXT_PUBLIC_EMAILJS_CONTACT_TEMPLATE_ID=
NEXT_PUBLIC_EMAILJS_FEATURE_TEMPLATE_ID=
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start the Frontend&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Navigate to the Backend Folder&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ../backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set Up Environment Variables&lt;/strong&gt;:&lt;br&gt;
Create a &lt;code&gt;.env&lt;/code&gt; file with the following:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PORT=5000
MONGO_URI=
SECRET_KEY=
GROQ_API_KEY=
MINDSDB_API_KEY=
MINDSDB_BASE_URL=http://127.0.0.1:47334/api/projects/mindsdb/models/contentace/predict
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start the Backend&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ensure MindsDB is Running&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create and configure your MindsDB model&lt;/span&gt;
CREATE MODEL contentace
PREDICT sentiment
USING
engine &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'minds_endpoint_engine'&lt;/span&gt;,
model_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'mistral-7b'&lt;/span&gt;,
prompt_template &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'You are an AI model that works on system prompt: {{systemPrompt}} and give a descriptive answer to the given question: {{question}}'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And that’s it! You’re all set to explore and use ContentAce! 🌟&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 🎉
&lt;/h2&gt;

&lt;p&gt;Building ContentAce was an amazing journey filled with learning and excitement. I’m thrilled to share this platform with you all and can’t wait to see how it helps you create awesome content. Stay tuned for more updates and features. &lt;/p&gt;

&lt;p&gt;Happy content creating! Feel free to ask any doubt or suggest some features that I can add into it 🚀✌️&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Task Unity- Achieve More Together</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Mon, 17 Jun 2024 21:34:46 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/task-unity-achieve-more-together-2co2</link>
      <guid>https://dev.to/mdkaifansari04/task-unity-achieve-more-together-2co2</guid>
      <description>&lt;h2&gt;
  
  
  Task Unity: Revolutionizing Task Management and Collaboration
&lt;/h2&gt;

&lt;p&gt;In today's fast-paced world, effective task management and seamless collaboration are key to achieving success in any organization. Introducing &lt;strong&gt;Task Unity&lt;/strong&gt;, a cutting-edge task management tool designed to empower teams with multifunctional admin and user dashboards, fostering transparent communication and maximizing productivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Managing tasks and collaborating efficiently can be challenging, especially for growing teams. &lt;strong&gt;Task Unity&lt;/strong&gt; aims to address these challenges by providing a comprehensive solution that streamlines task assignments, encourages teamwork, and offers clear insights into task progress and performance. With a robust tech stack and user-friendly interface, Task Unity is set to transform the way teams work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Objectives
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Unity&lt;/strong&gt; is built with the following key objectives in mind:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency&lt;/strong&gt;: Streamline task assignments for clarity and effectiveness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt;: Encourage seamless communication and teamwork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency&lt;/strong&gt;: Provide clear insights into task progress and performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Productivity&lt;/strong&gt;: Empower individuals and teams to achieve peak productivity.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before diving into &lt;strong&gt;Task Unity&lt;/strong&gt;, ensure you have the following prerequisites installed on your system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt;: &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;Download Node.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm (Node Package Manager)&lt;/strong&gt;: Ensure the latest version by running &lt;code&gt;npm install npm@latest -g&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB&lt;/strong&gt;: &lt;a href="https://www.mongodb.com/try/download/community" rel="noopener noreferrer"&gt;Download MongoDB&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Core Functionality
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Unity&lt;/strong&gt; offers a range of features designed to enhance task management and collaboration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User Authentication&lt;/strong&gt;: Secure login using JWT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin Dashboard&lt;/strong&gt;: View, edit, delete, and add users; assign tasks; chat with users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Dashboard&lt;/strong&gt;: View assigned tasks, mark tasks as completed, chat with admin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile Management&lt;/strong&gt;: Update user profiles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task Management&lt;/strong&gt;: Detailed task tracking and progress updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication&lt;/strong&gt;: Built-in chat feature for seamless communication between admin and users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Functionality&lt;/strong&gt;: Quickly find tasks and users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design&lt;/strong&gt;: Accessible on various devices with dark and light mode options.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Setting up &lt;strong&gt;Task Unity&lt;/strong&gt; is straightforward. Follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the repository:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/Mdkaif-123/Task-Unity.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Navigate to the backend folder and install dependencies:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;Task-Unity/backend
   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Navigate to the frontend folder and install dependencies:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd&lt;/span&gt; ../frontend
   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set up your backend &lt;code&gt;.env&lt;/code&gt; file:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nv"&gt;MONGO_DB_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mongodb://127.0.0.1:27017/taskUnityDB"&lt;/span&gt;
   &lt;span class="nv"&gt;AUTH_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"thisistheauthsecretkeyforauthenticationpurpose"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set up your frontend &lt;code&gt;.env&lt;/code&gt; file:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nv"&gt;REACT_APP_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:8000"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the backend server:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd&lt;/span&gt; ../backend
   npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the frontend server:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd&lt;/span&gt; ../frontend
   npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Unity&lt;/strong&gt; leverages a powerful technology stack to deliver an exceptional user experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React, Tailwind CSS, Material Tailwind, Chart.js, Flowbit Components, React Router, Multi Avatar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js, Express, MongoDB, JWT.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information on these technologies, refer to their documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/docs/getting-started.html" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/docs" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://material-tailwind.com/docs" rel="noopener noreferrer"&gt;Material Tailwind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/" rel="noopener noreferrer"&gt;Chart.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactrouter.com/web/guides/quick-start" rel="noopener noreferrer"&gt;React Router&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/docs/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jwt.io/introduction/" rel="noopener noreferrer"&gt;JWT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Future Scope
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Unity&lt;/strong&gt; is constantly evolving, with exciting future enhancements planned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Bot Integration&lt;/strong&gt;: Enhance task management with AI-driven insights and automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email and Notification Features&lt;/strong&gt;: Stay updated with task progress and important notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Super Admin Functionality&lt;/strong&gt;: Enable advanced admin controls and website customization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Courses Platform&lt;/strong&gt;: Offer training and resources for users to improve their skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Unity&lt;/strong&gt; is more than just a task management tool; it's a platform designed to revolutionize how teams collaborate and achieve their goals. By simplifying task management and fostering transparent communication, Task Unity empowers teams to reach new heights of productivity and efficiency. Join us on this journey to redefine teamwork and productivity.&lt;/p&gt;

&lt;p&gt;For more details and to get started with &lt;strong&gt;Task Unity&lt;/strong&gt;, visit our &lt;a href="https://github.com/Mdkaif-123/Task-Unity" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; and &lt;a href="https://task-unity.onrender.com/" rel="noopener noreferrer"&gt;live demo&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zapher - Hub for Interactive Discussions</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Sat, 15 Jun 2024 07:41:58 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/zapher-hub-for-interactive-discussions-5h88</link>
      <guid>https://dev.to/mdkaifansari04/zapher-hub-for-interactive-discussions-5h88</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Welcome to Zypher, your gateway to learning and mastering various technologies while contributing to an exciting open-source project! Whether you're new to software development or looking to expand your skills, Zypher offers a robust platform built on modern technologies like Next.js, MongoDB, and Clerk. This blog will serve as your comprehensive guide to getting started with Zypher, providing resources and steps to kickstart your journey effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started with Zypher
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is Zypher?
&lt;/h4&gt;

&lt;p&gt;Zypher is a dynamic web application designed to foster interactive discussions and community engagement. It leverages Next.js 14 for server-side rendering, MongoDB for data storage, and Clerk for authentication, ensuring a secure and efficient user experience. As you embark on your journey with Zypher, here’s how you can dive in and start contributing:&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;Before diving into Zypher, it’s essential to have a basic understanding of web development fundamentals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML/CSS:&lt;/strong&gt; Familiarity with building web pages and styling elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript (ES6+):&lt;/strong&gt; Understanding of JavaScript for client-side interactions and asynchronous programming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git and GitHub:&lt;/strong&gt; Basics of version control and collaborative development using Git and GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re new to these concepts, don’t worry! There are plenty of resources available online to help you get up to speed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Setting Up Your Development Environment
&lt;/h4&gt;

&lt;p&gt;To start contributing to Zypher, follow these steps to set up your development environment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Node.js and npm:&lt;/strong&gt; Ensure Node.js is installed on your machine to run JavaScript applications. npm (Node Package Manager) will help manage dependencies.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;Node.js Installation Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Zypher Repository:&lt;/strong&gt; Clone the Zypher repository from GitHub to your local machine using Git.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/your-username/zypher.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;zypher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Dependencies:&lt;/strong&gt; Install project dependencies using npm.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configure Environment Variables:&lt;/strong&gt; Set up environment variables for Clerk authentication and MongoDB connection strings. Refer to the project’s README or documentation for specific instructions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the Development Server:&lt;/strong&gt; Start the development server to see Zypher in action locally.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Explore the Codebase:&lt;/strong&gt; Take some time to explore the project’s structure, understand how components are organized, and familiarize yourself with the code conventions followed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Learning Resources
&lt;/h4&gt;

&lt;p&gt;To effectively contribute to Zypher and enhance your skills, here are some valuable resources categorized by the technologies used:&lt;br&gt;
JavaScript (ES6+): Understanding of JavaScript for client-side interactions, asynchronous programming, and familiarity with React for building interactive UI components.&lt;br&gt;
Git and GitHub: Basics of version control and collaborative development using Git and GitHub, essential for managing project versions and contributing to open-source projects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Next.js:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/getting-started" rel="noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/learn/" rel="noopener noreferrer"&gt;Learn Next.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;MongoDB:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://university.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB University&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Clerk:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.clerk.dev/" rel="noopener noreferrer"&gt;Clerk Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.clerk.dev/getting-started/quick-start" rel="noopener noreferrer"&gt;Clerk Quick Start Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Upload Thing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.uploadthing.com/" rel="noopener noreferrer"&gt;Clerk Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.uploadthing.com/getting-started/appdir" rel="noopener noreferrer"&gt;Clerk Quick Start Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Web Development Basics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3Schools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Additionally, we will be hosting a seminar focused on mastering Next.js, a powerful React framework for building server-side rendered applications. This seminar will provide hands-on experience and insights into leveraging Next.js features to enhance Zypher's functionality and performance.&lt;/p&gt;

&lt;h4&gt;
  
  
  Contributing to Zypher
&lt;/h4&gt;

&lt;p&gt;Now that you have set up your development environment and familiarized yourself with the technologies, you’re ready to contribute to Zypher:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pick an Issue:&lt;/strong&gt; Visit the GitHub repository’s issue tracker and find an issue labeled “good first issue” or one that aligns with your skills and interests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Work on the Issue:&lt;/strong&gt; Fork the repository, create a new branch for your changes, and implement the solution. Follow best practices for coding and maintain clean, readable code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Submit a Pull Request (PR):&lt;/strong&gt; Once your changes are ready, push them to your forked repository and submit a pull request to the main Zypher repository. Provide a clear description of your changes and reference the related issue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review and Iterate:&lt;/strong&gt; Be open to feedback from maintainers and other contributors. Iterate on your code based on feedback to improve its quality and alignment with project standards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Celebrate and Learn:&lt;/strong&gt; Once your PR is merged, celebrate your contribution to Zypher! Take the opportunity to learn from the review process and continue growing as a developer.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Congratulations on taking the first step towards contributing to Zypher! This blog has equipped you with the necessary resources and steps to get started effectively. Remember, open-source contributions are not just about code; they’re about collaboration, learning, and making a meaningful impact on projects and communities. Join us in building the future of interactive discussions with Zypher!&lt;/p&gt;

&lt;p&gt;Happy coding and happy contributing!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>developercommunity</category>
      <category>nextjs</category>
      <category>github</category>
    </item>
    <item>
      <title>Building in public - A simple guide</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Sat, 16 Mar 2024 10:08:59 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/building-in-public-a-simple-guide-2022</link>
      <guid>https://dev.to/mdkaifansari04/building-in-public-a-simple-guide-2022</guid>
      <description>&lt;p&gt;Building in public is a very peculiar concept that many people are not familiar with. However, by the end of this article, you will understand what "Building in public" means and how it can benefit you in the long term.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does building in public mean ?
&lt;/h2&gt;

&lt;p&gt;It involves sharing your thoughts, activities, practices, methods, and resources with the world regarding the development of your products or services. This allows others to benefit from your experiences and also gain insights from them.&lt;/p&gt;

&lt;p&gt;Getting insights is not just the goal of sharing your activity in public but sharing consistent content will lead to multiple opportunities out there. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are some listed below :&lt;/em&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Recognition:&lt;/strong&gt; Sharing your activities publicly can make you known as an enthusiastic individual passionate about technology, opening up opportunities for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand Popularization:&lt;/strong&gt; Generating excitement for upcoming products or MVP launches is crucial for creating a brand image, attracting attention, and introducing the product to potential supporters during the creation process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More Opportunities:&lt;/strong&gt; Consistently updating platforms like Twitter and LinkedIn can put you in the spotlight for hiring managers, increasing your chances of getting more opportunities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy Referrals:&lt;/strong&gt; Having a portfolio of your work available can make it easier for you to receive referrals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expand Your Network:&lt;/strong&gt; Building in public helps you connect with a wider range of people globally, leading to more opportunities.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;and many more..&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How can I start my own journey?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here are the steps on how you can begin your journey of building things in public.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Set up your Social Media
&lt;/h3&gt;

&lt;p&gt;This step is quite obvious, but social media is the primary platform through which you can share your journey of building things. So, create an account on some popular social media platforms. You might wonder why you should share your personal information. Well, all hiring managers and company CEOs are present on these platforms, so having your account there can be a significant advantage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linkedin.com/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Post / Share Content
&lt;/h3&gt;

&lt;p&gt;Just creating an account on social media is not sufficient; you should be very active by sharing posts or useful content that will benefit people worldwide.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This could include:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharing your experiences and learnings of using web technologies through blog posts or YouTube videos&lt;/li&gt;
&lt;li&gt;Sharing popular book summaries&lt;/li&gt;
&lt;li&gt;Discussing mistakes you made in the past&lt;/li&gt;
&lt;li&gt;Sharing insights on "How to contribute to open source"&lt;/li&gt;
&lt;li&gt;Documenting your project building process&lt;/li&gt;
&lt;li&gt;Sharing your insights about large open source projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Engage with the community
&lt;/h3&gt;

&lt;p&gt;Engaging with the community involves not only posting content but also interacting with others' posts, asking questions, commenting with your suggestions, and sharing your thoughts. This is how you will get noticed by people.&lt;/p&gt;

&lt;p&gt;You can also summarize content, add your perspective, and comment on posts. Consistently engaging with a specific person's posts will create a strong connection, and if you ask for help, they will likely be available to assist you.&lt;/p&gt;

&lt;p&gt;You can also engage in resolving issues within any organization. This can lead to recognition by the organization's mentor, and if you meet the organization's criteria, you might even receive an offer letter, although this is quite rare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE: You contribution to open source should not be &lt;code&gt;README&lt;/code&gt; update !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can make in even further by participating in any local meetups, events, fest or hackathons this is also help you expand you connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Showcase your work&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is the stage where people begin to notice you. Start sharing your projects and accomplishments on social media and other platforms.&lt;/p&gt;

&lt;p&gt;Whether it's personal projects, announcements, or blog posts, the goal is to establish your presence in the community.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep in mind&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The larger your social media presence, the more opportunities you are likely to attract!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another strategy is to transform a blog post into a video tutorial or a video tutorial into short and engaging Tik Toks or reels. Aim to create a substantial amount of content.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Develop a routine&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While it may be easy to create content or write a blog post occasionally, consistently posting and creating content can become monotonous. However, if you stop, you risk losing all the progress you have made so far.&lt;/p&gt;

&lt;p&gt;Strive to post once or twice a week. Establish a schedule and stick to it.&lt;/p&gt;

&lt;p&gt;We don't necessarily need a massive audience of thousands or millions; even a few hundred followers can be valuable. Make it a habit to create content whenever you have the opportunity, whether it's videos or other forms of content.&lt;/p&gt;

</description>
      <category>buildinginpublic</category>
      <category>communityengagement</category>
      <category>personalbranding</category>
      <category>transparency</category>
    </item>
    <item>
      <title>Habits of TOP 1% Developer</title>
      <dc:creator>Md Kaif Ansari</dc:creator>
      <pubDate>Fri, 12 Jan 2024 20:45:40 +0000</pubDate>
      <link>https://dev.to/mdkaifansari04/habits-of-top-1-developer-2i1b</link>
      <guid>https://dev.to/mdkaifansari04/habits-of-top-1-developer-2i1b</guid>
      <description>&lt;p&gt;I have some insights to share on achieving success as a developer. Although I am only 19 years old, I have accomplished significant results by following certain principles. These have helped put me ahead of over 99% of the people in my circle.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Maintain a checklist of things to do
&lt;/h4&gt;

&lt;p&gt;In life, we have many things to accomplish but often fail to attempt them or even forget about them. To help with this, we should maintain a checklist of todos or similar tasks, which will be highly beneficial in the long run.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Surround yourself with smart people
&lt;/h4&gt;

&lt;p&gt;As the saying goes, "It is not your environment, it is you." The quality of your mind, the integrity of your soul, and the determination of your will decide your future and shape your life. To achieve success, it's important to surround yourself with smart, like-minded people who can inspire and motivate you.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Get out of your comfort zone
&lt;/h4&gt;

&lt;p&gt;It's easy to live life on our terms, but it's much harder to lead a disciplined life with a consistent schedule. Most successful people follow a disciplined routine and dedicate 100% to their work without making excuses. Breaking out of your comfort zone means pushing your efforts to the breaking point.&lt;/p&gt;

&lt;p&gt;These are the insights that have worked for me so far. As a new member of the community, I welcome your constructive criticism, which will help me improve.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>habbit</category>
    </item>
  </channel>
</rss>
