<?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: Spurgeon Gnan Prakasham Tara</title>
    <description>The latest articles on DEV Community by Spurgeon Gnan Prakasham Tara (@spurgeonprakash).</description>
    <link>https://dev.to/spurgeonprakash</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%2F469241%2F5eb9cb40-ac20-4191-8753-70e53787b8cf.jpeg</url>
      <title>DEV Community: Spurgeon Gnan Prakasham Tara</title>
      <link>https://dev.to/spurgeonprakash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spurgeonprakash"/>
    <language>en</language>
    <item>
      <title>MERN (Full Stack Neon Starter kit with complete authentication) Submission for Neon Open Source Starter Kit Challenge</title>
      <dc:creator>Spurgeon Gnan Prakasham Tara</dc:creator>
      <pubDate>Sat, 31 Aug 2024 08:56:35 +0000</pubDate>
      <link>https://dev.to/spurgeonprakash/mern-full-stack-neon-starter-kit-with-complete-authentication-submission-for-neon-open-source-starter-kit-challenge-1jol</link>
      <guid>https://dev.to/spurgeonprakash/mern-full-stack-neon-starter-kit-with-complete-authentication-submission-for-neon-open-source-starter-kit-challenge-1jol</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/neon"&gt;Neon Open Source Starter Kit Challenge &lt;/a&gt;: Ultimate Starter Kit&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Kit
&lt;/h2&gt;

&lt;p&gt;This starter kit is perfect for building a TypeScript-supported MERN stack apps (MongoDB, Express, React, Node.js) using NeonDB as the database. This was my first time using NeonDB, and it was a great experience.&lt;/p&gt;

&lt;p&gt;The kit includes complete frontend and backend code with a secure authentication system. It supports login with email and password or via OAuth (Google, Facebook, GitHub, LinkedIn), using JWT access and refresh tokens stored in HTTP-only cookies. It also provides features for user verification after signup, as well as password reset and recovery. OAuth authentication is implemented from scratch without third-party packages.&lt;/p&gt;

&lt;p&gt;The frontend handles the full authentication flow with both protected and public routes, using React, Redux, React Query, and React Router DOM. The backend, powered by NeonDB (a fast and scalable PostgreSQL database), manages signup, login, OAuth flows, and password reset features, using packages like jsonwebtoken and bcryptjs.&lt;/p&gt;

&lt;p&gt;If you're looking to build a TypeScript-supported MERN stack application, I'm confident that this starter kit will become your favorite tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Kit
&lt;/h2&gt;

&lt;p&gt;Here is the &lt;a href="https://github.com/SpurgeonPrakash/MERN-Neon-Starter" rel="noopener noreferrer"&gt;Link to Repository of this Kit&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Journey
&lt;/h2&gt;

&lt;p&gt;I chose this stack because it combines some of the most popular and efficient technologies available today, providing a solid foundation for building scalable and modern web applications. The MERN stack MongoDB, Express, React, and Node.js offers a seamless JavaScript development experience from frontend to backend, making it easier to maintain and extend the application. Additionally, using TypeScript adds type safety, which helps catch errors early and improves code quality.&lt;/p&gt;

&lt;p&gt;For the database, I opted for NeonDB, a fast and scalable PostgreSQL-based solution. It offers the benefits of traditional relational databases, such as strong data consistency and support for complex queries, while also being optimized for performance and scalability, which is essential for modern applications.&lt;/p&gt;

&lt;p&gt;Throughout the process, I learned how to effectively implement secure authentication systems, including OAuth, from scratch, without relying on third-party packages. This deepened my understanding of handling JWT access and refresh tokens securely using HTTP-only cookies. I also gained experience in managing user verification, password recovery, and building robust authentication flows that are both secure and user-friendly.&lt;/p&gt;

&lt;p&gt;Using technologies like React Query and Redux for state management, I improved my skills in handling data fetching, caching, and managing application state effectively. Overall, this project provided valuable insights into building full-stack applications that are scalable, secure, and maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You
&lt;/h2&gt;

