<?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: Said Mounaim</title>
    <description>The latest articles on DEV Community by Said Mounaim (@said_mounaim).</description>
    <link>https://dev.to/said_mounaim</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%2F559733%2Fbd83f566-a5b3-4769-95c5-f9526aabf011.jpg</url>
      <title>DEV Community: Said Mounaim</title>
      <link>https://dev.to/said_mounaim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/said_mounaim"/>
    <language>en</language>
    <item>
      <title>Movie App With Next.js 13, TailwindCSS &amp; TypeScript 😍</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Thu, 26 Jan 2023 15:01:58 +0000</pubDate>
      <link>https://dev.to/said_mounaim/movie-app-with-nextjs-13-tailwindcss-typescript-386m</link>
      <guid>https://dev.to/said_mounaim/movie-app-with-nextjs-13-tailwindcss-typescript-386m</guid>
      <description>&lt;h1&gt;
  
  
  Movie App
&lt;/h1&gt;

&lt;p&gt;A movie app that allows users to view and search for movies, and see details of each movie. This app is still in progress and is built using Next.js 13, TailwindCSS, TypeScript, and TheMovieDB API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository: &lt;code&gt;git clone https://github.com/saidMounaim/nextjs13-movie-app.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install dependencies: &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Start the development server: &lt;code&gt;npm run dev&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Built With
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;TailwindCSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.themoviedb.org/" rel="noopener noreferrer"&gt;TheMovieDB API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contribution
&lt;/h2&gt;

&lt;p&gt;All kind of contributions are welcome, please feel free to submit pull requests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/saidMounaim/nextjs13-movie-app" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/saidMounaim/" rel="noopener noreferrer"&gt;Github Profile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>writing</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Job Portal API Using Node.js, Express.js, Prisma &amp; TypeScript</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Sun, 22 Jan 2023 14:33:00 +0000</pubDate>
      <link>https://dev.to/said_mounaim/job-portal-api-using-nodejs-expressjs-prisma-typescript-39a2</link>
      <guid>https://dev.to/said_mounaim/job-portal-api-using-nodejs-expressjs-prisma-typescript-39a2</guid>
      <description>&lt;h1&gt;
  
  
  Job Portal API
&lt;/h1&gt;

&lt;p&gt;This API allows users to create an account, login, update their profile, upload their resume, and add, update, and delete job listings. Users can also apply for jobs and view all jobs they have applied for. &lt;/p&gt;

&lt;p&gt;The API is built using Node.js, Express.js, Prisma and TypeScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository: &lt;code&gt;git clone https://github.com/saidMounaim/job-portal-api.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install dependencies: &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Start the development server: &lt;code&gt;npm run dev&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Make sure you have running prisma cli and prisma server&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Endpoints
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /users&lt;/code&gt;: Create a new user account&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /users/login&lt;/code&gt;: Login to an existing user account&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PUT /users/:id&lt;/code&gt;: Update a user's profile&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PUT /users/:id/resume&lt;/code&gt;: Upload a user's resume&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /jobs&lt;/code&gt;: Add a new job listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PUT /jobs/:id&lt;/code&gt;: Update an existing job listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /jobs/:id&lt;/code&gt;: Retrieve a single job listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DELETE /jobs/:id&lt;/code&gt;: Delete a job listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /jobs/:id/apply&lt;/code&gt;: Apply for a job listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /users/:id/jobs&lt;/code&gt;: Retrieve all jobs a user has applied for&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Note
&lt;/h2&gt;

&lt;p&gt;This project is still under development and the endpoints may not be completely functional yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contribution
&lt;/h2&gt;

&lt;p&gt;All kind of contributions are welcome, please feel free to submit pull requests.&lt;/p&gt;

&lt;p&gt;Github Repo: &lt;a href="https://github.com/saidMounaim/job-portal-api" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/job-portal-api&lt;/a&gt;&lt;br&gt;
Github Profile: &lt;a href="https://github.com/saidMounaim/" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>JWT Authentication Using Express.js &amp; MongoDB With TypeScript</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Wed, 11 Jan 2023 21:57:49 +0000</pubDate>
      <link>https://dev.to/said_mounaim/jwt-authentication-using-expressjs-mongodb-with-typescript-3ngn</link>
      <guid>https://dev.to/said_mounaim/jwt-authentication-using-expressjs-mongodb-with-typescript-3ngn</guid>
      <description>&lt;h1&gt;
  
  
  Auth-TS
&lt;/h1&gt;

&lt;p&gt;JWT Authentication Using TypeScript, Express.js, &amp;amp; MongoDB&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express.js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Default urls:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Login User : POST METHOD 
localhost:5000/api/auth&lt;/li&gt;
&lt;li&gt;Register User : POST METHOD 
localhost:5000/api/auth/register&lt;/li&gt;
&lt;li&gt;Get All Users : GET METHOD 
localhost:5000/api/auth/&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  Env Variables
&lt;/h3&gt;

&lt;p&gt;Create a .env file in then root and add the following&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PORT = 5000
MONGO_URI = your mongodb uri
JWT_SECRET = 'abc123'

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Dependencies
&lt;/h2&gt;



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

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Run App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
# Run in dev mode

