<?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: Zende Aditya</title>
    <description>The latest articles on DEV Community by Zende Aditya (@zendeaditya).</description>
    <link>https://dev.to/zendeaditya</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%2F915870%2F32d4c23a-6e1f-46a5-8139-280a138816dc.jpeg</url>
      <title>DEV Community: Zende Aditya</title>
      <link>https://dev.to/zendeaditya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zendeaditya"/>
    <language>en</language>
    <item>
      <title>What is GraphQL - Day 3 Of #100DaysOfFullStackChallnege</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Mon, 05 Aug 2024 17:12:57 +0000</pubDate>
      <link>https://dev.to/zendeaditya/what-is-graphql-day-3-of-100daysoffullstackchallnege-1am1</link>
      <guid>https://dev.to/zendeaditya/what-is-graphql-day-3-of-100daysoffullstackchallnege-1am1</guid>
      <description>&lt;p&gt;Today's blog is about a graphql. what is graphql? why it is so popular? And How to use Next.js.&lt;/p&gt;

&lt;p&gt;Let's understand what is graphql.&lt;/p&gt;

&lt;p&gt;Graphql is an open-source alternative to REST APIs. Graphql has been created and maintained by Facebook since 2012.&lt;/p&gt;

&lt;p&gt;GraphQL is a query language for APIs and a runtime for executing those queries by using a type system you define for your data. It provides a more efficient, powerful, and flexible alternative to REST.&lt;/p&gt;

&lt;p&gt;What is the exact problem how does graphql solve it?&lt;/p&gt;

&lt;p&gt;Imagine you are working on a recipe-sharing project and you want to display an image, title, and author name on the recipe card. Traditionally, when you hit the API request to get the data, it might fetch all the data related to the recipe, including unused fields like detailed instructions, ingredients, and timestamps. This leads to over-fetching, where more data than necessary is retrieved, making the application slower and less efficient.&lt;/p&gt;

&lt;p&gt;Here, GraphQL comes into the picture and solves this problem. With GraphQL, you can specify exactly which fields you want to retrieve in your query. This gives you the freedom to fetch only the required data, improving efficiency and performance.&lt;/p&gt;

&lt;p&gt;Let's see how graphql solves this problem and what is the syntax of graphql Before that let's understand some of the key concepts of graphql.&lt;/p&gt;

&lt;p&gt;Here is the list of common concepts in Graphql&lt;/p&gt;

&lt;p&gt;Schema: Defines the structure of your data and the queries/mutations you can perform.&lt;/p&gt;

&lt;p&gt;Query: Used to fetch data.&lt;/p&gt;

&lt;p&gt;Mutation: Used to modify data&lt;/p&gt;

&lt;p&gt;Resolver: Functions that resolve a value for a type or field in the schema.&lt;/p&gt;

&lt;p&gt;Types: Define the shape of data (e.g., Recipe, Author).&lt;/p&gt;

&lt;p&gt;To understand the graphql concepts better I created a project Recipe Haven 🍲&lt;/p&gt;

&lt;p&gt;Where you can list the recipe you want and you can read, update, create, and delete the recipe. you can perform the total Recipe Haven 🍲 operations.&lt;/p&gt;

&lt;p&gt;Here is the project structure,&lt;/p&gt;

&lt;p&gt;So, here is the schema I defined for this project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import { pgTable, serial, text, timestamp, integer, date, pgTableCreator, pgEnum } from "drizzle-orm/pg-core";
import { InferInsertModel } from "drizzle-orm"

export const createTable = pgTableCreator(
    (name) =&amp;gt; `nomad_competition_${name}`,
);
export const MealTypeEnum = pgEnum('meal_type', ['breakfast', 'lunch', 'dinner', 'dessert']);

export const recipeTable = pgTable("recipes", {
    id: serial("id").primaryKey(),
    name: text("name").notNull(),
    description: text("description").notNull(),  
    instructions: text("instructions").notNull(),
    createdAt: date("created_at").notNull().defaultNow(),
    category: text("category")  
});

export const categoriesTable = pgTable("categories", {
    id: serial("id").primaryKey(),
    type: MealTypeEnum("type").notNull()
});

export const recipeCategoriesTable = pgTable("recipe_categories", {
    id: serial("id").primaryKey(),
    recipeId: integer("recipe_id").references(() =&amp;gt; recipeTable.id),
    categoryId: integer("category_id").references(() =&amp;gt; categoriesTable.id),
});

