<?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: Shreyash Srivastava</title>
    <description>The latest articles on DEV Community by Shreyash Srivastava (@shreyashsri).</description>
    <link>https://dev.to/shreyashsri</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%2F2513333%2F3f269260-8848-464f-a5ef-d0277f51e199.png</url>
      <title>DEV Community: Shreyash Srivastava</title>
      <link>https://dev.to/shreyashsri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreyashsri"/>
    <language>en</language>
    <item>
      <title>Bad things might happen if you ignore this</title>
      <dc:creator>Shreyash Srivastava</dc:creator>
      <pubDate>Thu, 18 Sep 2025 09:37:21 +0000</pubDate>
      <link>https://dev.to/shreyashsri/bad-things-might-happen-if-you-ignore-this-4m3h</link>
      <guid>https://dev.to/shreyashsri/bad-things-might-happen-if-you-ignore-this-4m3h</guid>
      <description>&lt;h2&gt;
  
  
  Hello Everyone! 👋🏻
&lt;/h2&gt;

&lt;p&gt;I’m &lt;strong&gt;Shreyash Srivastava&lt;/strong&gt;, a 2nd year CSE student at DSCE and yes it's time for another blog. A lot of things happened in last few months, So before I begin I will just share this image here:&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%2Fjx7grgifw5f48vi6it76.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx7grgifw5f48vi6it76.jpg" alt="Foreshadowing" width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Quick Catch-Up
&lt;/h2&gt;

&lt;p&gt;I was awarded &lt;strong&gt;LiFT&lt;/strong&gt; Scholarship from &lt;strong&gt;Linux foundation&lt;/strong&gt;, was working on a project for our club (&lt;a href="https://careers.pointblank.club/" rel="noopener noreferrer"&gt;check it out!&lt;/a&gt;) also I recently got an internship at an early stage startup and got the opportunity to work with one of my seniors at &lt;a href="https://pointblank.club/" rel="noopener noreferrer"&gt;Pointblank&lt;/a&gt;.&lt;br&gt;
The company basically provides a platform for educators and students. Teachers can create assignments, activities, and other learning materials using interesting AI features like image generation, case study analysis, and presentation makers. Students can then use these materials to practice, learn, and receive personalized feedback. We also have a community page where teachers can share their creations with a wider audience.&lt;br&gt;
So, One of the first tasks that I was assigned was to implement a credit system to limit the AI usage in our product. Until then, users on any plan could use our AI features an unlimited number of times. So my job was to introduce limits to manage the usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Approach
&lt;/h2&gt;

&lt;p&gt;In order to implement this feature what I thought of was to create a tokens collections(as we were using firebase) which will consists of &lt;code&gt;userId&lt;/code&gt;, plan and the number of credits/tokens a user has.&lt;br&gt;
And created a custom hook which will check if the user has tokens to make a request and it will also help in deducting the tokens after every successful call.&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%2F9tfbloxw5z5zymjoig2w.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%2F9tfbloxw5z5zymjoig2w.png" alt="Development" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now what I did was, wherever the call to our AI service was made I added a check to see the number of tokens the user has and deducted the credits after every successful call, and wherever the function was called i made sure that it will pass the &lt;code&gt;userId&lt;/code&gt; from frontend and will authenticate the user at backend with help of that &lt;code&gt;userId&lt;/code&gt; so I can check if the user exists or has the credits or not.&lt;br&gt;
I made the changes and raised the PR to our development environment it was merged and everything was working, sounds too good right? Lol here comes the fun part....&lt;/p&gt;

&lt;h2&gt;
  
  
  The Chaos
&lt;/h2&gt;

&lt;p&gt;It was &lt;strong&gt;1:09 AM&lt;/strong&gt; in night, I was going to sleep and then I received some messages,&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%2Fm1n404w5sq0u6oamgrk2.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%2Fm1n404w5sq0u6oamgrk2.png" alt="????" width="295" height="118"&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%2F9mdjvmqlibqzshutsvmx.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%2F9mdjvmqlibqzshutsvmx.png" alt="Service down T-T" width="349" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, &lt;strong&gt;The production was down&lt;/strong&gt;. (Remember the T-shirt xD)&lt;br&gt;
So, what happened was as my senior (who was in a hackathon at that time) was busy, I myself pushed some changes to both repositories and I didn't know that We &lt;strong&gt;DO NOT&lt;/strong&gt; have development/staging branch for &lt;strong&gt;backend repository&lt;/strong&gt; and we were using this for &lt;strong&gt;both&lt;/strong&gt; production and development environment T-T.&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%2F90m23skzuul3ofegijl8.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%2F90m23skzuul3ofegijl8.png" alt="Uh-" width="800" height="1568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Issue
&lt;/h2&gt;