&lt;p&gt;Thanks to dev.to for introducing me to NeonDB. I’m definitely planning to use it in my production apps whenever I need a relational database.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>neonchallenge</category>
      <category>postgres</category>
      <category>database</category>
    </item>
    <item>
      <title>Photography Types</title>
      <dc:creator>Spurgeon Gnan Prakasham Tara</dc:creator>
      <pubDate>Sun, 04 Apr 2021 13:25:37 +0000</pubDate>
      <link>https://dev.to/spurgeonprakash/photography-types-29bh</link>
      <guid>https://dev.to/spurgeonprakash/photography-types-29bh</guid>
      <description>&lt;p&gt;Photography Consists of Many Types. Among Them Wild Life Photography is the one of the interesting sector in photography. In Wild Life Photography, Photographers will Take Pictures of Wild animals which lives in a Forest or Jungle to Say.&lt;/p&gt;

</description>
      <category>photography</category>
    </item>
    <item>
      <title>How to do multiple indexed MongoDB text Search</title>
      <dc:creator>Spurgeon Gnan Prakasham Tara</dc:creator>
      <pubDate>Mon, 29 Mar 2021 14:24:37 +0000</pubDate>
      <link>https://dev.to/spurgeonprakash/how-to-do-multiple-indexed-mongodb-text-search-mc7</link>
      <guid>https://dev.to/spurgeonprakash/how-to-do-multiple-indexed-mongodb-text-search-mc7</guid>
      <description>&lt;p&gt;Indexing Multiple Fields (Compound Indexing)&lt;br&gt;
More often than not, you will be using text search on multiple fields of a document. In our example, we will enable compound text indexing on the subject and content fields. Go ahead and execute the following command in mongo shell:  &lt;/p&gt;

&lt;p&gt;db.messages.createIndex({"subject":"text","content":"text"})&lt;br&gt;
Did this work? No!! Creating a second text index will give you an error message saying that a full-text search index already exists. Why is it so? The answer is that text indexes come with a limitation of only one text index per collection. Hence if you would like to create another text index, you will have to drop the existing one and recreate the new one. &lt;/p&gt;

&lt;p&gt;db.messages.dropIndex("subject_text") &lt;br&gt;
db.messages.createIndex({"subject":"text","content":"text"})&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to do a Text Search in MongoDB</title>
      <dc:creator>Spurgeon Gnan Prakasham Tara</dc:creator>
      <pubDate>Mon, 29 Mar 2021 13:53:47 +0000</pubDate>
      <link>https://dev.to/spurgeonprakash/how-to-do-a-text-search-in-mongodb-58aj</link>
      <guid>https://dev.to/spurgeonprakash/how-to-do-a-text-search-in-mongodb-58aj</guid>
      <description>&lt;p&gt;A text index is created quite similar to how we create a regular index, except that it specifies the text keyword instead of specifying an ascending/descending order.&lt;/p&gt;

&lt;p&gt;Indexing a Single Field&lt;br&gt;
Create a text index on the subject field of our document using the following query:&lt;/p&gt;

&lt;p&gt;1&lt;br&gt;
db.messages.createIndex({"subject":"text"})&lt;br&gt;
To test this newly created text index on the subject field, we will search documents using the $text operator. We will be looking for all the documents that have the keyword dogs in their subject field. &lt;/p&gt;

&lt;p&gt;Since we are running a text search, we are also interested in getting some statistics about how relevant the resultant documents are. For this purpose, we will use the { $meta: "textScore" } expression, which provides information on the processing of the $text operator. We will also sort the documents by their textScore using the sort command. A higher textScore indicates a more relevant match. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Post 4</title>
      <dc:creator>Spurgeon Gnan Prakasham Tara</dc:creator>
      <pubDate>Sun, 14 Mar 2021 13:26:25 +0000</pubDate>
      <link>https://dev.to/spurgeonprakash/post-4-2ekm</link>
      <guid>https://dev.to/spurgeonprakash/post-4-2ekm</guid>
      <description>&lt;p&gt;Post Content&lt;/p&gt;

&lt;p&gt;Post Content&lt;br&gt;
Post ContentPost ContentPost ContentvPost ContentPost ContentPost ContentPost ContentPost ContentPost ContentPost ContentPost Content&lt;/p&gt;

&lt;p&gt;Post ContentPost ContentPost ContentPost ContentPost ContentPost Content&lt;/p&gt;

&lt;p&gt;Post Content&lt;/p&gt;

&lt;p&gt;Post ContentPost ContentPost ContentPost ContentPost ContentPost Content&lt;/p&gt;

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