<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Untitled Publication]]></title><description><![CDATA[Untitled Publication]]></description><link>https://blog.afeefuddin.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 10:22:55 GMT</lastBuildDate><atom:link href="https://blog.afeefuddin.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Journey of a Newbie Programmer to GSOC Selection]]></title><description><![CDATA[This is not my usual tech blog where I try to break down stuff, this is a blog about my tech journey till now, where I will try to narrate a bit about how I got into programming, how I got interested in Tech, and how to I got into Google summer of co...]]></description><link>https://blog.afeefuddin.com/journey-of-a-newbie-programmer-to-gsoc-selection</link><guid isPermaLink="true">https://blog.afeefuddin.com/journey-of-a-newbie-programmer-to-gsoc-selection</guid><category><![CDATA[Open Source]]></category><category><![CDATA[gsoc]]></category><category><![CDATA[gsoc2024]]></category><dc:creator><![CDATA[Afeefuddin]]></dc:creator><pubDate>Sun, 19 May 2024 12:43:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716122458756/e1990e90-175c-4e72-ab6d-527ceae54034.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is not my usual tech blog where I try to break down stuff, this is a blog about my tech journey till now, where I will try to narrate a bit about how I got into programming, how I got interested in Tech, and how to I got into Google summer of code. I’ll try to do a bit of intro about me initially and then elaborate on my Gsoc journey.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1716112883750/d32378bd-9da5-4868-825a-89eee27cc796.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-the-big-bang">The big bang</h3>
<p>My first introduction to engineering happened when I was in 9th grade. I developed a new excitement and hobby for tech, especially watching tech channels. I even tried creating my own YouTube channel and gained 15 subscribers (all of whom were my friends). This phase sparked my interest in programming. I wanted to make websites and apps but couldn't due to a lack of awareness and not having a computer. I got my first computer in 11th grade while I was preparing for the JEE. I secured 97 percentile, but it wasn't enough to get me into an NIT with a computer science branch. In hindsight, I'm grateful for this because it fueled my desire to prove myself and achieve something significant.</p>
<h3 id="heading-the-birth-of-adam-and-eve">The birth of Adam and Eve</h3>
<p>I started learning Java after I failed JEE and skipped JEE Advanced (I knew I wouldn’t be able to crack it). I explored more about programming and came across DSA (damn, that binary search was too hard for me to digest at first). I practiced a lot of DSA (I still struggle with DP) and did a bit of CP too (because I knew every CP question could be solved with a hashmap, kidding). The real turning point came when I developed an interest in web development. Initially, I struggled a lot, but as I continued working on projects, things gradually became much smoother.</p>
<p>The great inflection point in my web dev journey was clearly when I first participated in a hackathon. Through this hackathon, I learned a lot, especially about developing backends, working with databases, and understanding the importance of clean code when a single return statement cost us the victory.</p>
<p>I knew about Google Summer of Code earlier, but I delved deeper into it around September 2023. I started searching for organizations and explored the codebases of about 10-12 of them. I eventually settled on Zulip. I set up the project and tried contributing to it. My first PR was not great; it’s not always that simple. I kept working and trying to understand the codebase, which was quite hard for a newbie. I spent days and nights trying to understand a single file. This wasn't just another React project by a novice programmer; it was a complex codebase with around 500,000 lines of code, and even understanding 100 lines was difficult.</p>
<h3 id="heading-the-great-flood">The Great flood</h3>
<p>I almost gave up on Zulip around December when not much was happening in the past 2-3 months. I accepted the fact(myth) that GSOC was not my cup of tea, and I should try other things, GSOC organisations were announced this February and these were the messages I sent to my friend (we both aspired for GSOC initially)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1716108850975/6b907a82-64c5-4f5e-a13f-69ffabeeae72.jpeg?height=200" alt class="image--center mx-auto" /></p>
<p>Yes so there was no hope till February beginning, but the hope arose when my this PR got merged on February 16.</p>
<p><a target="_blank" href="https://github.com/zulip/zulip/pull/28535#issuecomment-1947557469">The PR that motivated me</a></p>
<h3 id="heading-the-noahs-ark">The Noah’s Ark</h3>
<p>I made this PR in January, and it was stale since then. But as things started moving, I got my hope back. I went to the projects list and tried figuring out my projects. I regained my vision, but I wasn't sure because I knew this would take a lot of perseverance, patience, luck, and consistency for the next 2 months amid college, internal exams, and managing personal and hackathon projects. I worked very hard, putting in 8-10 hours a day to ensure I didn't miss any chance of hitting the bull’s eye. From just 2 PRs merged initially, in these 1 and a half months, I got 10 more PRs merged, which made me satisfied that it is going to happen this year.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1716115426680/a066a387-3cf5-4d52-9d39-64e047fb98f8.jpeg?height=200" alt class="image--center mx-auto" /></p>
<h3 id="heading-evolution-theory">Evolution theory</h3>
<p>These are the tips that helped me a lot in my journey and might help you as well.</p>
<ol>
<li><strong>Hunger</strong>: The hunger to do something and achieve big is very important, the hunger to get it, the hunger to be the best the hunger to defeat everyone are very important. When Virat Kohli was asked how he got so much confidence he said:</li>
</ol>
<blockquote>
<p>“this is the guy I’ve always been, if someone’s getting a hundred, I have to get 200, otherwise no one's gonna notice and I had that fire inside me all the time and that’s exactly what I did to come up the ranks, I scored so many runs that people could not ignore me and that is my only driving force”.</p>
</blockquote>
<p>This is the reason why he excels in his field and this is what makes me idolize him and this is what inspires me also. The hunger to do something will keep you moving forward.</p>
<ol start="2">
<li><strong>Never give up</strong>: When my PRs started getting merged, I regretted giving up earlier. The best thing you can do is to keep trying. As James Clear said in Atomic Habits:</li>
</ol>
<blockquote>
<p>“Masterty requires patience”.</p>
</blockquote>
<ol start="3">
<li><p><strong>Open source is hard</strong>: Contributing to big organizations involves working on real codebases used by millions of people, which can be quite challenging. It’s important to recognize the effort and complexity involved. Unlike programs like GSSoC or Hacktoberfest, where it's easier to make small, manageable contributions, this will require a deeper understanding of the codebase. Please approach this with humility and readiness to learn.</p>
</li>
<li><p><strong>Clean communication and confidence</strong>: Confidence in your work is important, if you can’t explain your code, then forget about it, it is not happening. Good communication with the mentors and admin is very important if you aim to crack any of these programs.</p>
</li>
<li><p><strong>Write clean code</strong>: Writing clean code is a crucial part of your journey. If you don't write clean code, open source is not for you. No one will merge poor-quality code into their codebase. This skill develops over time, but the sooner you adapt, the better your situation will be.</p>
</li>
<li><p><strong>Learn Git</strong>: Git is the most important tool you should learn to make PRs, and no you don’t know Git even if you think you know it. Doing <code>git push origin main</code> is not knowing git. Learn about rebasing, squashing, grep, stashing etc.</p>
</li>
<li><p><strong>Vertical learning</strong>: Do you know what a prototype chain is in JavaScript, what generics are in TypeScript, or what suspense fallback is in React? How about implementing caching in backends? Most of you might not, even if you use similar tech stacks. The reason is that, as students, we often try to learn things broadly rather than deeply. There's nothing wrong with that, but if you want to excel at something, you need vertical learning—you need to go in-depth. Learning Next.js is not hard, but understanding it deeply is. There's always a trade-off between shipping fast and going deep; you need to balance them according to your goals.</p>
</li>
<li><p><strong>Learning over everything</strong>: I am not a motivational speaker, but one thing I have realised which is required for long-term success is Learning, to be honest with whatever you are doing, because if you can’t be honest with yourself then there is no hope.</p>
</li>
</ol>
<h3 id="heading-the-apocalypse">The Apocalypse</h3>
<p>In the end, I just want to say there is more to the world than just GSOC, LFX, or MLH. There are many things you can explore and many things we can do in life. This is what I tell myself and everyone: if you fail at something, it doesn't mean you'll fail at everything. At least go and try something new.</p>
<p>And in the end, as Nikhil Kamath infamously said:</p>
<blockquote>
<p>“At the end of it each time you don’t do well at an exam, you don’t get good marks, that girl you like doesn’t like you back, you're jealous of another friend in your class or college. I think the one thing to remember at the end of it is  B********* sab marne wale hain”</p>
</blockquote>
<h3 id="heading-credits">Credits</h3>
<ul>
<li><p>Youtube for existing</p>
</li>
<li><p>Friends who motivated me for GSOC</p>
</li>
<li><p>Family</p>
</li>
<li><p>Myself :)</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1716117960532/81ee790b-eeb8-49a4-903a-22f37a23467d.jpeg?height=200" alt /></p>
<p>  Feel free to connect with me on <a target="_blank" href="https://x.com/Afeefuddin2004">X</a> and <a target="_blank" href="https://www.linkedin.com/in/afeef-uddin-2ab567247/">LinkedIn</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Webpack, Babel, CRA and VITE: What, Why and How?]]></title><description><![CDATA[In today's digital age, everyone wants a website, and web development is at the forefront of meeting this demand. The internet's evolution, increased device usage, and the growing importance of online presence for businesses and individuals have fuel...]]></description><link>https://blog.afeefuddin.com/webpack-babel-cra-and-vite-what-why-and-how</link><guid isPermaLink="true">https://blog.afeefuddin.com/webpack-babel-cra-and-vite-what-why-and-how</guid><category><![CDATA[Web Development]]></category><category><![CDATA[webdev]]></category><category><![CDATA[React]]></category><category><![CDATA[vite]]></category><category><![CDATA[create-react-app]]></category><category><![CDATA[Babel]]></category><category><![CDATA[webpack]]></category><dc:creator><![CDATA[Afeefuddin]]></dc:creator><pubDate>Sat, 16 Dec 2023 10:29:46 GMT</pubDate><content:encoded><![CDATA[<p>In today's digital age, everyone wants a website, and web development is at the forefront of meeting this demand. The internet's evolution, increased device usage, and the growing importance of online presence for businesses and individuals have fueled the surge in web development. With the rise of tools like React and Angular, creating impressive websites has become more accessible for developers. Collaboration in open-source communities and a focus on design have further shaped the field. In this interconnected world, web development stands as a crucial force, ensuring that people enjoy engaging and seamless online experiences.  </p>
<p>But how did we arrived at this position? What made web development so handy for the developers.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702716212513/fb5d27b8-e0a6-4ef7-a48e-33dcf9c0c118.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-ia"> </h3>
<p>Early Days of web development</p>
<p>Let us get into the basics of web development.</p>
<p>How are websites made or how were they made before fancy frameworks like React(that’s debatable), Angular, Vue, etc. came into picture?</p>
<p>Simple answer HTML,CSS,JS.<br />That’s it. That is it.<br />We only need to know these 3 technologies and it is possible to make the frontend of any website which exists in this world. Although it is definitely not an efficient way to do so, but we will come to this later on. We write code in HTML,CSS,JS and send it to the browser. Browsers only understand these 3 technologies and display your website accordingly.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702716935845/05bfa6a1-3d77-4e5f-bb97-6c312c1c7ae8.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-problems-with-the-web-trinity">Problems with the Web Trinity</h2>
<p>How do we write code in HTML, CSS, JS? What is the structure?  </p>
<p><code>Index.html</code></p>
<p><code>Styles.css</code></p>
<p><code>Script.js</code></p>
<p>Pretty simple right ?</p>
<p>Or is it?</p>
<p>Let us say hypothetically you are writing a social media application. Let us say Instagram, how many lines of code do you think you will require to make the entire UI?</p>
<p>100s ? 1000s? 10,000s? 100,000s ?<br />Maybe yes!</p>
<p>Will you write all that code in script.js file ?  </p>
<p>A 100 thousand lines of code in script.js file will increase your problems instead of solving it.<br />So you will tend to split into multiple files. Let us say you use 100 files each containing 1000 lines of code.<br />How will you inject this code to the html file? </p>
<p>Obviously &lt;Script&gt; Tag, right?</p>
<p>Yes, but there is a problem!<br />You have to maintain the order. How? Let me explain with an example.  </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702721738758/41b70a9f-902f-4ef9-9c3d-43b612e02b90.png" alt class="image--center mx-auto" /></p>
<p>Let us say this is the order you have put in your html file.  </p>
<p>So when you write code in your Script1.js you have to be cautious since you will not be able to use any code written in the files attached below it.  </p>
<p>Imagine you’re writing the code of Liking a post.<br />What is the flow? First add the like to the post and then show it in the frontend to the user. The problem is if you have written a function to like the post on script1.js and you are calling another function to update the frontend, it must be in a file attached above it.  </p>
<p>This is an issue, because it creates a lot of unnecessary mess.  </p>
<h3 id="heading-ia-1"> </h3>
<p>What is the solution ?  </p>
<p>One common solution to mitigate this problem is to use a module system like CommonJS or ES6 Modules. With modules, you can explicitly define dependencies and ensure that code is executed in the correct order. For example:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702717742403/bdefdae5-9ca7-4e2b-967d-66652495784e.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702717794754/5e385d9a-6877-48f6-a27a-126e918d33bf.png" alt="Script2.js" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702717843338/15ace9b5-a1a9-41e8-8d20-6acf1a792640.png" alt class="image--center mx-auto" /></p>
<p>Here even if we have put <code>Script2.js</code> above <code>Script1.js</code> we are able to use the functions of <code>Script1.js</code> in <code>Script2.js</code> by making scripts of type module.</p>
<p>But again there is  a problem , all browsers don’t support ES6 Modules fully so you need to fix this issue also.<br />How can we do that, we come back to the first solution, write all the code in one file, 100,000 lines in one file.<br />Is there any other way to solve this problem.  </p>
<p>I guess yes.   </p>
<p>Webpack.</p>
<h2 id="heading-webpack">Webpack</h2>
<p>Webpack is a popular open-source JavaScript module bundler. It takes your project's files, such as JavaScript, CSS, and images, and bundles them together in a way that's optimized for the web.  </p>
<p>Basically it takes all your 100,000 lines of code written in different files, transpile them and bundles them into a single file which you can attach to your index.html file and send to the browser.  </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702718605058/22010706-0150-4a38-8d2f-052597e9e18b.jpeg" alt class="image--center mx-auto" /></p>
<p>How do you use it? Simple .<br />You need to create a webpack.config.json file where you will tell the webpack about all your files, which it will convert it to plain Html, Css, Js.<br />You can also use modern technologies like handlebars templates, Saas etc. with help of webpack.  </p>
<p>But wait a minute, as we know not all browsers support newer versions of JavaScript, few browsers require older versions of Javascript, if we write a newer version of JavaScript, some browser might not be able to understand it.</p>
<p>For example arrow functions </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702718673184/01c3ea22-5d57-458b-bdef-adb3f636bc29.png" alt /></p>
<p>Not all browsers are able to interpret this syntax. We need to solve this issue.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702718828028/22d8623b-060e-4b2d-97bb-2619b61e89fa.jpeg" alt class="image--center mx-auto" /></p>
<p><strong>Babel Spawned</strong>  </p>
<h2 id="heading-babel">Babel</h2>
<p>Babel is a widely used JavaScript compiler that allows developers to write code using the latest ECMAScript (ES) standards and features, and then transforms or transpiles that code into an older version of JavaScript that is compatible with a broader range of browsers  </p>
<p>With the help of babel we are able to write modern javascript in our websites and the browser will still be able to understand.<br />We just have to compile the javascript file with the help of babel and attach the compiled file to our html page.  </p>
<p>So with the help of babel and webpack we will be able to write all types of websites and run them in any browser.</p>
<h2 id="heading-birth-of-frameworks">Birth of Frameworks</h2>
<p>All was Hunky dory till now, until people started trying to make new frameworks , backbone, angular and react came into picture.   </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702719087169/4afbc9e2-7920-43ea-a5f2-56c512fa8549.jpeg" alt class="image--center mx-auto" /></p>
<p>But why frameworks?<br />Frameworks made it easy to write complex websites in an organized manner with features like state management, SPA , reusable components etc.  </p>
<h2 id="heading-react-js">React JS</h2>
<p>Among all the frameworks invented till now, REACT surpasses every one of them. React, which is arguably a JavaScript library, provides a proper structure to create a single page application with state management and reusable components.<br />React was initially trolled earlier because it created unnecessary mess while writing code with the problems like unnecessary re render and 100s of dependencies but it was eventually adopted by developer community with time and its popularity is quite visible nowadays.</p>
<p>React is a framework which makes it easy for you to write components especially with the introduction of JSX ( JavaScript XML ). JSX allow us to write HTML code in javascript.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702719177789/70142661-4631-484b-ae65-93a2e5b76f81.jpeg" alt class="image--center mx-auto" /></p>
<p>But the problem was browser don’t understand anything apart from the web trinity(HTML,CSS,JS).  That is why it is important to use Babel and webpack to convert the Jsx syntax to the browser understandable web trinity. @babel/preset-react is used to compile the jsx to javascript which is then run in the browser to make your website visible. </p>
<p>WebPack is also used in react to bundle all the files on build.</p>
<p>We need to configure webpack and babel in order to use react to make websites.</p>
<h2 id="heading-cra-and-vite">CRA and VITE</h2>
<p>But there was a problem. Setting up a React project used to be a headache for developers. They had to juggle various configurations, dependencies, and build tools, making the process time-consuming and stressful. For newcomers, especially, getting everything right—like dependencies, webpack, and babel—was overwhelming.</p>
<p>In response, Facebook introduced a lifesaver: a new command-line tool to simplify the creation of React applications. The idea was to take away the hassle. This tool, known as Create React App (CRA), was designed with simplicity in mind. It provides a ready-to-go development environment, meaning developers don't need to fuss over manual configurations or setup of build tools. It's like a shortcut, allowing developers, both seasoned and new, to dive into building React applications without getting bogged down by the nitty-gritty details.</p>
<p>CRA is all about making life easier for developers. It's a straightforward solution to a problem that used to eat up a lot of time and energy. With CRA, starting a React project becomes a breeze, giving developers more time to focus on what they love—writing code and bringing their ideas to life.</p>
<p>However, as projects grew and evolved, some developers found problems with Create React App (CRA).The tool's opinionated nature, while initially helpful, became restrictive for those who wanted more control over their project configurations. One of the criticisms leveled against Create React App (CRA) was its perceived slowness, particularly as projects scaled in size and complexity. CRA relies on a traditional bundling approach, which involves packaging all the code and dependencies into a single bundle before serving it to the browser. As the project grows, the time it takes to bundle and rebuild the entire application increases, leading to slower development feedback loops.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702720416848/6b887050-d0dd-406e-b278-f7d4258196b9.jpeg" alt class="image--center mx-auto" /></p>
<p>Using CRA was troublesome for developers until 2020 when Evan You decided to come up with <strong>VITE</strong>.</p>
<p>According to official docs, VITE is a build tool that aims to provide a faster and leaner development experience for modern web projects. It is not a React specific tool but it is also used to set up React projects in a fast and quick manner.</p>
<p>Unlike a CRA or bundler-based build setup, VITE does not build the entire application before serving. VITE prioritizes speed and faster feedback in development mode unlike the CRA. VITE became so revolutionary that today even react recommends VITE setup over CRA.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1702721134970/edf1feba-3e84-451e-bbb8-c19af3b5f8a6.jpeg" alt class="image--center mx-auto" /></p>
<p>References:</p>
<ol>
<li><p>Google.com</p>
</li>
<li><p>Chatgpt.com</p>
</li>
<li><p><a target="_blank" href="https://webpack.js.org/">Webpack.js.org</a></p>
</li>
<li><p><a target="_blank" href="https://react.dev/">React.dev</a></p>
</li>
<li><p><a target="_blank" href="https://create-react-app.dev/">Create-react-app</a></p>
</li>
<li><p><a target="_blank" href="https://vitejs.dev/">Vitejs.dev</a></p>
</li>
<li><p>Afeef's Brain</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Peeking into Google Firebase]]></title><description><![CDATA[Firebase is undoubtedly one of the coolest technologies developed by Google. Few days back I participated in a hackathon for which I created and deployed a website on Firebase. I read so many blogs and spent so much time asking questions to chat gpt ...]]></description><link>https://blog.afeefuddin.com/peeking-into-google-firebase</link><guid isPermaLink="true">https://blog.afeefuddin.com/peeking-into-google-firebase</guid><category><![CDATA[Firebase]]></category><category><![CDATA[Google]]></category><category><![CDATA[firebaseAuth]]></category><dc:creator><![CDATA[Afeefuddin]]></dc:creator><pubDate>Sat, 09 Sep 2023 14:39:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1694270237610/94628396-5944-4f6d-a22c-933f01c00cd2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Firebase is undoubtedly one of the coolest technologies developed by Google. Few days back I participated in a hackathon for which I created and deployed a website on Firebase. I read so many blogs and spent so much time asking questions to chat gpt and searching for answers in stack overflow.<br />In this blog I am going to Compile everything for you so when you want to learn Firebase, you can refer to this blog.</p>
<h2 id="heading-what-is-firebase">What is Firebase?</h2>
<p>Okay instead of bombarding definitions towards you, I just wanna give you an example. Imagine you are creating a website or let us say you are creating a startup that sells something, let us say cool t-shirts. So you are creating a website for that, just think what are the requirements of that website. If you even have a vague idea of web development, you can create a list of things required for this website. First of all Front end, I mean Imagine a website that doesn’t have a front end. Obviously you can’t Imagine any such, because no such websites exist. Then Comes backend, but think of what are the things you require in the backend. Firstly an authenticator system for your user, whenever the user login you have to check his email and password. You also need a database to store the data of your users as well as the products, you also want to update this data in real-time.<br />What else?</p>
<p>Storage??</p>
<p>To store the data or images for your user/website!!</p>
<p>What else??</p>
<p>You also want to send notifications/emails to your customers. So basically an email/notification sending system!!</p>
<p>And just in case you are trying to make a recommender system for your customers you also need Machine Learning( A very fancy term. Isn’t it? )</p>
<p>And finally, if I am not missing anything you also want to host your website.<br />Now, let us figure out how you will execute all these features on your website.</p>
<ol>
<li><p>Authentication: For this, you will need a database to store the data of your user. And if you’re a JS person, you will have to write code in Node, and Express and check the thing on the server side. In the case of Python, Django might help you. Search yourself for other languages :)</p>
</li>
<li><p>Database: MongoDB, SQL, PostgreSQL, etc.</p>
</li>
<li><p>Storage: <a target="_blank" href="https://www.quora.com/How-does-Instagram-efficiently-store-all-of-their-images#:~:text=Distributed%20storage%3A%20Instagram%20stores%20their,located%20all%20over%20the%20world.">Read this</a> and you will realize it’s not that easy</p>
</li>
<li><p>Email notification: Well there are multiple ways to send emails to your users but it’s not very easy.</p>
</li>
<li><p>Machine Learning: Python 🫥</p>
</li>
<li><p>Hosting How will you host your website? It depends upon your requirement, for free there is Vercel and Netlify. If you have cash, there are AWS and GCP also. (Azure Crying in the corner)</p>
<p> Azure also.</p>
</li>
</ol>
<p>This involves a considerable amount of work and you need a lot of knowledge to code this website.</p>
<p>But is there any other way?</p>
<p><img src="https://lh3.googleusercontent.com/dGqZi7WdrqoAEYCs-qVmrxCGGqJQGyeaG2N0gtfDaAgiYoc6CYtyoaXWDAX1CCt9i6X-AV0njB77DlZq_Oc9uzDi3ZAawMtPx-I0K5lOO5ARVMBHJ1vOjM-UK0JXAu4TtvIhJC_eykjkCjhapj1qU0VHFh7Gj0rfHFzo1MUKwMEk39LEnHt08W372lYKGg" alt class="image--center mx-auto" /></p>
<p>Yes exactly as Obama said the problem is you are not using firebase. Then use it na.</p>
<p>So what is Firebase? Okh definition this time!</p>
<p>Firebase is a comprehensive platform developed by Google that provides a variety of tools and services for building and managing web and mobile applications. It offers a range of features that help developers handle various aspects of development, including backend infrastructure, database management, authentication, hosting, and more. So basically for web developers, Firebase is BaaS( Backend as a Service).</p>
<p>Firebase can solve all your problems and provides you with a platform to set up everything in one Place. You can use Firebase auth for authentication of your users. Firebase Realtime database/Firestore to store the data, Firebase Storage, Cloud Messaging (FCM), Hosting and the fancy term(ML). Firebase can help you build a fully functional website without writing much code.<br />Don’t ask me about the front end, that you have to do by yourself.</p>
<h2 id="heading-creating-firebase-account">Creating Firebase Account</h2>
<p>You’re a developer, you can figure that out.</p>
<h2 id="heading-creating-the-project">Creating the project</h2>
<p>Once, you have created the firebase account you have to create the firebase project where you will be getting all the backend services. You can create multiple firebase projects and implement the functions in that. You can also invite collaborators to work on that project.</p>
<h2 id="heading-authentication">Authentication</h2>
<p>Firebase authentication is one of the easiest ways to authenticate users for your websites. You can write some functions given in <a target="_blank" href="https://firebase.google.com/docs/auth">docs</a> of Firebase and you can set-up the authentication for your website.</p>
<p>You can create the authentication system by User email/password, user’s Google account, Facebook, Twitter(X btw), Microsoft etc.</p>
<p>Imagine doing this without Firebase, very hectic. You can also add email verification, SMS verification and multi-factor authentication.</p>
<p>You can also add a reCaptcha verifier before login.</p>
<p>All of this can be done simply by using some Firebase functions.</p>
<h2 id="heading-realtime-database">Realtime Database</h2>
<p>Once you are done with authentication, I will suggest you to also store the information of your user in a realtime database, because if you want to use this information you won’t be able to access it from the authenticator. Keep in mind, that Firebase Database and Authenticator are two different things,  you can’t connect these with each other. So if your user is creating an account in your website you should use the authenticator to authenticate their information upon login and should also store their information in a database so that you can access it in the future. And if you just want to know how will you know which user has logged in, so for that the authenticator returns a uid upon login/signup. You can use that uid to store the data of your user in the database.</p>
<p>Realtime database stores data in json format, so if you know JSON, this is a piece of cake.</p>
<p>It stores data in a tree-like structure so when you want to access the child you first have to know about the parent.</p>
<p>One of the biggest features that I see of Realtime database is when you want to perform operations offline. Yes it can do that.</p>
<p>Wanna write some code ? <a target="_blank" href="https://firebase.google.com/docs/database">Read this</a></p>
<h2 id="heading-firestore">Firestore</h2>
<p>Firestore is a cloud-hosted NoSQL database provided by Firebase. Firestore is designed to store and synchronise data for web and mobile applications. It offers a more advanced and feature-rich solution compared to the Firebase Realtime Database. Firestore offers more powerful and advanced querying and it is more scalable. And guess what it also offers real time updates like realtime database.</p>
<p><img src="https://lh5.googleusercontent.com/VGXIYhFYxjUB3EuQivYYdkQKSWKKU7gOBRBqhDNScjYmbdSG3ZdlkFLEPT05TwyuaF4DYL6Q6KWZE41eAjixJzWe7YQzsSLyWsWVLS8T6rmPzjIBGEEufUZF2n2_CfzSitqlTL6wWyaW0yeL298pYDuDrfLtGB3MH3W17VFG1GL_aCCV9OLmAUGWMPOpbg" alt /></p>
<p>Hope this helped.</p>
<p><a target="_blank" href="https://firebase.google.com/docs/firestore">Write some code</a></p>
<h2 id="heading-cloud-storage">Cloud Storage</h2>
<p>Heard of google drive? Yep that’s what cloud storage is! You can store your videos/images/audios in the cloud storage and access it whenever required. It’s basically a google cloud product to store your files. Cloud storage for firebase provide you a SDK to upload and download files directly from Cloud bucket. Cloud Storage for Firebase lets you securely upload these files directly from mobile devices and web browsers, handling spotty networks with ease.</p>
<p>In my personal opinion, this feature is easiest to integrate into your website.</p>
<p>Here are the docs: <a target="_blank" href="https://firebase.google.com/docs/storage">Storage</a></p>
<h2 id="heading-the-fancy-term">The Fancy Term</h2>
<p>Well if you don’t know Machine Learning, no worries. Firebase is here to help you.</p>
<p>Firebase ML provides developers with tools to integrate machine learning capabilities into their mobile and web applications without requiring in-depth knowledge of machine learning concepts.Whether you're new or experienced in machine learning, you can implement the functionality you need in just a few lines of code.</p>
<p>For example, You want to launch your website in china, you can’t translate your website, Firebase ML kit can.</p>
<p><strong>Features in ML Kit</strong></p>
<ul>
<li><p>Text recognition</p>
</li>
<li><p>Face detection</p>
</li>
<li><p>Barcode scanning</p>
</li>
<li><p>Model Management</p>
</li>
<li><p>Image labeling</p>
</li>
<li><p>Landmark recognition</p>
</li>
<li><p>Language detection</p>
</li>
<li><p>Smart reply</p>
</li>
<li><p>Using custom TensorFlow Lite models</p>
</li>
<li><p>On-Device and Cloud APIs</p>
</li>
</ul>
<p><a target="_blank" href="https://firebase.google.com/docs/ml">Read Docs</a></p>
<p><img src="https://lh5.googleusercontent.com/pvPQgHbdRqv2xWX2jnjjyFBdd7CKjNp_okS2hr4-M_85pVDFIPOv6Ny7Mtf51sNvtPPjbizuqnsAZCiLIJ6CzY_nkyoqKnP5F68vFaQf_H6B1LUqSXkF6ICVmGC07WIu4fasqsWoywy0jYDG9w7xCwzZdClGF-eOd6V7uHDsUujRYx8DeWMYY7i4ap3GLA" alt /></p>
<h2 id="heading-cloud-functions">Cloud Functions</h2>
<p>It’s not free.</p>
<p>Still Reading??</p>
<p>You can pay??</p>
<p>Okh okh.</p>
<p>So basically Google Cloud function is also a service of Google Cloud platform that can be used through Firebase, for example you want to send email notifications to your customers, how can you do that??</p>
<p>Yes, that’s where cloud functions are used. You can trigger Google Cloud functions whenever required and they will perform the functions for you. You just have to create functions and deploy them.</p>
<p>Here’s how you can deploy:</p>
<p><a target="_blank" href="https://firebase.google.com/docs/functions">firebase deploy --only functions</a></p>
<h2 id="heading-hosting">Hosting</h2>
<p>Firebase is a Platform that provides you hosting services for free(Yay).</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1694247703837/709b8e30-457d-412a-bfb6-9b413c557f10.jpeg" alt class="image--center mx-auto" /></p>
<p>Firebase Hosting offers developers a robust and secure platform for hosting web applications, whether they contain static or dynamic content, as well as microservices. It provides a high-quality solution for hosting web content suitable for production environments. With just a single command, you can effortlessly and rapidly deploy web applications, making them accessible through a global content delivery network. Additionally, Firebase Hosting seamlessly integrates with Cloud Functions and Cloud Run, enabling you to create and host microservices within the Firebase ecosystem.</p>
<p>In Firebase, you can host your website and you get the domain for free(Given that it is available)</p>
<p>Here's How You Can deploy your website: <a target="_blank" href="https://firebase.google.com/docs/hosting">Deploy Now</a></p>
<p>Okh, so more or less these are the features of Firebase. There are more Like :</p>
<ul>
<li><p>Performance Monitoring</p>
</li>
<li><p>Crashlytics</p>
</li>
<li><p>App Distribution</p>
</li>
<li><p>AdMob</p>
</li>
<li><p>Firebase Extensions</p>
</li>
<li><p>etc......</p>
</li>
</ul>
<p>In Conclusion, I just wanna say Firebase is cool if you want to create your backend fast and easily. You just need to know Firebase basic functions and you're good to go.</p>
<p>So what are you waiting for?</p>
<p><a target="_blank" href="https://firebase.google.com/">Get Started</a></p>
<p>I hope you enjoyed reading this blog! :)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1694248337136/390f27a0-0ee0-4b7a-8114-ecfa2efaf2ad.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-refrences">Refrences</h3>
<ul>
<li><p>Google</p>
</li>
<li><p>Chatgpt</p>
</li>
<li><p>Firebase.com</p>
</li>
<li><p>Afeef's brain</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>