&lt;p&gt;As I mentioned earlier what I did was pass the &lt;code&gt;userId&lt;/code&gt; to backend in order to verify if the user exists in our database or not, right? But now as the frontend changes were not in production environment and I pushed my changes in backend it was expecting &lt;code&gt;userId&lt;/code&gt; to be passed and due to this it was unable to find the user and the entire service was down T-T&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%2Fiz774d355x8b1pescnua.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%2Fiz774d355x8b1pescnua.png" alt="Oh no-" width="800" height="2900"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Aftermath
&lt;/h2&gt;

&lt;p&gt;In order to fix this, we immediately reverted the backend changes to get the platform back online. And after a proper round of testing with both the new frontend and backend on a staging environment, we successfully rolled out the credit system.&lt;br&gt;
We also created a separate staging branch to ensure this thing never happens again. It was also a great learning experience for me as I'll never forget: &lt;strong&gt;Always Ask, Never Assume&lt;/strong&gt;. I should have confirmed once before pushing the changes.&lt;br&gt;
And after that everything went fine, it was all good and happy. &lt;br&gt;
(I again crashed prod after two days as I forgot to create token documents for existing users in production database)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>react</category>
      <category>career</category>
    </item>
    <item>
      <title>Swagger? What’s that?</title>
      <dc:creator>Shreyash Srivastava</dc:creator>
      <pubDate>Fri, 25 Apr 2025 06:47:41 +0000</pubDate>
      <link>https://dev.to/shreyashsri/swagger-whats-that-1c5m</link>
      <guid>https://dev.to/shreyashsri/swagger-whats-that-1c5m</guid>
      <description>&lt;h2&gt;
  
  
  Hello Everyone! 👋🏻
&lt;/h2&gt;

&lt;p&gt;I’m Shreyash Srivastava, a 1st-year CSE student at DSCE and I’m back again with a new blog! (You can also check my previous one here)&lt;/p&gt;

&lt;p&gt;So the main inspiration behind this blog was I recently worked on an issue with a friend of mine, which was a new one for us so I wanted to share my experience and how I was able to solve it ! (Also my first sem just ended and I was free :P). Let’s begin…&lt;/p&gt;

&lt;p&gt;Documenting APIs is one of the most important aspects of building scalable and maintainable web applications. Recently, We were given a task of adding Swagger documentation to a &lt;a href="https://pointblank.club" rel="noopener noreferrer"&gt;Next.js website&lt;/a&gt;. And before that we need to know some basics:&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an API?
&lt;/h2&gt;

&lt;p&gt;At its core, an API (Application Programming Interface) is a set of rules that allows different software applications to communicate with one another. It defines how data is exchanged between systems, including the methods used to request and send data. APIs are crucial in modern web development, allowing services to interact with each other seamlessly.&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%2Fqu2jvqrbymij2ubl57jl.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%2Fqu2jvqrbymij2ubl57jl.png" alt="API" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are API Endpoints?
&lt;/h2&gt;

&lt;p&gt;API endpoints are like doorways through which we access various functionalities within an API. Each endpoint corresponds to a specific URL that serves a particular function or resource. For instance, in a blogging platform, your API might have these endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /posts&lt;/code&gt; – Retrieve a list of all blog posts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /posts&lt;/code&gt; – Create a new blog post&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /posts/{id}&lt;/code&gt; – Fetch a specific blog post by ID
Endpoints are the building blocks of an API, and documenting them is critical for ensuring other developers can use your API effectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Swagger?
&lt;/h2&gt;

&lt;p&gt;Swagger is an open-source framework designed for building and documenting RESTful APIs. It gives us a user-friendly interface to visualize and interact with our API endpoints. Swagger documentation is usually written in the OpenAPI Specification (previously known as Swagger Specification), a standardized format for describing REST APIs.&lt;/p&gt;