export type RecipeTable = InferInsertModel&amp;lt;typeof recipeTable&amp;gt;;
export type CategoriesTable = InferInsertModel&amp;lt;typeof categoriesTable&amp;gt;;
export type RecipeCategoriesTable = InferInsertModel&amp;lt;typeof recipeCategoriesTable&amp;gt;;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So I created three tables for this project.&lt;/p&gt;

&lt;p&gt;I created a different folder to store all the files related a graphql&lt;/p&gt;

&lt;p&gt;Let's go through each file and understand the code.&lt;/p&gt;

&lt;p&gt;First, let's see the code to set up a graphql server with an Apollo server. Inside the src/app a folder, I created another folder graphql you can name whatever you want. inside the graphql folder create a file name route.ts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import { ApolloServer, } from "@apollo/server";
import { startServerAndCreateNextHandler } from '@as-integrations/next';
import { typeDefs } from "../../../../graphql/typeDef";
import { resolvers } from "../../../../graphql/resolvers";

const server = new ApolloServer({ typeDefs, resolvers });

const handler = startServerAndCreateNextHandler(server);

export { handler as GET, handler as POST };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this folder, I imported both the typeDefs &amp;amp; resolvers and set up an ApolloServer. you can check out the code above.&lt;/p&gt;

&lt;p&gt;What is typeDefs in Graphql?&lt;/p&gt;

&lt;p&gt;In GraphQL, typeDefs (short for type definitions) are a crucial part of defining your GraphQL schema. They describe the types of data your GraphQL API can return, the structure of those types, and the available queries and mutations.&lt;/p&gt;

&lt;p&gt;Here are important components of TypeDefs&lt;/p&gt;

&lt;p&gt;Types: Define the shape of your data.&lt;/p&gt;

&lt;p&gt;Queries: Define the read operations.&lt;/p&gt;

&lt;p&gt;Mutations: Define the write operations.&lt;/p&gt;

&lt;p&gt;Here are the typeDefs defined for our project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import { gql } from "@apollo/client"
export const typeDefs = gql`
    type Recipe {
        id: ID!
        name: String
        instructions: String
        description: String
        createdAt: String
        category: String
    }

    type Query { 
        getAllRecipes: [Recipe!]
        recipeByName(name: String!): [Recipe!]
        recipesByCategory(category: String!): [Recipe!]
    }

    type Mutation {
        createRecipe(id: ID, name: String, instructions: String, description: String, createdAt: String, category: String): Recipe
        updateRecipe(id: ID, name: String, instructions: String, description: String, createdAt: String, category: String): Recipe
        deleteRecipe(id: ID!): Recipe
    }
`;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gql is used for the syntax highlighting inside the typeDefs. So let me explain what I write for this project.&lt;/p&gt;

&lt;p&gt;Types:&lt;/p&gt;

&lt;p&gt;Recipe: Represents a recipe with various fields like id, title, image, author, instructions, ingredients, and createdAt.&lt;/p&gt;

&lt;p&gt;Queries:&lt;/p&gt;

&lt;p&gt;recipeByName(name: String!): Fetches a single recipe by its name.&lt;/p&gt;

&lt;p&gt;getAllRecipes: Fetches all recipes.&lt;/p&gt;

&lt;p&gt;recipesByCategory: Get recipes by category name.&lt;/p&gt;

&lt;p&gt;Mutations:&lt;/p&gt;

&lt;p&gt;createRecipe: Creates a new recipe with the specified fields.&lt;/p&gt;

&lt;p&gt;updateRecipe: Updates an existing recipe identified by id.&lt;/p&gt;

&lt;p&gt;deleteRecipe: Deletes a recipe by id and returns a boolean indicating success.&lt;/p&gt;

&lt;p&gt;Mutations are more or less Database functions that perform for the different operations.&lt;/p&gt;

&lt;p&gt;Here is the whole code for the mutations :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import { gql } from "@apollo/client"
import { db } from "../lib/db/dbconnect"
import { recipeTable } from "../lib/db/schema"
import { eq } from "drizzle-orm";