npm run server

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Version: 1.0.0&lt;/li&gt;
&lt;li&gt;License: MIT&lt;/li&gt;
&lt;li&gt;Author: Said Mounaim&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Github Repo: &lt;a href="https://github.com/saidMounaim/Auth-TS" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/Auth-TS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more projects, see my Github Profile&lt;br&gt;
&lt;a href="https://github.com/saidMounaim" rel="noopener noreferrer"&gt;https://github.com/saidMounaim&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>mcp</category>
      <category>developers</category>
    </item>
    <item>
      <title>Authentication with credentials using Next-Auth &amp; MongoDB</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Sun, 09 Oct 2022 14:26:26 +0000</pubDate>
      <link>https://dev.to/said_mounaim/authentication-with-credentials-using-next-auth-mongodb-5e0j</link>
      <guid>https://dev.to/said_mounaim/authentication-with-credentials-using-next-auth-mongodb-5e0j</guid>
      <description>&lt;p&gt;For create Login Authentication we're going to use Next-Auth package from Vercel Here is the link &lt;a href="https://next-auth.js.org/"&gt;Next-Auth&lt;/a&gt; ,&lt;/p&gt;

&lt;p&gt;Let's install it open your terminal and run&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;next step is creating a folder inside Api and set folder name to auth and inside auth create new file set filename to [...nextauth].js every sign in, sign out &amp;amp; checking the authentication will be redirected to this file and we need to handle it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r0JfS276--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sq3b7ycvk0drhke2maz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r0JfS276--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sq3b7ycvk0drhke2maz.PNG" alt="Image description" width="328" height="765"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;let's start by importing Next-Auth&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then export default NextAuth it's a function that accept Object as a parameter for Object we need to set some properties the fist one is session and inside session we're going to use jwt as a strategy&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth";

export default NextAuth({
  session: {
    strategy: "jwt",
  }
})

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

&lt;/div&gt;



&lt;p&gt;next setting for the NextAuth function is callbacks is an object and inside that we need to define function it is jwt it's an async function and jwt accept two parameter the first one is session and the second one is user, inside jwt function we check user id if does it exist and fill token id with user id and return the token.&lt;/p&gt;

&lt;p&gt;user id is coming from database and token in NextAuth life cycle&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth";

export default NextAuth({
  session: {
    strategy: "jwt",
  },
  callbacks: {
    async jwt({ token, user }) {
      if (user?._id) token._id = user._id;
      if (user?.isAdmin) token.isAdmin = user.isAdmin;
      return token;
    },
  },
})

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

&lt;/div&gt;



&lt;p&gt;in the next callbacks we're going to define session function it accept two parameter session and token,&lt;/p&gt;

&lt;p&gt;in the session function we check token if does it exist and fill session with token and at the end return session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth";

export default NextAuth({
  session: {
    strategy: "jwt",
  },
  callbacks: {
    async jwt({ token, user }) {
      if (user?._id) token._id = user._id;
      if (user?.isAdmin) token.isAdmin = user.isAdmin;
      return token;
    },
    async session({ session, token }) {
      if (token?._id) session.user._id = token._id;
      if (token?.isAdmin) session.user.isAdmin = token.isAdmin;
      return session;
    },
  },
})

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

&lt;/div&gt;



&lt;p&gt;let's going for the next setting is define a providers is an Array and the provider that we're going to use is CredentialsProvider we're going to authenticate user based in MongoDB database not using Github Authentication or Google Login.&lt;/p&gt;

&lt;p&gt;we're using CredentialsProvider in parameter define an object and inside define authorize function is an async function accept credentials as a parameter inside we need to connect to database and find the user in database based in email in the credentials parameter,&lt;br&gt;
we need to import ConnectDB from config folder, and User from models folder.&lt;/p&gt;

&lt;p&gt;next step is checking user and password together if user exist it means that we have user with that email and checking the password if it is correct then we need to return an object, the object is coming from database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import NextAuth from "next-auth";
import connectDB from "../../../config/db";
import CredentialsProvider from "next-auth/providers/credentials";
import User from "../../../models/User";
import bcrypt from "bcryptjs";

export default NextAuth({
  session: {
    strategy: "jwt",
  },

  callbacks: {
    async jwt({ token, user }) {
      if (user?._id) token._id = user._id;
      if (user?.isAdmin) token.isAdmin = user.isAdmin;
      return token;
    },
    async session({ session, token }) {
      if (token?._id) session.user._id = token._id;
      if (token?.isAdmin) session.user.isAdmin = token.isAdmin;
      return session;
    },
  },
  providers: [
    CredentialsProvider({
      async authorize(credentials) {
        connectDB();
        const user = await User.findOne({ email: credentials.email });
        if (user &amp;amp;&amp;amp; bcrypt.compareSync(credentials.password, user.password)) {
          console.log(user);
          return {
            _id: user._id,
            name: user.name,
            email: user.email,
            isAdmin: user.isAdmin,
          };
        }
        throw new Error("Invalid Email or Password");
      },
    }),
  ],
});

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

&lt;/div&gt;



&lt;p&gt;AMAZIING, we implement the sign in function and we configured NextAuth function next step is go to login page inside the page we need to handle submission&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Link from "next/link";
import React, { useEffect, useState } from "react";
import Layout from "../components/Layout";
import { useForm } from "react-hook-form";
import { signIn, useSession } from "next-auth/react";
import { toast } from "react-toastify";
import { getError } from "../utils/error";
import { useRouter } from "next/router";