&lt;p&gt;With Swagger, we can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically generate comprehensive API documentation.&lt;/li&gt;
&lt;li&gt;Test API endpoints directly from the documentation.&lt;/li&gt;
&lt;li&gt;Share API specifications with your team or external developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Swagger documentation is essential for a few key reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For API Consumers:&lt;/strong&gt; Developers can easily understand how to use your API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For Testing:&lt;/strong&gt; You can test your endpoints directly from the documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For Maintainability:&lt;/strong&gt; Keeping your API documentation updated is much simpler with Swagger.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Add Swagger in Next.js
&lt;/h2&gt;

&lt;p&gt;Next.js is a powerful React framework for building server-rendered applications. Adding Swagger to a Next.js app involves a few steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing necessary dependencies&lt;/li&gt;
&lt;li&gt;Adding Swagger annotations to your API routes&lt;/li&gt;
&lt;li&gt;Generating a Swagger JSON file&lt;/li&gt;
&lt;li&gt;Setting up middleware or a library to serve the Swagger UI&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Our Process: Adding Comments and Creating a swagger.ts File
&lt;/h2&gt;

&lt;p&gt;The first thing was adding JSDoc comments to all the API routes. These comments describe the purpose, parameters, and responses for each endpoint. For instance, in this &lt;code&gt;route.ts&lt;/code&gt; file for the &lt;code&gt;/api/members&lt;/code&gt; endpoint, my friend added the Swagger annotations like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/**
 * @swagger
 * /api/members:
 *   get:
 *     summary: Retrieve all members
 *     description: Fetches all members from the database and returns their details.
 *     tags:
 *      - Members
 *     responses:
 *       200:
 *         description: A list of all members
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 type: object
 *                 properties:
 *                   id:
 *                     type: string
 *                   name:
 *                     type: string
 *                   role:
 *                     type: string
 *                   company:
 *                     type: string
 *                   year:
 *                     type: string
 *                   linkedInUrl:
 *                     type: string
 *                   imageUrl:
 *                     type: string
 *       500:
 *         description: Internal server error
 */