export const mutation = {
    createRecipe: async (parent: any, args: any) =&amp;gt; {
        const { id, name, instructions, description, createdAt, category } = args;
        if (!instructions) {
            throw new Error("Instructions are required.");
        }
        const newRecipe = await db.insert(recipeTable).values({
            id,
            name,
            instructions,
            description,
            createdAt,
            category,
        }).returning();

        return newRecipe[0];
    },
    updateRecipe: async (parent: any, args: any) =&amp;gt; {
        const { id, name, instructions, description, createdAt, category } = args;
        console.log('Updating recipe with ID:', id);
        console.log('New values:', { name, instructions, description, createdAt, category });

        const updatedRecipe = await db.update(recipeTable)
            .set({
                name,
                instructions,
                description,
                createdAt,
                category
            })
            .where(eq(recipeTable.id, id)).returning();

        if (updatedRecipe.length === 0) {
            throw new Error("Recipe not found or no changes made.");
        }

        return updatedRecipe[0];
    },
    deleteRecipe: async (parent: any, args: any) =&amp;gt; {
        const { id } = args;
        const deletedRecipe = await db.delete(recipeTable)
            .where(eq(recipeTable.id, id))
            .returning();

        if (deletedRecipe.length === 0) {
            throw new Error("Recipe not found or could not be deleted.");
        }

        return deletedRecipe[0];
    },
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this project, I use the Postgres database so the syntax is like that.&lt;/p&gt;

&lt;p&gt;Here is a detailed description of what this mutation does:&lt;/p&gt;

&lt;p&gt;createRecipe:&lt;/p&gt;

&lt;p&gt;Inserts a new recipe into the database with the provided details.&lt;/p&gt;

&lt;p&gt;Returns the newly created recipe.&lt;/p&gt;

&lt;p&gt;updateRecipe:&lt;/p&gt;

&lt;p&gt;Updates an existing recipe in the database based on the given id and new details.&lt;/p&gt;

&lt;p&gt;Returns the updated recipe or throws an error if no changes were made.&lt;/p&gt;

&lt;p&gt;deleteRecipe:&lt;/p&gt;

&lt;p&gt;Deletes a recipe from the database identified by the given id.&lt;/p&gt;

&lt;p&gt;Returns the deleted recipe or throws an error if the recipe was not found.&lt;/p&gt;

&lt;p&gt;Then let's look at the queries that&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { eq } from "drizzle-orm";
import { db } from "../lib/db/dbconnect";
import { recipeTable } from "../lib/db/schema";


export const queries = {
    getAllRecipes: async () =&amp;gt; db.select().from(recipeTable).execute(),

    recipeByName: async (parent: any, args: any) =&amp;gt; {
        const { name } = args;
        return db.select().from(recipeTable).where(eq(recipeTable.name, name)).execute();
    },
    recipesByCategory: async (parent: any, args: any) =&amp;gt; {
        const { category } = args;
        console.log(category);
        return db.select().from(recipeTable).where(eq(recipeTable.category, category)).execute();
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here are concise descriptions for each query:&lt;/p&gt;

&lt;p&gt;getAllRecipes:&lt;/p&gt;

&lt;p&gt;Fetches all recipes from the database.&lt;/p&gt;

&lt;p&gt;Returns an array of recipe objects.&lt;/p&gt;

&lt;p&gt;recipeByName:&lt;/p&gt;

&lt;p&gt;Fetches recipes from the database that match the provided name.&lt;/p&gt;

&lt;p&gt;Returns an array of matching recipe objects.&lt;/p&gt;

&lt;p&gt;recipesByCategory:&lt;/p&gt;

&lt;p&gt;Fetches recipes from the database that belong to the specified category.&lt;/p&gt;

&lt;p&gt;Returns an array of matching recipe objects.&lt;/p&gt;

&lt;p&gt;let's look at the resolvers,&lt;/p&gt;

&lt;p&gt;import { mutation } from "./mutation";&lt;br&gt;
import { queries } from "./quries";&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const resolvers = {
    Query: {
        ...queries,
    },
    Mutation: {
        ...mutation,
    }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a good project structure, I defined Query &amp;amp; Mutation in different files.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;In this tutorial, we've explored how GraphQL can be a powerful tool for optimizing your API interactions by allowing clients to specify exactly what data they need. Using our recipe-sharing project as an example, we saw how to define typeDefs for our schema, implement resolvers for queries and mutations, and handle complex relationships like recipes and their categories.&lt;/p&gt;

&lt;p&gt;GraphQL's flexibility and efficiency make it an excellent choice for modern web applications, especially when working with data-intensive projects. By leveraging GraphQL, you can build APIs that are both robust and performant, providing a better experience for both developers and users.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>api</category>
    </item>
    <item>
      <title>What is Docker? - Day 3 Of #100DaysOfFullStackChallnege</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Thu, 11 Jul 2024 17:27:53 +0000</pubDate>
      <link>https://dev.to/zendeaditya/what-is-docker-day-3-of-100daysoffullstackchallnege-2igo</link>
      <guid>https://dev.to/zendeaditya/what-is-docker-day-3-of-100daysoffullstackchallnege-2igo</guid>
      <description>&lt;p&gt;This Blog is about the basics of Docker. &lt;br&gt;
What is Docker? &lt;/p&gt;

&lt;p&gt;So, let's start,&lt;br&gt;
*&lt;em&gt;## What is Docker? *&lt;/em&gt;&lt;br&gt;
Docker is a Platform as a Service. (PaaS). The main use case of docker is to containerization of the app. &lt;/p&gt;

&lt;p&gt;There are two main components of Docker&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Docker Image.&lt;/li&gt;
&lt;li&gt;Docker Container.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Docker Image&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Docker Image is a stand-alone executable package that contains all of the components required to run a piece of software, including the code, a runtime, libraries, environment variables, and configuration files is called a Docker image.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Docker Container&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Docker Container is a runtime instance of an image. Containers make development and deployment more efficient since they contain all the dependencies and parameters needed for the application it runs completely isolated from the host environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to build a Docker Image&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To create a Docker Image you need to create a &lt;code&gt;dockerfile&lt;/code&gt; file in your project root directory. Make sure you use the same name and this does not have any extension. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9448c5na3cgatu0gkplh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9448c5na3cgatu0gkplh.png" alt="dockerfile img"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;There are several dockerfile commands &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. FROM [:]&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Specifies the base image to use for the subsequent instructions. The base image can be any valid Docker image, including OS images like &lt;code&gt;alpine&lt;/code&gt; and &lt;code&gt;Ubuntu&lt;/code&gt;, or application-specific images like &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;This is the command that is executed first before any other commands.&lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
FROM &lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;FROM node:latest&lt;/code&gt;. You can write like &lt;code&gt;FROM node:vesion_you_want&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ** 2. RUN**
&lt;/h2&gt;

&lt;p&gt;Executes a command in a new layer on top of the current image and commits the result. Commonly used for installing dependencies.&lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
RUN &amp;lt; Command + ARGS&amp;gt;&lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;RUN apt-get update &amp;amp;&amp;amp; apt-get install -y curl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command will update the package list and install curl in the image.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. COPY&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This command is used to copy the file or a folder while creating a docker image.&lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
COPY  &lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;COPY . /app&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;you can write &lt;br&gt;
&lt;code&gt;COPY . .&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. ADD&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We can download the files while creating a image &lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
ADD &lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;ADD https://example.com/file.tar.gz /app/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Downloads a file from the given URL and extracts it into the /app/ directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. WORKDIR&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Sets the working directory for any subsequent RUN, CMD, ENTRYPOINT, COPY, and ADD instructions.&lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
WORKDIR &lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;WORKDIR /src&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Changes the working directory to /src &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. CMD&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The main purpose of the CMD command is to start the process inside the container and it can be overridden.&lt;/p&gt;

&lt;p&gt;Syntax : &lt;br&gt;
CMD ["executable","param1","param2"]&lt;/p&gt;

&lt;p&gt;Example : &lt;br&gt;
&lt;code&gt;CMD ["node", "index.js"]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Specifies that node index.js should be run when a container is started from the image.&lt;/p&gt;

&lt;p&gt;This is how dockerfile look like &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

# Use an official Node.js image as the base image
FROM node:14

# Set environment variables
ENV NODE_ENV=production

# Create and change to the app directory
WORKDIR /usr/src/app

# Copy application dependency manifests to the container image
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the local code to the container image
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Define the default command to run the app
CMD ["node", "index.js"]



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.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%2Frpmaixkf4j3m0zn42v82.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Frpmaixkf4j3m0zn42v82.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all for today!&lt;/p&gt;

&lt;p&gt;Thank you for joining me on this journey through the 100 Days Full Stack Challenge. Each day brings new insights, challenges, and opportunities for growth, and I'm thrilled to share every step with you. Your support and feedback mean the world to me, and I'm excited to continue building and learning together. 🚀&lt;/p&gt;

&lt;p&gt;Don't forget to follow my progress on my personal website and stay connected on &lt;a href="https://dev.to/zendeaditya"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://medium.com/@adityazende" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, and &lt;a href="https://hashnode.com/@adityazende01" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;. Let's keep pushing the boundaries of what's possible in web development! 🌐💻&lt;/p&gt;

&lt;p&gt;Until next time, keep coding, keep creating, and keep pushing forward. 💪✨&lt;/p&gt;

</description>
      <category>docker</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Exploring the concept of the Typescript - Day 2 Of #100DaysOfFullStackChallnege</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Sat, 06 Jul 2024 17:58:30 +0000</pubDate>
      <link>https://dev.to/zendeaditya/exploring-the-concept-of-the-typescript-day-2-of-100daysoffullstackchallnege-37fk</link>
      <guid>https://dev.to/zendeaditya/exploring-the-concept-of-the-typescript-day-2-of-100daysoffullstackchallnege-37fk</guid>
      <description>&lt;p&gt;So, Welcome back everyone 👋&lt;br&gt;
I'm Aditya, and I'm starting a new series for the next 100 days to become an excellent Full-stack Developer.&lt;br&gt;
Today is the Day 2 of my journey. Today I learned about typescript. &lt;br&gt;
Introduction to TypeScript -&amp;gt; TypeScript is nothing but JavaScript with the &lt;code&gt;Types&lt;/code&gt;. Let's see what I mean by types. Here is a short example to start with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Types In Ts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. String type in ts
Let's define string in javascript
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let language = "typescript";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;and if we console this it will give output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here typescript gives you an extra edge in that you can define type something like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let language:string = "typescript";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so the &lt;code&gt;language&lt;/code&gt; variable only stores the string data type into it. &lt;br&gt;
It helps to reduce runtime errors and make code more readable.&lt;/p&gt;

&lt;p&gt;It is okay that you can write&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let language = 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so JavaScript gives you an output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but in typescript, if you mention the variable type in this case it is &lt;code&gt;string&lt;/code&gt; you cannot assign different data type values. You have to assign a string in this case. &lt;/p&gt;

&lt;p&gt;here is another example that shows you how typescripts work &lt;br&gt;
If you create a simple object in javascript,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const user = {
    name:"aditya",
    age:21,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;now if you access the property that does not exist in the &lt;code&gt;user&lt;/code&gt; object javascript will return you an &lt;code&gt;undefined&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//js code
console.log(user.location) //undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but in the case of typescripts, you get an error&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Property 'location' does not exist on type '{ name: string; age: number; }'.&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2. number type in ts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;same as string, you can declare the variable that can only store the number and not other data types than numbers. e.g&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const age:number = 20;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in the variable age, you can't store the data type other than a number.&lt;/p&gt;

&lt;p&gt;you can use all javascript primitives data types like this. &lt;/p&gt;

&lt;p&gt;Let's move to another important concept of typescript that I learned today&lt;br&gt;
&lt;strong&gt;3. Array&lt;/strong&gt;&lt;br&gt;
Let's talk about how to declare an array in ts. &lt;/p&gt;

&lt;p&gt;here is how do we declare an array in js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr= [1,,2,3,4,5,"aditya"];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can store any data inside the array in js but when it comes to typescript it restricts to store of the data other than you write with &lt;code&gt;:&lt;/code&gt; notation. &lt;/p&gt;

&lt;p&gt;For example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr:number[]= [1,,2,3,4,5,"aditya"];
console.log(arr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I write string inside number array so typescript is telling me that &lt;code&gt;Type 'string' is not assignable to type 'number'&lt;/code&gt;. You have to write numbers and If you want to store data of different data types like numbers and string what you can do is you can use something called &lt;code&gt;Union Type&lt;/code&gt;. In this type, you can two or more data types by separating them using the pipe symbol &lt;code&gt;|&lt;/code&gt;.&lt;br&gt;
For the above example, we can write typescript code as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr: (number | string)[] = [1, 2, 3, 4, 5, "aditya", 'string'];
console.log(arr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way you can store numbers and strings in the same array. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Type Aliases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TypeScript's type aliases allow you to create a new name for a type. This can be useful for simplifying complex type definitions and improving code readability. You can create type aliases for various types including primitive types, union types, object types, and more.&lt;/p&gt;

&lt;p&gt;Let's see what is type aliases with some examples,&lt;br&gt;
Suppose you want to define an object with some property inside it like we mentioned above&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const user = {
    name:"aditya",
    age:21,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so what you can do is you can define a type alias for the whole object.&lt;br&gt;
To define the type alias you have to use the keyword &lt;code&gt;type&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type User= {
  name: string;
  age: number;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then you can assign it to an object like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const user:User = {
    name:"aditya",
    age:21,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use type alliance with string, number, booleans, object, array, and functions. &lt;/p&gt;

&lt;p&gt;if you want to make any value optional then you can use &lt;code&gt;?&lt;/code&gt; to make it optional &lt;br&gt;
for example, you want to make age an optional parameter so what you can do is that&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type User= {
  name: string;
  age?: number;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Interface&lt;/strong&gt; &lt;br&gt;
In TypeScript, interfaces are a powerful way to define the structure of objects. They provide a way to define the shape of an object, including the types of its properties and the functions it can contain. Interfaces are especially useful for defining complex types and ensuring type safety in your code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface Person {
  name: string;
  age: number;
}

const user: Person = {
  name: "Aditya",
  age: 21,
};

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank you for joining me on this journey through the 100 Days Full Stack Challenge. Each day brings new insights, challenges, and opportunities for growth, and I'm thrilled to share every step with you. Your support and feedback mean the world to me, and I'm excited to continue building and learning together. 🚀&lt;/p&gt;

&lt;p&gt;Don't forget to follow my progress on my personal website and stay connected on &lt;a href="https://dev.to/zendeaditya"&gt;Dev.to&lt;/a&gt;, &lt;a href="https://medium.com/@adityazende" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, and &lt;a href="https://hashnode.com/@adityazende01" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;. Let's keep pushing the boundaries of what's possible in web development! 🌐💻&lt;/p&gt;

&lt;p&gt;Until next time, keep coding, keep creating, and keep pushing forward. 💪✨&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Basic Of Javascript - Day 1 of #100DaysOfFullStackChallnege</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Fri, 05 Jul 2024 17:35:59 +0000</pubDate>
      <link>https://dev.to/zendeaditya/basic-of-javascript-day-1-of-100daysoffullstackchallneg-1a54</link>
      <guid>https://dev.to/zendeaditya/basic-of-javascript-day-1-of-100daysoffullstackchallneg-1a54</guid>
      <description>&lt;p&gt;So, Welcome back everyone 👋&lt;br&gt;
I'm Aditya, and I'm starting a new series for the next 100 days to become an excellent Full-stack Developer. &lt;br&gt;
Today is Day 1 of my journey. Today I revised the basic yet important concept in javascript. &lt;br&gt;
Today I started with revising array, string, and object in javascript.&lt;br&gt;
so whatever I learned today I want to share with you let's start &lt;/p&gt;

&lt;p&gt;I started the revision with Objects in js. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## 1. Objects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, an Object is nothing but a container that contains different types of values.&lt;br&gt;
Here is the syntax of Object. There are mainly two types of Objects syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj = new Object();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this is the one way to create an object and the second and simple syntax is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let blogDetails = {
   author: "aditya",
   age: 21,
   blogsWriteOn : ["Dev.to", "Medium.com", "Hashnode.com"],
   location: "Pune"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this way you can create an object. &lt;br&gt;
In the object, we store the data in the &lt;code&gt;key: value&lt;/code&gt; pairs, we can store any type of data in an object.&lt;/p&gt;

&lt;p&gt;Accessing the data from an object.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using (.) notation:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let authorLocation = blogDetails.location; // Pune 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Using ([]) notation:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let authorName = blogDetails['author']; // aditya
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Arrays&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Arrays -&amp;gt; It is used to store multiple items using one variable name. &lt;br&gt;
In JavaScript, the array is resizable &amp;amp; can contain different types of data.&lt;br&gt;
Here is what resizable means,&lt;br&gt;
suppose the array is 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;let fruits = ["apple", "orange", "banana", "pineapple"];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are a total 4 elements in the array and if you push one element like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fruits[5] = "grapes";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will be acceptable In js if we console this the output will remember that we skip the 4th index. but this still works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ 'apple', 'orange', 'banana', 'pineapple', &amp;lt;1 empty item&amp;gt;, 'grapes' ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Array Methods:&lt;br&gt;
There are almost 46 array methods for the array. We are discussing some but the important methods of array here! &lt;/p&gt;

&lt;p&gt;To understand this method better way we are going to learn with example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let numbersArray = [1, 2, 3, 4, 5,6,7,8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Array.at()
This method is used to access a particular element from the array with the help of its index. 
Keep in mind that the index of the array starts with &lt;code&gt;0&lt;/code&gt; not with &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If we want to access the element at index &lt;code&gt;0&lt;/code&gt;, we can write like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(numbersArray.at(0)); // 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we want to access the last element of the array we can take the help of length property to get the total length of the array. &lt;br&gt;
In this case &lt;code&gt;numbersArray.length&lt;/code&gt; will output &lt;code&gt;18&lt;/code&gt;.&lt;br&gt;
To access the last element&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(numbersArray[numbersArray.length-1]); // 18.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Array.concat()
This method is used to combine two arrays into a single array. 
Here is simple example to demonstrate this
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let numbersArray = [1, 2, 3, 4, 5,6,7,8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18];
let lettersArray = ["a", "b", "c", "d", "e", "f"];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output of the above code is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(numbersArray.concat(lettersArray)); 
// [1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e', 'f']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Array.filter()
This method is used to filter the array element on certain conditions that you write as a callback function. 
For example, if you want to print all the event numbers from the array so you can write
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let evennumbers = numbersArray.filter((num)=&amp;gt; num % 2 === 0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the output will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[2,  4,  6, 8, 10, 12, 14, 16, 18]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;another example with object&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Filter on an array of  objects
const students = [
  { name: "aditya", age: 21, mark: 80 },
  { name: "rator", age: 19, mark: 89 },
  { name: "kevin", age: 22, mark: 38 },
  { name: "atharva", age: 18, mark: 80 },
  { name: "random", age: 25, mark: 80 },
];

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the output is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const eligible = students.filter((std)=&amp;gt; std.age&amp;gt;20 &amp;amp;&amp;amp; std.mark&amp;gt;50);
console.log(eligible); 
// [ { name: 'aditya', age: 21, mark: 80 }, { name: 'random', age: 25, mark: 80 }]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The filter function takes two parameters &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;callbackFun&lt;/li&gt;
&lt;li&gt;thisArg&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;callbackFun&lt;/strong&gt; - is a simple function that you provide the perform certain tasks.&lt;br&gt;
&lt;strong&gt;thisArg&lt;/strong&gt; - This is an optional parameter. A value to use as this when executing callbackFn.&lt;/p&gt;

&lt;p&gt;filter returns the &lt;code&gt;shallow copy&lt;/code&gt; of the original array after performing the callback function.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Array.forEach() 
This method executes the callback function on each element of the array 
Here is example of forEach
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let numbersArray = [1, 2, 3, 4, 5];

numbersArray.forEach((num , idx)=&amp;gt;{
  console.log(`The number at index ${idx} is ${num}`);
})

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;and the output will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The number at index 0 is 1
The number at index 1 is 2
The number at index 2 is 3
The number at index 3 is 4
The number at index 4 is 5

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Array.map() 
This is the method of array creates a new array populated with the results of calling a provided function on every element in the calling array.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;the example of map is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let mapfun = numbersArray.map((num)=&amp;gt;num*2);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the output is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ 2, 4, 6, 8, 10 ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>basic</category>
    </item>
    <item>
      <title>Preparing for the 100 Days Full Stack Challenge: Goals, Plan, and Expectations</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Thu, 04 Jul 2024 12:19:19 +0000</pubDate>
      <link>https://dev.to/zendeaditya/preparing-for-the-100-days-full-stack-challenge-goals-plan-and-expectations-5fm9</link>
      <guid>https://dev.to/zendeaditya/preparing-for-the-100-days-full-stack-challenge-goals-plan-and-expectations-5fm9</guid>
      <description>&lt;p&gt;Hello developers 👋,&lt;/p&gt;

&lt;p&gt;I’m Aditya Zende, a Full Stack Developer from Pune, India. Tomorrow I’m taking on the #100DaysOfFullStackChallenge to improve my full-stack skills and become job-ready in the next 100 days 🚀.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Goals 🎯
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Improve my coding skills 🧑‍💻 and create outstanding full-stack projects.&lt;/li&gt;
&lt;li&gt;Build and deploy at least three full-stack projects.&lt;/li&gt;
&lt;li&gt;Master Framer Motion for animation purposes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My Tech Stack 🛠️&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework&lt;/strong&gt;: Next.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS Libraries&lt;/strong&gt;: TailwindCSS &amp;amp; Bootstrap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Components Libraries&lt;/strong&gt;: Shadcn UI &amp;amp; Acernity UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: MongoDB, PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev Tools&lt;/strong&gt;: Git, VS Code, GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My Plan 📅&lt;/p&gt;

&lt;p&gt;I plan to become an outstanding full-stack developer in the next 100 days. Here’s a short overview of my journey:&lt;/p&gt;

&lt;h3&gt;
  
  
  Days 1-10
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deep dive into the basics of JS and Next.js (I already know React.js) and the frontend part.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 11-20
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Explore the basics of backend development with Node.js, MongoDB, and PostgreSQL.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 21-30
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create basic and responsive frontend projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 31-40
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn about DevOps and write code for backend projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 41-50
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dive into React-Redux and state management in React.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 51-60
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start creating full-stack projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 61-70
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Explore new technologies like Cloud, Kafka, and other full-stack tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 71-80
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Build a SaaS project for practice purposes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 81-90
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn about authentication and authorization technologies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 91-100
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Build a proper portfolio site.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suggestions Welcome! 💬
&lt;/h2&gt;

&lt;p&gt;Add your suggestions to improve my journey. What should I follow or avoid?&lt;/p&gt;

&lt;p&gt;Thanks for reading! Follow my journey on &lt;a href="https://dev.to/zendeaditya"&gt;Dev.to&lt;/a&gt; and check out my GitHub for project updates.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>react</category>
      <category>node</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Open Source of Beginners</title>
      <dc:creator>Zende Aditya</dc:creator>
      <pubDate>Fri, 27 Jan 2023 14:07:20 +0000</pubDate>
      <link>https://dev.to/zendeaditya/open-source-of-beginners-3jd5</link>
      <guid>https://dev.to/zendeaditya/open-source-of-beginners-3jd5</guid>
      <description>&lt;p&gt;Find an open-source project that interests you: There are many open-source projects available on platforms like GitHub, GitLab, and SourceForge. Look for a project that aligns with your skills and interests.&lt;/p&gt;

&lt;p&gt;Review the project's contributing guidelines: Most open-source projects have a set of guidelines for contributing. Make sure to read and understand these guidelines before you start working on the project.&lt;/p&gt;

&lt;p&gt;Fork the project: A "fork" is a copy of the original project that you can work on. To create a fork, navigate to the project's main page on the platform and click the "Fork" button.&lt;/p&gt;

&lt;p&gt;Clone the fork to your local machine: Use Git to clone the fork to your local machine. This will create a local copy of the project on your computer.&lt;/p&gt;

&lt;p&gt;Create a new branch: Before making any changes to the code, it's a good practice to create a new branch. This allows you to work on your changes without affecting the main project.&lt;/p&gt;

&lt;p&gt;Make your changes: Now you can start making your changes to the code. Make sure to follow the project's contributing guidelines and best practices.&lt;/p&gt;

&lt;p&gt;Commit your changes: Use Git to commit your changes to the local copy of the project.&lt;/p&gt;

&lt;p&gt;Push your changes to the fork: Use Git to push your changes to the fork on the platform.&lt;/p&gt;

&lt;p&gt;Create a pull request: A pull request is a request to merge your changes into the main project. To create a pull request, navigate to the fork on the platform and click the "New pull request" button.&lt;/p&gt;

&lt;p&gt;Review and merge: The maintainers of the project will review your pull request and merge it if it meets their standards.&lt;/p&gt;

&lt;p&gt;Please note that, these steps may vary depending on the project and platform, it's always good to read the documentation of the project before contributing.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