const login = () =&amp;gt; {
  const { data: session } = useSession();
  const router = useRouter();

  useEffect(() =&amp;gt; {
    if (session?.user) router.push("/");
  }, [session, router]);

  const {
    register,
    handleSubmit,
    formState: { errors },
  } = useForm();
  const handleLogin = async ({ email, password }) =&amp;gt; {
    try {
      const result = await signIn("credentials", {
        redirect: false,
        email,
        password,
      });
      if (result.error) toast.error(result.error);
    } catch (err) {
      toast.error(getError(err));
    }
  };
  const handleError = (errors) =&amp;gt; {};

  const loginOptions = {
    email: {
      required: "Email is required",
      pattern: {
        value: /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/i,
        message: "Email not valid",
      },
    },
    password: {
      required: "Password is required",
    },
  };

  return (
    &amp;lt;Layout title="Login"&amp;gt;
      &amp;lt;form
        className="mx-auto max-w-screen-sm"
        onSubmit={handleSubmit(handleLogin, handleError)}
      &amp;gt;
        &amp;lt;div className="flex flex-col mt-4 mb-5"&amp;gt;
          &amp;lt;h1 className="text-[30px] text-[#06283D] font-medium"&amp;gt;Login&amp;lt;/h1&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div className="flex flex-col mb-3"&amp;gt;
          &amp;lt;label
            htmlFor="email"
            className="text-[17px] text-[#06283D] font-medium mb-2"
          &amp;gt;
            Email
          &amp;lt;/label&amp;gt;
          &amp;lt;input
            type="text"
            id="email"
            {...register("email", loginOptions.email)}
            autoFocus
          /&amp;gt;
          {errors?.email &amp;amp;&amp;amp; (
            &amp;lt;p className="text-[16px] text-red-500"&amp;gt;{errors.email.message}&amp;lt;/p&amp;gt;
          )}
        &amp;lt;/div&amp;gt;
        &amp;lt;div className="flex flex-col mb-3"&amp;gt;
          &amp;lt;label
            htmlFor="password"
            className="text-[17px] text-[#06283D] font-medium mb-2"
          &amp;gt;
            Password
          &amp;lt;/label&amp;gt;
          &amp;lt;input
            type="password"
            id="password"
            {...register("password", loginOptions.password)}
            autoFocus
          /&amp;gt;
          {errors?.password &amp;amp;&amp;amp; (
            &amp;lt;p className="text-[16px] text-red-500"&amp;gt;
              {errors.password.message}
            &amp;lt;/p&amp;gt;
          )}
        &amp;lt;/div&amp;gt;
        &amp;lt;button className="bg-[#06283D] px-5 py-3 text-white font-medium text-center rounded-sm"&amp;gt;
          Login
        &amp;lt;/button&amp;gt;
        &amp;lt;div className="flex flex-col mt-4 text-[#06283D] text-[16px] font-medium"&amp;gt;
          Don't have an account, &amp;lt;br /&amp;gt;
          &amp;lt;Link href="/register"&amp;gt;Register&amp;lt;/Link&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/form&amp;gt;
    &amp;lt;/Layout&amp;gt;
  );
};

export default login;

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

&lt;/div&gt;



</description>
      <category>nextjs</category>
      <category>javascript</category>
      <category>react</category>
      <category>nextauth</category>
    </item>
    <item>
      <title>Online Clothing Store using the MERN stack</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Wed, 28 Sep 2022 09:38:46 +0000</pubDate>
      <link>https://dev.to/said_mounaim/online-clothing-store-using-the-mern-stack-2dl4</link>
      <guid>https://dev.to/said_mounaim/online-clothing-store-using-the-mern-stack-2dl4</guid>
      <description>&lt;p&gt;Online Clothing Store using the MERN stack&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%2Fehckjx79on906mzkkvtz.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%2Fehckjx79on906mzkkvtz.png" alt="screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Product reviews and ratings&lt;/li&gt;
&lt;li&gt;Product pagination&lt;/li&gt;
&lt;li&gt;Product search feature&lt;/li&gt;
&lt;li&gt;User profile with orders&lt;/li&gt;
&lt;li&gt;Full featured shopping cart&lt;/li&gt;
&lt;li&gt;Admin product management&lt;/li&gt;
&lt;li&gt;Admin user management&lt;/li&gt;
&lt;li&gt;Admin Order details page&lt;/li&gt;
&lt;li&gt;Mark orders as delivered option&lt;/li&gt;
&lt;li&gt;Checkout process (shipping, payment method, etc)&lt;/li&gt;
&lt;li&gt;PayPal / credit card integration&lt;/li&gt;
&lt;li&gt;Database seeder (products &amp;amp; users)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node js&lt;/li&gt;
&lt;li&gt;Express Js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;React Bootstrap&lt;/li&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;React Paypal Button V2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Demo: &lt;a href="https://clothshopapp.herokuapp.com/" rel="noopener noreferrer"&gt;https://clothshopapp.herokuapp.com/&lt;/a&gt;&lt;br&gt;
Github Repo: &lt;a href="https://github.com/saidMounaim/cloth-shop" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/cloth-shop&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>react</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>Hotel Booking App Using The MERN Stack With TypeScript</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Tue, 27 Sep 2022 19:23:36 +0000</pubDate>
      <link>https://dev.to/said_mounaim/hotel-booking-app-using-the-mern-stack-with-typescript-1oeh</link>
      <guid>https://dev.to/said_mounaim/hotel-booking-app-using-the-mern-stack-with-typescript-1oeh</guid>
      <description>&lt;h1&gt;
  
  
  HotelBooking