export async function GET() {
  // Implementation here...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the comments were to all the routes, we need to consolidated the Swagger definitions into a single swagger.ts file. I used the next-swagger-doc library to generate the Swagger specification like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { createSwaggerSpec } from 'next-swagger-doc';
export const swaggerOptions = {
  definition: {
    openapi: '3.0.0',
    info: {
      title: 'Next.js API Documentation',
      version: '1.0.0',
      description: 'API documentation for the application endpoints',
    },
    servers: [
      { url: 'http://localhost:3000', description: 'Development server' },
    ],
    tags: [
      { name: 'Members', description: 'Member data management endpoints' },
      //all the tags should be added here...............    
],
  },
  apis: ['./app/(default)/api/members/route.ts'],
      //all the apis used........
};
export const getApiDocs = async () =&amp;gt; {
  return createSwaggerSpec(swaggerOptions);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this file, I set up the basic structure for the Swagger documentation — such as the API title, version, and server URL — and pointed to the locations of the API routes with Swagger annotations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Middleware Solution
&lt;/h2&gt;

&lt;p&gt;Now, here’s where things got tricky. Next.js doesn’t natively serve Swagger documentation out of the box. I needed to find a way to expose the Swagger JSON file through an endpoint like &lt;code&gt;/api/docs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To solve this, I created a &lt;code&gt;route.ts&lt;/code&gt; file that generates and serves the Swagger JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { getApiDocs } from '@/lib/swagger';
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
  try {
    const spec = await getApiDocs();
    return NextResponse.json(spec, {
      headers: {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
      },
    });
  } catch (error) {
    console.error('Error generating API docs:', error);
    return NextResponse.json(
      { error: 'Failed to generate API documentation' },
      { status: 500 }
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The middleware makes sure that the Swagger JSON is available at the &lt;code&gt;/api/docs&lt;/code&gt; endpoint. But I ran into a CORS issue while trying to access the Swagger JSON. To fix this, I created a middleware that sets the correct headers for CORS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
  if (request.nextUrl.pathname === '/api/docs') {
    return NextResponse.next({
      headers: {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
      },
    });
  }
  return NextResponse.next();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, the &lt;code&gt;/api/docs&lt;/code&gt; route was working fine, and I was able to handle cross-origin requests without issues.&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%2Fig0pr65vlaayh8arvi46.webp" 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%2Fig0pr65vlaayh8arvi46.webp" alt="JSON" width="728" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Displaying API Endpoints as JSON
&lt;/h2&gt;

&lt;p&gt;After setting up the middleware, visiting &lt;code&gt;/api/docs&lt;/code&gt; returned the Swagger JSON. This JSON followed the OpenAPI Specification and contained all the details I had defined in the JSDoc comments. It became the foundation for generating a Swagger UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Everything with &lt;code&gt;next-swagger&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Next, I wanted to make the Swagger documentation more interactive and visually appealing. I used the next-swagger module, which wraps the Swagger JSON and provides a beautiful, interactive UI for the documentation.&lt;/p&gt;

&lt;p&gt;Here’s how I set it up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the library:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install next-swagger
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create a Dynamic Swagger UI Component&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since the &lt;code&gt;swagger-ui-react&lt;/code&gt; library is not compatible with server-side rendering (SSR), I used dynamic imports to load the &lt;code&gt;SwaggerUI&lt;/code&gt;component only on the client side. Here’s how I did it in the &lt;code&gt;page.tsx&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const SwaggerUI = dynamic(() =&amp;gt; import("swagger-ui-react"), {
  ssr: false,
  loading: () =&amp;gt; &amp;lt;p&amp;gt;Loading API Documentation...&amp;lt;/p&amp;gt;,
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Fetch Swagger JSON and Render the UI&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the &lt;code&gt;page.tsx&lt;/code&gt; file, I fetched the Swagger JSON from the &lt;code&gt;/api/docs&lt;/code&gt; endpoint and rendered it using the &lt;code&gt;SwaggerUI&lt;/code&gt; component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default function ApiDoc() {
  const [swaggerConfig, setSwaggerConfig] = useState&amp;lt;any&amp;gt;(null);
  useEffect(() =&amp;gt; {
    fetch("/api/docs")
      .then((res) =&amp;gt; res.json())
      .then((data) =&amp;gt; setSwaggerConfig(data));
  }, []);
  if (!swaggerConfig) return &amp;lt;p&amp;gt;Loading API documentation...&amp;lt;/p&amp;gt;;
  return (
    &amp;lt;div className="swagger-wrapper"&amp;gt;
      &amp;lt;SwaggerUI spec={swaggerConfig} /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, visiting &lt;code&gt;/swagger&lt;/code&gt; would display an interactive Swagger UI, allowing users to explore and test the API endpoints right from the documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating &lt;code&gt;layout.tsx&lt;/code&gt; for Swagger UI
&lt;/h2&gt;

&lt;p&gt;To render the Swagger UI within the Next.js app.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;layout.tsx&lt;/code&gt; to define the layout:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default function SwaggerLayout({ children }: { children: React.ReactNode }) {
  return (
    &amp;lt;html&amp;gt;
      &amp;lt;body style={{ margin: 0, padding: 0 }}&amp;gt;{children}&amp;lt;/body&amp;gt;
    &amp;lt;/html&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With these files, the Swagger documentation was neatly integrated into the Next.js app, providing a polished, user-friendly experience for API consumers.&lt;/p&gt;

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

&lt;p&gt;Adding Swagger documentation to the website was a rewarding experience. It not only made the code more maintainable but also made it easier for other developers to understand and use the APIs. Here’s a quick recap of what we did:&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%2F43dyess9g8e36cr691mr.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%2F43dyess9g8e36cr691mr.png" alt="Steps" width="234" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re working on a Next.js project, I highly recommend integrating Swagger documentation. It’s a small effort that can go a long way in making your API more usable and easier to maintain. Happy coding!&lt;/p&gt;

&lt;p&gt;Feel free to share your thoughts or questions in the comments below. If you’ve already added Swagger to your project, I’d love to hear about your experience!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>typescript</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>My Experience Participating in KWoC</title>
      <dc:creator>Shreyash Srivastava</dc:creator>
      <pubDate>Fri, 25 Apr 2025 06:16:24 +0000</pubDate>
      <link>https://dev.to/shreyashsri/my-experience-participating-in-kwoc-3dac</link>
      <guid>https://dev.to/shreyashsri/my-experience-participating-in-kwoc-3dac</guid>
      <description>&lt;h2&gt;
  
  
  Hello Everyone! 👋🏻
&lt;/h2&gt;

&lt;p&gt;I’m Shreyash Srivastava, a 1st-year CSE student at DSCE. This is my first blog. So, here’s the thing: I participated in Kharagpur Winter of Code and it was such great experience that I wanted to share it.&lt;/p&gt;

&lt;p&gt;The idea for this blog came to me as I saw my seniors writing blogs about the things they are doing and as it was important for KWoC, So here it is:&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction to KWoC
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://kwoc.kossiitkgp.org/" rel="noopener noreferrer"&gt;Kharagpur Winter of Code (KWoC)&lt;/a&gt; is a 5-week long online program for students who are new to open source software development. The program not only helps students to get involved in open source, but also prepares them for many open source summer programs; Google Summer of Code being one of them.&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%2F4002z6fucok1np2eb2jb.webp" 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%2F4002z6fucok1np2eb2jb.webp" alt="KWoC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a Project
&lt;/h2&gt;

&lt;p&gt;The first step in KWoC was to explore the list of projects. The variety was overwhelming, ranging from web development to kernel systems and everything in between. I chose a web development project as I already had some experience in this field.&lt;/p&gt;

&lt;h2&gt;
  
  
  Projects worked on:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://eventica.netlify.app/" rel="noopener noreferrer"&gt;&lt;em&gt;Eventica&lt;/em&gt;&lt;br&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%2F3b9o1lxr0b0h01nrc6wh.webp" 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%2F3b9o1lxr0b0h01nrc6wh.webp" alt="Eventica"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  First Steps and Challenges
&lt;/h2&gt;

&lt;p&gt;Starting with an open-source project can be intimidating. The first task was to set up the development environment and understand the codebase. This involved reading the documentation, exploring the project’s structure, and sometimes even fixing setup-related issues.&lt;/p&gt;
&lt;h2&gt;
  
  
  Learnings
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Version Control:&lt;/strong&gt; Gained proficiency in Git and GitHub, learning how to manage branches, resolve conflicts, and contribute via pull requests, which made collaborating on open-source projects seamless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication:&lt;/strong&gt; Improved my ability to frame technical problems and solutions clearly, enabling better collaboration with mentors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem-Solving:&lt;/strong&gt; Enhanced my debugging skills, learning to approach and resolve issues methodically and creatively across different aspects of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt; Deepened my understanding of CSS, including using variables for consistent design, applying animations, and enhancing user interfaces with shadows to create a polished look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsive Design:&lt;/strong&gt; Mastered the use of media queries to ensure websites adapt to various screen sizes, improving user experience across devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt; Strengthened my JavaScript skills, particularly in handling interactive elements like toggling menus and other user interactions efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-Source Workflow:&lt;/strong&gt; Learned the full open-source contribution process, from identifying issues to submitting pull requests, giving me insight into how collaborative development works in real-world projects.&lt;/p&gt;
&lt;h2&gt;
  
  
  Pull Requests and Issues Worked On
&lt;/h2&gt;

&lt;p&gt;PRs Raised: 3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Issues Worked On:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enhancing Send Message Button:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The website had a theme switcher feature, but the send message button was not following it. I fixed this by adding var( — primary-color) to ensure consistency and further enhanced the button with shadows and click animations. Working on this issue as my first PR introduced me to the workflow of using Git and GitHub effectively, including creating branches, committing changes, and submitting a pull request.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/Rakesh9100/Eventica/pull/18" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Enhanced the send message button
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#18&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F124454629%3Fv%3D4" alt="ShreyashSri avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;ShreyashSri&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/Rakesh9100/Eventica/pull/18" rel="noopener noreferrer"&gt;&lt;time&gt;Dec 17, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Fixes Issue🛠️&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Closes #15&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Description👨‍💻&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Modified the Send message button on Contact Us page&lt;/li&gt;
&lt;li&gt;Send message button now follows the website theme&lt;/li&gt;
&lt;li&gt;Added transition on hover and clicks&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Type of Change📄&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] Style (non-breaking change which improves website style or formatting)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Checklist✅&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] I am an Open Source contributor&lt;/li&gt;
&lt;li&gt;[x] I have performed a self-review of my code&lt;/li&gt;
&lt;li&gt;[x] My code follows the style guidelines of this project&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Screenshots/GIF📷&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/a2019667-3b91-4c7e-be3f-2f4e56b4de19" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/a2019667-3b91-4c7e-be3f-2f4e56b4de19&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Rakesh9100/Eventica/pull/18" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Making the Website Fully Responsive:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The website’s containers were messy on smaller devices, and the header would lose its fixed position. I resolved this by adding a hamburger menu for navigation on smaller screens and used the &lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; tag for responsiveness. Also implemented JavaScript to enhance the interactivity of the hamburger menu. This PR taught me the importance of responsive design and how to debug layout issues efficiently.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/Rakesh9100/Eventica/pull/24" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Made the website fully responsive
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#24&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F124454629%3Fv%3D4" alt="ShreyashSri avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;ShreyashSri&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/Rakesh9100/Eventica/pull/24" rel="noopener noreferrer"&gt;&lt;time&gt;Dec 25, 2024&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Fixes Issue🛠️&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Closes #1&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Description👨‍💻&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Implemented responsive design for improved user experience on various devices&lt;/li&gt;
&lt;li&gt;Fixed issues with navigation bar overlapping&lt;/li&gt;
&lt;li&gt;Added navigation button for smaller devices&lt;/li&gt;
&lt;li&gt;Fixed the issue with about page content coming out of container&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Type of Change📄&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] Style (non-breaking change which improves website style or formatting)&lt;/li&gt;
&lt;li&gt;[x] Responsiveness (non-breaking change which improves UI/UX on different screen sizes)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Checklist✅&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] I am an Open Source contributor&lt;/li&gt;
&lt;li&gt;[x] I have performed a self-review of my code&lt;/li&gt;
&lt;li&gt;[x] My code follows the style guidelines of this project&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Screenshots/GIF📷&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Before&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/00bec4e3-7295-48de-9206-ecb4b5a824eb" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/00bec4e3-7295-48de-9206-ecb4b5a824eb&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;After&lt;/h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt; 
&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/1d62a81b-7d10-48f8-ba8f-a7b2ded5e23c" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/1d62a81b-7d10-48f8-ba8f-a7b2ded5e23c&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Rakesh9100/Eventica/pull/24" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Fixing the Hamburger Icon Not Showing Close Button:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The hamburger icon didn’t had a close button, which created confusion for users. I addressed this by adding a close button to the menu and writing JavaScript to close the menu when users clicked the button or anywhere outside the menu. This PR highlighted the importance of user-friendly interfaces and handling edge cases in functionality.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/Rakesh9100/Eventica/pull/68" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Fixed the hamburger icon not showing close button
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#68&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F124454629%3Fv%3D4" alt="ShreyashSri avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/ShreyashSri" rel="noopener noreferrer"&gt;ShreyashSri&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/Rakesh9100/Eventica/pull/68" rel="noopener noreferrer"&gt;&lt;time&gt;Jan 14, 2025&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Fixes Issue🛠️&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Closes #17&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Description👨‍💻&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Added close button for hamburger icon&lt;/li&gt;
&lt;li&gt;Enhanced the hamburger menu by adding animation like slide-in&lt;/li&gt;
&lt;li&gt;Fixed issue with hamburger not closing on clicking outside&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Type of Change📄&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] Bug fix (non-breaking change which fixes a bug)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Checklist✅&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[x] I am an Open Source contributor&lt;/li&gt;
&lt;li&gt;[x] I have performed a self-review of my code&lt;/li&gt;
&lt;li&gt;[x] My code follows the style guidelines of this project&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Screenshots/GIF📷&lt;/h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Before:&lt;/h3&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/user-attachments/assets/84bc577d-c36d-470b-a072-997de50f5185"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F84bc577d-c36d-470b-a072-997de50f5185" alt="Screenshot 2025-01-14 130508"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;After:&lt;/h3&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/user-attachments/assets/c98fb30c-67e0-4961-83c8-3183a3870165"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc98fb30c-67e0-4961-83c8-3183a3870165" alt="Screenshot 2025-01-14 130426"&gt;&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Rakesh9100/Eventica/pull/68" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  The Community and Support
&lt;/h2&gt;

&lt;p&gt;One of the highlights of KWoC was the community. The mentors were incredibly supportive and patient, guiding us through the process without making us feel overwhelmed. Fellow participants were equally enthusiastic, and the collaborative environment made the experience enjoyable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;Participating in KWoC was a transformative experience. It not only enhanced my technical skills but also boosted my confidence in contributing to open source. I learnt the way of communicating with mentors and all the people associated with this.&lt;/p&gt;

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

&lt;p&gt;KWoC is more than just a coding program; it’s a platform to grow, learn, and connect with like-minded individuals. If you’re passionate about coding and eager to explore open-source, I highly recommend participating in KWoC. It’s an experience you’ll cherish for a lifetime!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kwoc</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