&lt;/h1&gt;

&lt;p&gt;Hotel Booking App Using The MERN Stack With TypeScript &amp;amp; Redux 🤩&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%2Fi.ibb.co%2F5Fprvgc%2Froomhotel.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%2Fi.ibb.co%2F5Fprvgc%2Froomhotel.png" alt="screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Room reviews and ratings&lt;/li&gt;
&lt;li&gt;Room pagination&lt;/li&gt;
&lt;li&gt;Room search feature&lt;/li&gt;
&lt;li&gt;User profile with bookings&lt;/li&gt;
&lt;li&gt;Admin Room management&lt;/li&gt;
&lt;li&gt;Admin User management&lt;/li&gt;
&lt;li&gt;Admin Booking management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Node js&lt;/li&gt;
&lt;li&gt;Express Js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;React Bootstrap&lt;/li&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;React Paypal Button V2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo Github : &lt;a href="https://github.com/saidMounaim/hotel-booking" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/hotel-booking&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>react</category>
      <category>node</category>
    </item>
    <item>
      <title>Starter Full Stack App with Next JS Using Redux 😍</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Wed, 29 Sep 2021 21:15:56 +0000</pubDate>
      <link>https://dev.to/said_mounaim/starter-full-stack-app-with-next-js-using-redux-4217</link>
      <guid>https://dev.to/said_mounaim/starter-full-stack-app-with-next-js-using-redux-4217</guid>
      <description>&lt;h1&gt;
  
  
  Starter Full Stack App with Next JS Using Redux
&lt;/h1&gt;

&lt;p&gt;Boilerplate for creating fullstack apps using following technologies:&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend Technologies:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Next js&lt;/li&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend Technologies:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;Mongoose&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend and the backend are completely independent of each other.&lt;/p&gt;

&lt;p&gt;Github : &lt;a href="https://github.com/saidMounaim/starter-nextjs"&gt;https://github.com/saidMounaim/starter-nextjs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>node</category>
      <category>redux</category>
    </item>
    <item>
      <title>File sharing API Using Node js &amp; Express js</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Sat, 25 Sep 2021 19:23:03 +0000</pubDate>
      <link>https://dev.to/said_mounaim/file-sharing-api-using-node-js-express-js-jn7</link>
      <guid>https://dev.to/said_mounaim/file-sharing-api-using-node-js-express-js-jn7</guid>
      <description>&lt;h1&gt;
  
  
  FileSharing
&lt;/h1&gt;

&lt;p&gt;File sharing API Using Node js &amp;amp; Express js&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;File sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node js&lt;/li&gt;
&lt;li&gt;Express Js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Default urls:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Upload File : 
localhost:5000/api/upload&lt;/li&gt;
&lt;li&gt;Get All Files : 
localhost:5000/api/files&lt;/li&gt;
&lt;li&gt;Download File : 
localhost:5000/api/download/:fileId&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install Dependencies
&lt;/h2&gt;



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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Run App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Run in dev mode
npm run server

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

&lt;/div&gt;



&lt;p&gt;Github : &lt;a href="https://github.com/saidMounaim/FileSharing"&gt;https://github.com/saidMounaim/FileSharing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>express</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>Portfolio React Hooks</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Fri, 24 Sep 2021 13:29:45 +0000</pubDate>
      <link>https://dev.to/said_mounaim/portfolio-react-hooks-46f3</link>
      <guid>https://dev.to/said_mounaim/portfolio-react-hooks-46f3</guid>
      <description>&lt;h1&gt;
  
  
  Said MOUNAIM
&lt;/h1&gt;

&lt;p&gt;
  
    &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2LQgHMuw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/N9mXnwr/sm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2LQgHMuw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ibb.co/N9mXnwr/sm.png"&gt;&lt;/a&gt;
  
&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.&lt;/p&gt;

&lt;p&gt;You'll need &lt;a href="https://git-scm.com"&gt;Git&lt;/a&gt; and &lt;a href="https://nodejs.org/en/download/"&gt;Node.js&lt;/a&gt; (which comes with &lt;a href="http://npmjs.com"&gt;npm&lt;/a&gt;) installed on your computer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node@v10.16.0 or higher
npm@6.9.0 or higher
git@2.17.1 or higher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Github : &lt;a href="https://github.com/saidMounaim/SMPortfolio"&gt;https://github.com/saidMounaim/SMPortfolio&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>reacthoks</category>
    </item>
    <item>
      <title>Node.js API Authentication With JWT</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Fri, 24 Sep 2021 07:58:18 +0000</pubDate>
      <link>https://dev.to/said_mounaim/node-js-api-authentication-with-jwt-3eo1</link>
      <guid>https://dev.to/said_mounaim/node-js-api-authentication-with-jwt-3eo1</guid>
      <description>&lt;h1&gt;
  
  
  UserAuth
&lt;/h1&gt;

&lt;p&gt;Node.js API Authentication With JWT&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node js&lt;/li&gt;
&lt;li&gt;Express Js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Default urls:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Login User : 
localhost:5000/api/login&lt;/li&gt;
&lt;li&gt;Register User : 
localhost:5000/api/user&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;"/.env" update the values/settings to your own&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Dependencies
&lt;/h2&gt;



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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Run App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Run in dev mode
npm run server

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

&lt;/div&gt;



&lt;p&gt;Github Repo : &lt;a href="https://github.com/saidMounaim/UserAuth"&gt;https://github.com/saidMounaim/UserAuth&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>mongodb</category>
      <category>express</category>
      <category>api</category>
    </item>
    <item>
      <title>Awesome Things Related To React Hooks 😍</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Thu, 23 Sep 2021 07:32:55 +0000</pubDate>
      <link>https://dev.to/said_mounaim/awesome-things-related-to-react-hooks-30c4</link>
      <guid>https://dev.to/said_mounaim/awesome-things-related-to-react-hooks-30c4</guid>
      <description>&lt;p&gt;
  &lt;br&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FWPzCqxY%2Freact-hooksmeme.jpg" 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%2Fi.ibb.co%2FWPzCqxY%2Freact-hooksmeme.jpg" alt="meme of react hooks"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;br&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  awesome-react-hooks
&lt;/h1&gt;

&lt;p&gt;A curated list of awesome things related to React Hooks &lt;/p&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Official
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/docs/getting-started.html" rel="noopener noreferrer"&gt;Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related awesome lists
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/rehooks/awesome-react-hooks" rel="noopener noreferrer"&gt;General&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Articles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.positronx.io/react-js-resize-compress-and-crop-image-size-tutorial/" rel="noopener noreferrer"&gt;React Js Resize, Compress and Crop Image Size Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pierreouannes/how-to-use-react-usereducer-hook-like-a-pro-3ll3"&gt;How to use React useReducer hook like a pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.anishde.dev/create-an-npx-cli-portfolio-under-5-minutes" rel="noopener noreferrer"&gt;Create an NPX CLI Portfolio under 5 minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codeman.hashnode.dev/react-router-a-beginner-guide" rel="noopener noreferrer"&gt;React Router - A Beginner Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-headless-calendar-hook-for-react/" rel="noopener noreferrer"&gt;A headless calendar hook for React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/colocodes/6-use-cases-of-the-useeffect-reactjs-hook-282o"&gt;6 use cases of the useEffect ReactJS hook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/hyggedev/credit-card-payment-ui-with-reactjs-1a5a"&gt;Credit Card Payment UI With ReactJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/iamraufu/react-18-what-s-new-2jam"&gt;React 18 - What's New!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/said_mounaim/score-football-react-hooks-i4e"&gt;Score Football React Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/said_mounaim/react-redux-filtering-4adc"&gt;React Redux Filtering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://academy.esveo.com/en/blog/Yr" rel="noopener noreferrer"&gt;React Hooks vs. Vue 3 Composition API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-lightweight-carousel-component-for-react/" rel="noopener noreferrer"&gt;A Lightweight carousel component for react&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/top-5-react-chart-libraries/" rel="noopener noreferrer"&gt;Top 5 React chart libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nilanth.hashnode.dev/how-to-reduce-react-app-loading-time-by-70" rel="noopener noreferrer"&gt;How to Reduce React App Loading Time By 70%&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/holdmypotion/react-scroll-transition-for-fancy-portfolios-37fg"&gt;React: Scroll Transition for Fancy Portfolios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/tkdodo/react-query-error-handling-10go"&gt;React Query Error Handling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.suhailkakar.com/6-ways-to-host-your-react-js-app-for-free" rel="noopener noreferrer"&gt;6 Ways to Host Your React JS App For Free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.plainenglish.io/react-query-vs-swr-36743c14ba7e" rel="noopener noreferrer"&gt;React Query vs SWR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/build-instagram-infinite-scrolling-feed-react-query/" rel="noopener noreferrer"&gt;Build an Instagram-like infinite scrolling feed with React Query&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://enlear.academy/usememo-react-hook-a88f2e236eff" rel="noopener noreferrer"&gt;How to Use useMemo Hook in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/hamid2117/simple-way-to-write-forms-in-react-with-formik-547d"&gt;Simple way to write forms in React with Formik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vuemastery.com/blog/top-ways-to-learn-Vue-3/" rel="noopener noreferrer"&gt;Top ways to learn Vue 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lmiller1990.github.io/electic/posts/20200519_a_usemodal_hook_and_proxies.html" rel="noopener noreferrer"&gt;A useModal hook and Proxies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/responsive-portfolio-template-made-with-reactjs/" rel="noopener noreferrer"&gt;Responsive Portfolio Template Made With Reactjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-clean-and-simple-portfolio-template-using-react-for-developers/" rel="noopener noreferrer"&gt;A clean and simple portfolio template using React for developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-simple-calculator-app-created-with-react-js/" rel="noopener noreferrer"&gt;A Simple Calculator app created with React.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://enlear.academy/the-useref-hook-practical-explanation-ef333180dcbb" rel="noopener noreferrer"&gt;How to Use useRef Hook in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.plainenglish.io/usestate-in-react-a-complete-guide-98846ef47391" rel="noopener noreferrer"&gt;useState in React: A complete guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-make-2048-game-in-react/" rel="noopener noreferrer"&gt;React Tutorial – How to Build the 2048 Game in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-free-beautiful-and-modern-react-portfolio-template-for-developers/" rel="noopener noreferrer"&gt;A Free,Beautiful and Modern React Portfolio Template for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-curated-list-of-resources-to-learn-react-and-related-web-technologies-as-fast-as-possible/" rel="noopener noreferrer"&gt;A curated list of resources to learn React and related web technologies as fast as possible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-starter-for-react-vite-twin-macro/" rel="noopener noreferrer"&gt;A starter for React + Vite + twin.macro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/usetgl-a-react-hook-toggle-component-visibility/" rel="noopener noreferrer"&gt;useTgl: a React Hook toggle component visibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/build-a-fully-functional-ecommerce-application-using-react-and-commerce-js/" rel="noopener noreferrer"&gt;Build a fully functional eCommerce application using react and commerce.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-react-app-for-developers-to-store-coding-related-snippets-like-code/" rel="noopener noreferrer"&gt;A react app for developers to store coding-related 'snippets' like code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-simple-date-paint-picker-for-react/" rel="noopener noreferrer"&gt;A Simple Date Paint Picker for React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/create-draggable-components-react-draggable/" rel="noopener noreferrer"&gt;Create draggable components with React-Draggable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/mishrabhavesh/react-useundo-hook-4h34"&gt;React useUndo hook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/react-hooks-for-resumable-file-uploads-using-tus/" rel="noopener noreferrer"&gt;React hooks for resumable file uploads using tus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.openreplay.com/react-18-alpha-is-out-this-is-what-you-need-to-know" rel="noopener noreferrer"&gt;React 18-Alpha Is Out! This Is What You Need to Know&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/shaedrizwan/building-custom-hooks-in-react-to-fetch-data-4ig6"&gt;Building custom hooks in React to fetch Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-bookstore-project-built-with-react-redux-and-tailwindcss/" rel="noopener noreferrer"&gt;A Bookstore Project Built with React, Redux, and TailwindCSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-free-personal-portfolio-page-build-up-with-react-next-js/" rel="noopener noreferrer"&gt;A Free Personal Portfolio Page Build Up With React Next.Js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dmitripavlutin.com/react-context-and-usecontext/" rel="noopener noreferrer"&gt;A Guide to React Context and useContext() Hook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/shubhamtiwari909/real-time-searching-in-reactjs-3mfm"&gt;Real Time Searching In ReactJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ms_yogii/infinite-scrolling-in-react-with-intersection-observer-22fh"&gt;Infinite scrolling in React with intersection observer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/5-react-performance-optimization-techniques/" rel="noopener noreferrer"&gt;5 React performance optimization techniques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.devgenius.io/7-projects-you-can-build-to-learn-react-in-2021-246122ffbd6f" rel="noopener noreferrer"&gt;7 Projects You Can Build to Learn React in 2021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/react-component-for-animating-an-elements-children-one-by-one/" rel="noopener noreferrer"&gt;React component for animating an element's children, one by one&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/manage-modals-just-like-managing-pages-with-a-router-in-react/" rel="noopener noreferrer"&gt;Manage modals just like managing pages with a router in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.joshsoftware.com/2021/08/30/recoil-is-this-the-new-redux-for-react/" rel="noopener noreferrer"&gt;Recoil — is this the new ‘Redux’ for React?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/netflix-clone-with-react-styled-components-axios/" rel="noopener noreferrer"&gt;Netflix Clone With React, Styled Components, Axios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/improve-async-network-state-handling-custom-react-hooks/" rel="noopener noreferrer"&gt;Improve async network state handling with custom React Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/a-memory-game-created-with-react-styled-components/" rel="noopener noreferrer"&gt;A memory game created with React Styled Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dzone.com/articles/react-18-things-you-need-to-know-about-react-js-la" rel="noopener noreferrer"&gt;React 18: Things You Need To Know About React JS Latest Version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.plainenglish.io/usereducer-along-with-usecontext-react-hooks-b558be82dd4d" rel="noopener noreferrer"&gt;How to Use ‘useReducer’ and ‘useContext’: React Hooks Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.plainenglish.io/the-greatest-react-developer-i-ever-met-1e58df22bb71" rel="noopener noreferrer"&gt;The Greatest React Developer I Ever Met&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/how-to-send-emails-react-app-netlify-functions/" rel="noopener noreferrer"&gt;How to send emails from a React app with Netlify Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.c-sharpcorner.com/article/lazy-loading-in-react/" rel="noopener noreferrer"&gt;Lazy Loading In React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flaviocopes.com/nextjs-project-structure/" rel="noopener noreferrer"&gt;How I set up a Next.js project structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thisdot.co/blog/using-styled-components-with-react" rel="noopener noreferrer"&gt;Using Styled Components with React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jai-dewani.hashnode.dev/react-isnt-fast-lets-learn-why" rel="noopener noreferrer"&gt;React isn't fast, let's learn why&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/riddhiagrawal001/create-react-app-without-create-react-app-2lgd"&gt;Create React App without create-react-app !&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/fenok/client-and-server-side-data-fetching-in-react-4o7d"&gt;Client- and Server-Side Data Fetching in React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.logrocket.com/react-calendar-tutorial-build-customize-calendar/" rel="noopener noreferrer"&gt;React-Calendar tutorial: Build and customize a simple calendar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjsexample.com/tic-tac-toe-online-multiplayer-game-build-with-react/" rel="noopener noreferrer"&gt;Tic Tac Toe Online Multiplayer Game Build With React&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Packages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://react-hot-toast.com/" rel="noopener noreferrer"&gt;React Hot Toast&lt;/a&gt; - The Best Toast in Town. Smoking hot React notifications.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://skeletonreact.com/" rel="noopener noreferrer"&gt;React Content Loader&lt;/a&gt; - SVG-Powered component to easily create placeholder loadings (like Facebook’s cards loading).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pqina.nl/filepond/" rel="noopener noreferrer"&gt;React Filepond&lt;/a&gt; - A new way to upload files&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/NotionX/react-notion-x" rel="noopener noreferrer"&gt;React Notion X&lt;/a&gt; - Fast and accurate React renderer for Notion. TS batteries included. ⚡ ️&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://react-select.com/home" rel="noopener noreferrer"&gt;React Select&lt;/a&gt; - A flexible and beautiful Select Input control for ReactJS with multiselect, autocomplete, async and creatable support.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sweetalert.js.org/" rel="noopener noreferrer"&gt;Sweet Alert&lt;/a&gt; - A beautiful replacement for success messages, error messages or info messages&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://danbovey.uk/react-infinite-scroller/" rel="noopener noreferrer"&gt;React Infinite Scroller&lt;/a&gt; - Infinitely load content using a React Component.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://react-dnd.github.io/react-dnd/about" rel="noopener noreferrer"&gt;React DnD&lt;/a&gt; - A React utility to help you build complex drag and drop interfaces while keeping your components decoupled.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://draftjs.org/" rel="noopener noreferrer"&gt;Draft JS&lt;/a&gt; - Draft.js fits seamlessly into React applications, abstracting away the details of rendering, selection, and input behavior with a familiar declarative API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/reactchartjs/react-chartjs-2" rel="noopener noreferrer"&gt;ChartJS&lt;/a&gt; - Build beautiful charts in minutes with Chartjs, Dashboards will looks sexy like never before.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://react-slick.neostack.com/" rel="noopener noreferrer"&gt;React Slick&lt;/a&gt; - React carousel component. One of the best sliders out there to showcase anything.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://react-autosuggest.js.org/" rel="noopener noreferrer"&gt;React Auto Suggest&lt;/a&gt; - WAI-ARIA compliant autosuggest component built in React&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://negomi.github.io/react-burger-menu/" rel="noopener noreferrer"&gt;React Burger Menu&lt;/a&gt; - An off-canvas sidebar React component with a collection of effects and styles using CSS transitions and SVG path animations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.davidhu.io/react-spinners/" rel="noopener noreferrer"&gt;React Spinners&lt;/a&gt; - A collection of loading spinner components for react&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://react-bootstrap-table.github.io/react-bootstrap-table2/" rel="noopener noreferrer"&gt;React Bootstrap Datatable&lt;/a&gt; - Next Generation of react-bootstrap-table. Datatable made easy like never before.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://styled-components.com/" rel="noopener noreferrer"&gt;Styled Components&lt;/a&gt; - styled-components is the result of wondering how we could enhance CSS for styling React component systems.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/marconi/use-abortable-stream-fetch" rel="noopener noreferrer"&gt;use-abortable-stream-fetch&lt;/a&gt; - React hook for fetching streams that can be aborted.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ABWalters/react-api-hooks" rel="noopener noreferrer"&gt;React API Hooks&lt;/a&gt; - React hooks to interact with an API from a stateless component using axios.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saidMounaim/React-Use-Smooth-Scroll" rel="noopener noreferrer"&gt;React Use Smooth Scroll&lt;/a&gt; - React Provider Component to add a smooth scroll effect 😍&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saidMounaim/use-mail-to" rel="noopener noreferrer"&gt;React Use Mail To&lt;/a&gt; - Renders a link formatted to send an email (mailto: link).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mauricedb/use-abortable-fetch" rel="noopener noreferrer"&gt;use-abortable-fetch&lt;/a&gt; - React hook that does a fetch and aborts when the components is unloaded or a different request is made&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ctrlplusb/easy-peasy" rel="noopener noreferrer"&gt;easy-peasy&lt;/a&gt; - Vegetarian friendly state for React&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/beizhedenglong/react-hooks-lib" rel="noopener noreferrer"&gt;React Hooks Lib&lt;/a&gt; - A set of reusable React Hooks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/kalcifer/react-powerhooks" rel="noopener noreferrer"&gt;react-powerhooks&lt;/a&gt; - Hooks api for react-powerplug components&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sandiiarov/use-events" rel="noopener noreferrer"&gt;use-events&lt;/a&gt; - 🍭 Event hooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/trojanowski/react-apollo-hooks" rel="noopener noreferrer"&gt;react-apollo-hooks&lt;/a&gt; - Use Apollo Client as React hooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/craig1123/react-recipes" rel="noopener noreferrer"&gt;react-recipes&lt;/a&gt; - 👩‍🍳 A list of React Hooks utility library containing popular customized hooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/zakariaharti/react-hookedup" rel="noopener noreferrer"&gt;react-hookedup&lt;/a&gt; - 👽 A collection of useful React hooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/use-hooks/react-hooks-axios" rel="noopener noreferrer"&gt;react-hooks-axios&lt;/a&gt; - Custom React Hooks for Axios.js&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/coinbase/rest-hooks" rel="noopener noreferrer"&gt;rest-hooks&lt;/a&gt; - Delightful data fetching for React.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/doasync/use-call" rel="noopener noreferrer"&gt;use-call&lt;/a&gt; - useCall React hook&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/danoc/react-use-clipboard" rel="noopener noreferrer"&gt;react-use-clipboard&lt;/a&gt; - React hook that provides copy to clipboard functionality.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/diegohaz/constate" rel="noopener noreferrer"&gt;constate&lt;/a&gt; - React Context + State&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/imbhargav5/rooks" rel="noopener noreferrer"&gt;rooks&lt;/a&gt; - Essential React custom hooks ⚓ to super charge your components!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/frontarm/navi" rel="noopener noreferrer"&gt;navi&lt;/a&gt; - 🧭 Declarative, asynchronous routing for React.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.toreact-firebase-hooks"&gt;react-firebase-hooks&lt;/a&gt; - React Hooks for Firebase.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rot1024/use-file-input" rel="noopener noreferrer"&gt;use-file-input&lt;/a&gt; - React Hooks for file selection with hidden &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/react-hook-form/react-hook-form" rel="noopener noreferrer"&gt;react-hook-form&lt;/a&gt; - 📋 React Hooks for forms validation (Web + React Native)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/use-hooks/react-hooks-image-size" rel="noopener noreferrer"&gt;react-hooks-image-size&lt;/a&gt; - Custom React Hooks for image natural size&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/haldarmahesh/use-key-hook" rel="noopener noreferrer"&gt;use-key-hook&lt;/a&gt; - React hook to handle all the key press.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ava/use-http" rel="noopener noreferrer"&gt;use-http&lt;/a&gt; - 🐶 React hook for making isomorphic http requests&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/streamich/use-media" rel="noopener noreferrer"&gt;use-media&lt;/a&gt; - useMedia React hook to track CSS media query state&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/xnimorz/use-debounce" rel="noopener noreferrer"&gt;use-debounce&lt;/a&gt; - A debounce hook for react&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rehooks/local-storage" rel="noopener noreferrer"&gt;local-storage&lt;/a&gt; - React hook which syncs localStorage[key] with the comp.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/alex-cory/react-useportal" rel="noopener noreferrer"&gt;react-useportal&lt;/a&gt; - 🌀 React hook for Portals&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactrouter.com/web/api/Hooks" rel="noopener noreferrer"&gt;REACT ROUTER&lt;/a&gt; - React Router ships with a few hooks that let you access the state of the router and perform navigation from inside your components.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ant-design/ant-design" rel="noopener noreferrer"&gt;ant-design&lt;/a&gt; - An enterprise-class UI design language and React UI library&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/chakra-ui/chakra-ui" rel="noopener noreferrer"&gt;chakra-ui&lt;/a&gt; - ⚡️ Simple, Modular &amp;amp; Accessible UI Components for your React Applications&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/react-bootstrap/react-bootstrap" rel="noopener noreferrer"&gt;react-bootstrap&lt;/a&gt; - Bootstrap components built with React&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Semantic-Org/Semantic-UI" rel="noopener noreferrer"&gt;Semantic-UI&lt;/a&gt; - Semantic is a UI component framework based around useful principles from natural language.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/segmentio/evergreen" rel="noopener noreferrer"&gt;evergreen&lt;/a&gt; - 🌲 Evergreen React UI Framework by Segment&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/reakit/reakit" rel="noopener noreferrer"&gt;reakit&lt;/a&gt; - Toolkit for building accessible rich web apps with React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For More Check the repo &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/saidMounaim/awesome-react-hooks" rel="noopener noreferrer"&gt;https://github.com/saidMounaim/awesome-react-hooks&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>reacthooks</category>
      <category>github</category>
    </item>
    <item>
      <title>An online shop API Node js 🤩</title>
      <dc:creator>Said Mounaim</dc:creator>
      <pubDate>Sun, 19 Sep 2021 11:24:24 +0000</pubDate>
      <link>https://dev.to/said_mounaim/an-online-shop-api-node-js-2f02</link>
      <guid>https://dev.to/said_mounaim/an-online-shop-api-node-js-2f02</guid>
      <description>&lt;h1&gt;
  
  
  onlineshop-api
&lt;/h1&gt;

&lt;p&gt;An API for online store&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Products listing&lt;/li&gt;
&lt;li&gt;Order placements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node js&lt;/li&gt;
&lt;li&gt;Express Js&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Github : &lt;a href="https://github.com/saidMounaim/onlineshop-api"&gt;https://github.com/saidMounaim/onlineshop-api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on github : &lt;a href="https://github.com/saidMounaim/"&gt;https://github.com/saidMounaim/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>express</category>
      <category>javascript</category>
      <category>mongodb</category>
    </item>
  </channel>
</rss>
