<?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>Forem: Debopriya Dey</title>
    <description>The latest articles on Forem by Debopriya Dey (@debopriyadey).</description>
    <link>https://forem.com/debopriyadey</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%2F440707%2Fcf7b2f82-d872-4e6c-bf0c-46d10fda878f.jpg</url>
      <title>Forem: Debopriya Dey</title>
      <link>https://forem.com/debopriyadey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/debopriyadey"/>
    <language>en</language>
    <item>
      <title>Top Free APIs to get started with your dev projects.</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Wed, 16 Nov 2022 07:23:05 +0000</pubDate>
      <link>https://forem.com/debopriyadey/top-free-apis-to-get-started-with-your-dev-projects-3k15</link>
      <guid>https://forem.com/debopriyadey/top-free-apis-to-get-started-with-your-dev-projects-3k15</guid>
      <description>&lt;p&gt;API stands for Application Programming Interface. It act as an intermediate between software. &lt;/p&gt;

&lt;p&gt;An open API, also called public API are made publicly available to software developers. Open APIs are published on the internet and shared freely so that the developers can access the application features and services.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://rapidapi.com/hub" rel="noopener noreferrer"&gt;Rapid API&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;RapidAPI, the world's largest API hub, is used by over three million developers to find, test, and connect to thousands of APIs — all with a single API key and dashboard.&lt;/p&gt;

&lt;p&gt;Find the APIs that you need for your project, embed the API into your app, and track usage of all your APIs through a single dashboard. If you create an API, use RapidAPI to make it available to over three million developers already using the RapidAPI Hub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/OcXEd0Qbvj0" rel="noopener noreferrer"&gt;https://youtu.be/OcXEd0Qbvj0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4q0ztzgt94mtowy3h97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4q0ztzgt94mtowy3h97.png" alt="Rapid Api" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://developers.google.com/apis-explorer" rel="noopener noreferrer"&gt;Google APIs&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Some APIs allow free usage up to a courtesy usage limit, and in some cases this free limit is increased when you enable billing.&lt;/p&gt;

&lt;p&gt;For some APIs, more services are available after you enable billing. For example, when you enable billing for the Google Cloud Platform BigQuery APIs, you can create your own tables; if you do not enable billing, you're limited to existing datasets.&lt;/p&gt;

&lt;p&gt;Few Useful Google Free APIs are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://console.cloud.google.com/apis/library/calendar-json.googleapis.com" rel="noopener noreferrer"&gt;Google Calendar API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://console.cloud.google.com/apis/library/maps-backend.googleapis.com" rel="noopener noreferrer"&gt;Maps JavaScript API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://console.cloud.google.com/apis/library/drive.googleapis.com" rel="noopener noreferrer"&gt;Google Drive API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://console.cloud.google.com/apis/library/analytics.googleapis.com" rel="noopener noreferrer"&gt;Google Analytics API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://console.cloud.google.com/apis/library/youtube.googleapis.com" rel="noopener noreferrer"&gt;YouTube Data API v3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://shopify.dev/api" rel="noopener noreferrer"&gt;Shopify API&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Shopify offers a suite of APIs that allow developers to extend the platform’s built-in features. These APIs allow Partners to read and write merchant data, interoperate with other systems and platforms, and add new functionality to Shopify.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://developer.spotify.com/documentation/web-api/" rel="noopener noreferrer"&gt;Spotify API&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Based on simple REST principles, the Spotify Web API endpoints return JSON metadata about music artists, albums, and tracks, directly from the Spotify Data Catalogue.&lt;/p&gt;

&lt;p&gt;Web API also provides access to user related data, like playlists and music that the user saves in the Your Music library. Such access is enabled through selective authorization, by the user.&lt;/p&gt;

&lt;p&gt;The base address of Web API is &lt;a href="https://api.spotify.com" rel="noopener noreferrer"&gt;https://api.spotify.com&lt;/a&gt;. The API provides a set of endpoints, each with its own unique path. To access private data through the Web API, such as user profiles and playlists, an application must get the user’s permission to access the data. Authorization is via the Spotify Accounts service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/watch?v=c5sWvP9h3s8" rel="noopener noreferrer"&gt;https://youtube.com/watch?v=c5sWvP9h3s8&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://docs.opensea.io/reference/api-overview" rel="noopener noreferrer"&gt;OpenSea API&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The OpenSea API helps developers build new experiences using NFTs and our marketplace data. We provide a set of endpoints that enable you to fetch ERC721 and ERC1155 token metadata as well as other core elements of our marketplace, including events, collection, listings, offers, and more. We offer these endpoints because we believe in composability in web3 and want to extend access to this data to anyone that wishes to build on top of it. &lt;/p&gt;




&lt;p&gt;Related Blogs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/debopriyadey/fetch-and-create-events-in-google-calendar-with-html-and-javascript-1o6f"&gt;Fetch and Create events in Google Calendar with HTML and Javascript.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/debopriyadey/schedule-google-meet-using-html-and-javascript-4gc2"&gt;Schedule Google Meet Using HTML and JavaScript.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any other awesome Open APIs that you have used to create your projects do with us in the comment. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>api</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Deploy React App with Azure App Service.</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Wed, 09 Nov 2022 04:47:25 +0000</pubDate>
      <link>https://forem.com/debopriyadey/deploy-react-app-in-azure-app-service-37hp</link>
      <guid>https://forem.com/debopriyadey/deploy-react-app-in-azure-app-service-37hp</guid>
      <description>&lt;p&gt;In this blog you will read about how to deploy your React Web App in Azure App Service.&lt;/p&gt;




&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm &amp;gt;= 6.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;node &amp;gt;= 10.12.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Create Basic React App
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Initializing React App
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;If you've previously installed &lt;code&gt;create-react-app&lt;/code&gt; globally via npm &lt;code&gt;install -g create-react-app&lt;/code&gt;, we recommend you uninstall the package using &lt;code&gt;npm uninstall -g create-react-app&lt;/code&gt; or &lt;code&gt;yarn global remove create-react-app&lt;/code&gt; to ensure that npx always uses the latest version.on&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Run this command to create a React application named lob-dev-app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app lob-dev-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The create-react-app will set up everything you need to run a React application.&lt;/p&gt;

&lt;p&gt;Now you are ready to run your first real React application!&lt;br&gt;
Run this command to move to the my-react-app directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd lob-dev-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;In the project directory, you can 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 start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs the app in the development mode.&lt;br&gt;
Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to view it in your browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkytq7aoxc6vg09hf76kq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkytq7aoxc6vg09hf76kq.png" alt="reactApp" width="713" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The page will reload when you make changes.\&lt;br&gt;
You may also see any lint errors in the console.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This creates a build directory with a production build of your app. Set up your favorite HTTP server so that a visitor to your site is served index.html&lt;/p&gt;




&lt;h2&gt;
  
  
  Create Nope App
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Initializing Node App
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;code&gt;npm init &amp;lt;initializer&amp;gt;&lt;/code&gt; can be used to set up a new or existing npm package.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;code&gt;initializer&lt;/code&gt; in this case is an npm package named &lt;code&gt;create-&amp;lt;initializer&amp;gt;&lt;/code&gt;, which will be installed by &lt;code&gt;npx&lt;/code&gt;, and then have its main bin executed -- presumably creating or updating &lt;code&gt;package.json&lt;/code&gt; and running any other initialization-related operations.&lt;/em&gt;  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Open Your Terminal and type
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Guide you through a questionnaire to setup the project&lt;/li&gt;
&lt;li&gt;A package.json with all the project details will be generated&lt;/li&gt;
&lt;li&gt;Install some important pakages using this command
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i body-parser cors express nodemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a index.js in the same project directory
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const cors = require('cors');
app.use(cors());
app.use(bodyParser.json())
app.use(
  bodyParser.urlencoded({
    extended: false,
  })
);

app.get('/hello', (req, res) =&amp;gt; {  
  res.send('Hello Server!')
});

app.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin",  "http://localhost:3000");
  res.header("Access-Control-Allow-Credentials", true);
  res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT,PATCH");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
  next();
})

const PORT = process.env.PORT || 4000;
app.listen(PORT, () =&amp;gt; {

    console.log(`Server listening at ${PORT}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update the script in your pakage.json to use nodemon
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
    "dev": "nodemon index.js"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Open cmd from the project folder and type the cmd type
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Your server is running on localhost port 4000 &lt;/li&gt;
&lt;li&gt;Go to browser and open &lt;a href="http://localhost:4000/hello" rel="noopener noreferrer"&gt;http://localhost:4000/hello&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Create Azure App Services
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Login to Azure Portal and navigate to azure app services&lt;/li&gt;
&lt;li&gt;Create a new app service
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F296g4ii2s9wft0kjc5fx.png" alt="createAppService" width="800" height="697"&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Deploy Node App in Azure App Service
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create a build of the react and route to Node app
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a build using

&lt;code&gt;npm run build&lt;/code&gt;

of the frontend and add the build folder to your Node app&lt;/li&gt;
&lt;li&gt;Install package named path in node app and add route for your build index.html in build folder
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.use(express.static(path.join(__dirname, '/build')));
app.get('*', (req, res) =&amp;gt; {
    res.sendFile(path.join(__dirname, '/build', 'index.html'));
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Test the application locally&lt;/li&gt;
&lt;li&gt;Replace the script block in pakage.json with the below code
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
    "dev": "nodemon index.js"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deploying through github
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;After the app is created then navigate to resources and then to the recently created service&lt;/li&gt;
&lt;li&gt;In the left panel navigate to Deployment center&lt;/li&gt;
&lt;li&gt;Connect your github account and map the repository and branch. Save the changes&lt;/li&gt;
&lt;li&gt;From your local machine push the updated node app. &lt;/li&gt;
&lt;li&gt;Check your github repo action there it will be automatically deployed to azure app.&lt;/li&gt;
&lt;li&gt;Hit the url to check you app.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckcr200d3c5z9e469yxz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckcr200d3c5z9e469yxz.png" alt="deployCenter" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/debopriyadey/create-a-node-and-express-aws-lambda-function-gb5"&gt;Create a Node and Express AWS Lambda function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/debopriyadey/add-free-ssl-in-hostinger-using-zerossl-533l"&gt;Add free SSL Certificate in Hostinger using ZeroSSL.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>react</category>
      <category>node</category>
    </item>
    <item>
      <title>Schedule Google Meet Using HTML and JavaScript.</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Mon, 31 Oct 2022 04:40:53 +0000</pubDate>
      <link>https://forem.com/debopriyadey/schedule-google-meet-using-html-and-javascript-4gc2</link>
      <guid>https://forem.com/debopriyadey/schedule-google-meet-using-html-and-javascript-4gc2</guid>
      <description>&lt;p&gt;In order to schedule a Google Meet with the attendees, first you need to create a event in your calendar and share with all the attendees. &lt;/p&gt;

&lt;p&gt;For the same I had previously wrote a blog on how to create a event using HTML and JavaScript. Refer to this &lt;a href="https://dev.to/debopriyadey/fetch-and-create-events-in-google-calendar-with-html-and-javascript-1o6f"&gt;Blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog I will guide you to create a website using simple HTML and JavaScript through which you can automatically schedule a Google Meet in your calendar and also share the same with the attendees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an Event in Google Calendar.
&lt;/h2&gt;

&lt;p&gt;This is a very short explanation of creating an event. To read a brief explanation go &lt;a href="https://dev.to/debopriyadey/fetch-and-create-events-in-google-calendar-with-html-and-javascript-1o6f"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable Google Calendar API&lt;/li&gt;
&lt;li&gt;Create API key and Client ID&lt;/li&gt;
&lt;li&gt;Configure your OAuth Consent Screen and Publish your app&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following code in your &lt;em&gt;index.html&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Google Calendar API Quickstart&amp;lt;/title&amp;gt;
 &amp;lt;meta charset="utf-8" /&amp;gt;
 &amp;lt;style&amp;gt;
   form {
     margin: 10px;
   }

   fieldset {
     width: fit-content;
   }

   input {
     margin-block: 10px;
   }
 &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;!--Add buttons to initiate auth sequence and sign out--&amp;gt;
&amp;lt;button id="authorize_button" onclick="handleAuthClick()"&amp;gt;Authorize&amp;lt;/button&amp;gt;
&amp;lt;button id="signout_button" onclick="handleSignoutClick()"&amp;gt;Sign Out&amp;lt;/button&amp;gt;
&amp;lt;br /&amp;gt;
&amp;lt;form id="event_form"&amp;gt;
  &amp;lt;fieldset&amp;gt;
    &amp;lt;input type="text" name="title" id="title" placeholder="Add Title" class="input-title" /&amp;gt;
    &amp;lt;br /&amp;gt;
    &amp;lt;textarea type="text" name="desc" id="desc" placeholder="Add Descreption" class="input-title"&amp;gt;&amp;lt;/textarea&amp;gt;
    &amp;lt;br /&amp;gt;
    &amp;lt;label&amp;gt;Date&amp;lt;/label&amp;gt;
    &amp;lt;input type="date" name="date" id="date" /&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;label&amp;gt;Start Time&amp;lt;/label&amp;gt;
      &amp;lt;input type="time" name="st" id="st" /&amp;gt;
      &amp;lt;label&amp;gt;End Time&amp;lt;/label&amp;gt;
      &amp;lt;input type="time" name="et" id="et" /&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button type="button" onclick="addEvent()"&amp;gt;Schedule&amp;lt;/button&amp;gt;
  &amp;lt;/fieldset&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;pre id="content" style="white-space: pre-wrap;"&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;script src="./index.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the following code in your &lt;em&gt;index.js&lt;/em&gt; and set your API key and Client Id.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// TODO(developer): Set to client ID and API key from the Developer Console
const CLIENT_ID = "&amp;lt;YOUR_CLIENT_ID&amp;gt;";
const API_KEY = "&amp;lt;YOUR_API_KEY&amp;gt;";

// Discovery doc URL for APIs used by the quickstart
const DISCOVERY_DOC =
  "https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest";

// Authorization scopes required by the API; multiple scopes can be
// included, separated by spaces.
const SCOPES = "https://www.googleapis.com/auth/calendar";

let tokenClient;
let gapiInited = false;
let gisInited = false;

document.getElementById("authorize_button").style.visibility = "hidden";
document.getElementById("signout_button").style.visibility = "hidden";
document.getElementById("event_form").style.visibility = "hidden";

function gapiLoaded() {
  gapi.load("client", initializeGapiClient);
}

async function initializeGapiClient() {
  await gapi.client.init({
    apiKey: API_KEY,
    discoveryDocs: [DISCOVERY_DOC]
  });
  gapiInited = true;
  maybeEnableButtons();
}

function gisLoaded() {
  tokenClient = google.accounts.oauth2.initTokenClient({
    client_id: CLIENT_ID,
    scope: SCOPES,
    callback: "" // defined later
  });
  gisInited = true;
  maybeEnableButtons();
}

function maybeEnableButtons() {
  if (gapiInited &amp;amp;&amp;amp; gisInited) {
    document.getElementById("authorize_button").style.visibility = "visible";
  }
}

function handleAuthClick() {
  tokenClient.callback = async resp =&amp;gt; {
    if (resp.error !== undefined) {
      throw resp;
    }
    document.getElementById("signout_button").style.visibility = "visible";
    document.getElementById("event_form").style.visibility = "visible";
    document.getElementById("authorize_button").innerText = "Refresh";
    await listUpcomingEvents();
  };

  if (gapi.client.getToken() === null) {
    // Prompt the user to select a Google Account and ask for consent to share their data
    // when establishing a new session.
    tokenClient.requestAccessToken({ prompt: "consent" });
  } else {
    // Skip display of account chooser and consent dialog for an existing session.
    tokenClient.requestAccessToken({ prompt: "" });
  }
}

function handleSignoutClick() {
  const token = gapi.client.getToken();
  if (token !== null) {
    google.accounts.oauth2.revoke(token.access_token);
    gapi.client.setToken("");
    document.getElementById("content").innerText = "";
    document.getElementById("authorize_button").innerText = "Authorize";
    document.getElementById("signout_button").style.visibility = "hidden";
    document.getElementById("event_form").style.visibility = "hidden";
  }
}

async function listUpcomingEvents() {
  let response;
  try {
    const request = {
      calendarId: "primary",
      timeMin: new Date().toISOString(),
      showDeleted: false,
      singleEvents: true,
      maxResults: 10,
      orderBy: "startTime"
    };
    response = await gapi.client.calendar.events.list(request);
  } catch (err) {
    document.getElementById("content").innerText = err.message;
    return;
  }

  const events = response.result.items;
  if (!events || events.length == 0) {
    document.getElementById("content").innerText = "No events found.";
    return;
  }
  // Flatten to string to display
  const output = events.reduce(
    (str, event) =&amp;gt;
      `${str}${event.summary} (${event.start.dateTime || event.start.date})\n`,
    "Events:\n"
  );
  document.getElementById("content").innerText = output;
}

const addEvent = () =&amp;gt; {
  // Refer to the JavaScript quickstart on how to setup the environment:
  // https://developers.google.com/calendar/quickstart/js
  // Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
  // stored credentials.

  const title = document.getElementById("title").value;
  const desc = document.getElementById("desc").value;
  const date = document.getElementById("date").value;
  const start = document.getElementById("st").value;
  const end = document.getElementById("et").value;
  var ISOstartdate = "";

  const startTime = new Date(date + "," + start).toISOString();
  const endTime = new Date(date + "," + end).toISOString();

  var event = {
    summary: title,
    location: "Google Meet",
    description: desc,
    start: {
      dateTime: startTime,
      timeZone: "America/Los_Angeles"
    },
    end: {
      dateTime: endTime,
      timeZone: "America/Los_Angeles"
    },
    recurrence: ["RRULE:FREQ=DAILY;COUNT=2"],
    attendees: [{ email: "abc@google.com" }, { email: "xyz@google.com" }],
    reminders: {
      useDefault: false,
      overrides: [
        { method: "email", minutes: 24 * 60 },
        { method: "popup", minutes: 10 }
      ]
    }
  };

  console.log(event);
  var request = gapi.client.calendar.events.insert({
    calendarId: "primary",
    resource: event
  });

  request.execute(function(event) {
    console.log(event.htmlLink);
  });
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Schedule Google Meet
&lt;/h2&gt;

&lt;p&gt;You can associate calendar events with Google Meet conferences to allow your users to meet remotely via a phone call or a video call. &lt;/p&gt;

&lt;p&gt;The conferenceData field can be used to read, copy, and clear existing conference details; it can also be used to request generation of new conferences. &lt;/p&gt;

&lt;p&gt;To create schedule a Google Meet while creating the calendar event we require &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;requestId&lt;/code&gt; which can be a random string.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;calendarId&lt;/code&gt; of the event creator that we will get from the responce after the event is created.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;eventId&lt;/code&gt; which is a combination of the Id and the start date of the event created.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We need to create a new function within &lt;code&gt;addEvent&lt;/code&gt; function in our &lt;em&gt;index.js&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; async function createMeet(calendarId, eid) {
    const eventPatch = {
      conferenceData: {
        createRequest: { requestId: "7qxalsvy0e" }
      }
    };

    await gapi.client.calendar.events
      .patch({
        calendarId: calendarId,
        eventId: eid, // id + startdate.toISOString()
        resource: eventPatch,
        sendNotifications: true,
        conferenceDataVersion: 1
      })
      .execute(function(event) {
        console.log("Conference created for event: %s", event.htmlLink);
      });
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we need to call the &lt;code&gt;createMeet&lt;/code&gt; function in &lt;code&gt;request.execute&lt;/code&gt; method inside the &lt;code&gt;addEvent&lt;/code&gt; function in our &lt;em&gt;index.js&lt;/em&gt; add pass &lt;code&gt;calenderId&lt;/code&gt; and &lt;code&gt;eventId&lt;/code&gt; as the parameter. Therefore replace the &lt;code&gt;request.execute&lt;/code&gt; method with this code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;request.execute(function(event) {
    var ISOstartdate = new Date(event.start.dateTime).toISOString();
    var eid =
      event.id + "_" + ISOstartdate.replace(/[:-]/g, "").replace(".000Z", "Z");
    var calendarId = event.creator.email;
    createMeet(calendarId, eid);
  });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I have pushed my code in this &lt;a href="https://github.com/debopriyadey/google-calendar-api/tree/gmeet" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; on &lt;code&gt;gmeet&lt;/code&gt; branch you can fork it and add your innovations or if you want to contribute to this repository you can create a pull request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/calendar/api/guides/create-events#conferencing" rel="noopener noreferrer"&gt;https://developers.google.com/calendar/api/guides/create-events#conferencing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>googlecloud</category>
      <category>meet</category>
    </item>
    <item>
      <title>Add free SSL Certificate in Hostinger using ZeroSSL.</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Mon, 24 Oct 2022 11:40:42 +0000</pubDate>
      <link>https://forem.com/debopriyadey/add-free-ssl-in-hostinger-using-zerossl-533l</link>
      <guid>https://forem.com/debopriyadey/add-free-ssl-in-hostinger-using-zerossl-533l</guid>
      <description>&lt;p&gt;If you have hosted your website using hostinger and do not want to buy SSL for that domain you can add free SSL for upto 3 months from &lt;a href="https://zerossl.com/" rel="noopener noreferrer"&gt;Zerossl&lt;/a&gt;. The process is very simple and in this blog you will get a step by step guide on how to install the free SSL certificate on your domain.&lt;/p&gt;

&lt;p&gt;I assume that you have a hostinger account and a running website on some domain on Hostinger into which you want to install the SSL certificate&lt;/p&gt;

&lt;h2&gt;
  
  
  Downloading SSL certificate form Zerossl
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create an account on &lt;a href="https://zerossl.com/" rel="noopener noreferrer"&gt;Zerossl&lt;/a&gt;. You will  be redirected to the dashboard&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yta5vqcfo6898x7xwe2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yta5vqcfo6898x7xwe2.png" alt="Dashboard" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on New Certificate button to create a new certificate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter your domain name.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F058u8sdrn5mq5pzzqh5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F058u8sdrn5mq5pzzqh5e.png" alt="Domain name" width="772" height="290"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select validity as 90 days (free version) and keep the CSR and Contact on.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom3dtx3t1uwewtmuw9m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom3dtx3t1uwewtmuw9m9.png" alt="CSR" width="771" height="156"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the free plan and click on Next Step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Verification select the DNS(CNAME) option. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0pfk2ovw265x50stug6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0pfk2ovw265x50stug6.png" alt="Verify" width="783" height="647"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now go to your &lt;a href="https://hpanel.hostinger.com/" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt;. Then &lt;strong&gt;Hosting&lt;/strong&gt; &amp;gt; &lt;strong&gt;Manage&lt;/strong&gt; &amp;gt; &lt;strong&gt;DNS Zone Editor&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a CAA record with CA domain as &lt;code&gt;sectigo.com&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fzimh793i0sf61o14w5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fzimh793i0sf61o14w5.png" alt="CAA" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now add your CNAME record provided by Zerossl.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqjyg6lgxy26rvssvv6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqjyg6lgxy26rvssvv6r.png" alt="CNAME" width="800" height="146"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now go back to Zerossl and verify your. After successful verification you will be able to download the zip file of your certificate. Download and Extract it which should contain 3 files&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fny3ukc3iiys50jd0ysw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fny3ukc3iiys50jd0ysw2.png" alt="SSL Zip" width="645" height="236"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Install the SSL certificate
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to your &lt;a href="https://hpanel.hostinger.com/" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt; account. &lt;/li&gt;
&lt;li&gt;Go to the SSL tab. Select the domain and click on manage in which you want to install the SSL certificate.&lt;/li&gt;
&lt;li&gt;Now you need to import the SSL certificate.&lt;/li&gt;
&lt;li&gt;Copy and paste the &lt;strong&gt;certificate.crt&lt;/strong&gt;, &lt;strong&gt;privatekey&lt;/strong&gt; and &lt;strong&gt;cabundle&lt;/strong&gt; from the files extracted from the zip that you downloaded from zerossl.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabw5ri652fh50f3qx8wf.png" alt="Install" width="551" height="466"&gt;
&lt;/li&gt;
&lt;li&gt;Click on install. Now check the domain address in the browser it should show a secured connection.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Fetch and Create events in Google Calendar with HTML and Javascript.</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Sat, 22 Oct 2022 15:10:55 +0000</pubDate>
      <link>https://forem.com/debopriyadey/fetch-and-create-events-in-google-calendar-with-html-and-javascript-1o6f</link>
      <guid>https://forem.com/debopriyadey/fetch-and-create-events-in-google-calendar-with-html-and-javascript-1o6f</guid>
      <description>&lt;p&gt;The Google Calendar API is a RESTful API that can be accessed through explicit HTTP calls or via the Google Client Libraries. The API exposes most of the features available in the Google Calendar Web interface.&lt;/p&gt;

&lt;p&gt;This Blog is a step-by-step guide on how to create a simple website using just HTML and JavaScript where the user can fetch their calendar events and create new events.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Calendar API
&lt;/h2&gt;

&lt;p&gt;To read events from your public Google Calendars you’ll need create a Google API key for which firstly you need to have a google account. After that you need to go through the following steps to get the API key and other required key pair values. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://console.cloud.google.com/projectcreate" rel="noopener noreferrer"&gt;Create Project&lt;/a&gt; click on this link to create a new project. &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6iye48cea77jvku6yau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6iye48cea77jvku6yau.png" alt="Create Project" width="722" height="401"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/google/calendar-json.googleapis.com" rel="noopener noreferrer"&gt;Enable API&lt;/a&gt; go to this link and enable your Google Calendar API. Make sure that your recently created project is select. &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6lrk0yj8349lskrpodr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6lrk0yj8349lskrpodr.png" alt="Enable API" width="754" height="447"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next navigate to the credentials tab and click on CREATE CREDENTIALS and select API key from the dropdown.  After which a api key will be generated for your.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7xni99wia3jobo1xvvy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7xni99wia3jobo1xvvy.png" alt="Create cred" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next select the &lt;strong&gt;OAuth consent screen&lt;/strong&gt; tab and select User Type as External.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will be asked about you App Info. Give appropriate App Name and support email and click Save and Continue. Refresh the page and now Click on PUBLISH APP &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flyckzt6yetkkgzjjljl9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flyckzt6yetkkgzjjljl9.png" alt="Publish App" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now again go to the Credentials Tap and now create OAuth Client ID. Select Application type as Web Application and then authorize your domain URL on which your project will be running (if your are on development server give your localhost and the port on which the project is running). Now you will have your Client Id and Client Secret which we will use later for configuration.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5e0w9yyertuq0jr5yfp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5e0w9yyertuq0jr5yfp.png" alt="OAuth Client ID" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Integrating website with Google Calendar API
&lt;/h2&gt;

&lt;p&gt;Now we have the API key as well as the Client Id so we are ready to dive into coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fetch Events
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a folder, inside which create a HTML file and a JS file. Open the folder with VS Code and use the Live Server to run the &lt;em&gt;index.html&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following code in your &lt;em&gt;index.html&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Google Calendar API Quickstart&amp;lt;/title&amp;gt;
&amp;lt;meta charset="utf-8" /&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;Google Calendar API Quickstart&amp;lt;/p&amp;gt;

&amp;lt;!--Add buttons to initiate auth sequence and sign out--&amp;gt;
&amp;lt;button id="authorize_button" onclick="handleAuthClick()"&amp;gt;Authorize&amp;lt;/button&amp;gt;
&amp;lt;button id="signout_button" onclick="handleSignoutClick()"&amp;gt;Sign Out&amp;lt;/button&amp;gt;

&amp;lt;pre id="content" style="white-space: pre-wrap;"&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;script src="./index.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following code in your &lt;em&gt;index.js&lt;/em&gt;. Replace &lt;code&gt;&amp;lt;YOUR_CLIENT_ID&amp;gt;&lt;/code&gt; with the Client Id and &lt;code&gt;&amp;lt;YOUR_API_KEY&amp;gt;&lt;/code&gt; with the API key. You can find those from your Google Calendar API &lt;a href="https://console.cloud.google.com/apis/credentials" rel="noopener noreferrer"&gt;Credential&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  /* exported gapiLoaded */
  /* exported gisLoaded */
  /* exported handleAuthClick */
  /* exported handleSignoutClick */

  // TODO(developer): Set to client ID and API key from the Developer Console
  const CLIENT_ID = '&amp;lt;YOUR_CLIENT_ID&amp;gt;';
  const API_KEY = '&amp;lt;YOUR_API_KEY&amp;gt;';

  // Discovery doc URL for APIs used by the quickstart
  const DISCOVERY_DOC = 'https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest';

  // Authorization scopes required by the API; multiple scopes can be
  // included, separated by spaces.
  const SCOPES = 'https://www.googleapis.com/auth/calendar';

  let tokenClient;
  let gapiInited = false;
  let gisInited = false;

  document.getElementById('authorize_button').style.visibility = 'hidden';
  document.getElementById('signout_button').style.visibility = 'hidden';

  /**
   * Callback after api.js is loaded.
   */
  function gapiLoaded() {
    gapi.load('client', initializeGapiClient);
  }

  /**
   * Callback after the API client is loaded. Loads the
   * discovery doc to initialize the API.
   */
  async function initializeGapiClient() {
    await gapi.client.init({
      apiKey: API_KEY,
      discoveryDocs: [DISCOVERY_DOC],
    });
    gapiInited = true;
    maybeEnableButtons();
  }

  /**
   * Callback after Google Identity Services are loaded.
   */
  function gisLoaded() {
    tokenClient = google.accounts.oauth2.initTokenClient({
      client_id: CLIENT_ID,
      scope: SCOPES,
      callback: '', // defined later
    });
    gisInited = true;
    maybeEnableButtons();
  }

  /**
   * Enables user interaction after all libraries are loaded.
   */
  function maybeEnableButtons() {
    if (gapiInited &amp;amp;&amp;amp; gisInited) {
      document.getElementById('authorize_button').style.visibility = 'visible';
    }
  }

  /**
   *  Sign in the user upon button click.
   */
  function handleAuthClick() {
    tokenClient.callback = async (resp) =&amp;gt; {
      if (resp.error !== undefined) {
        throw (resp);
      }
      document.getElementById('signout_button').style.visibility = 'visible';
      document.getElementById('authorize_button').innerText = 'Refresh';
      await listUpcomingEvents();
    };

    if (gapi.client.getToken() === null) {
      // Prompt the user to select a Google Account and ask for consent to share their data
      // when establishing a new session.
      tokenClient.requestAccessToken({prompt: 'consent'});
    } else {
      // Skip display of account chooser and consent dialog for an existing session.
      tokenClient.requestAccessToken({prompt: ''});
    }
  }

  /**
   *  Sign out the user upon button click.
   */
  function handleSignoutClick() {
    const token = gapi.client.getToken();
    if (token !== null) {
      google.accounts.oauth2.revoke(token.access_token);
      gapi.client.setToken('');
      document.getElementById('content').innerText = '';
      document.getElementById('authorize_button').innerText = 'Authorize';
      document.getElementById('signout_button').style.visibility = 'hidden';
    }
  }

  /**
   * Print the summary and start datetime/date of the next ten events in
   * the authorized user's calendar. If no events are found an
   * appropriate message is printed.
   */
  async function listUpcomingEvents() {
    let response;
    try {
      const request = {
        'calendarId': 'primary',
        'timeMin': (new Date()).toISOString(),
        'showDeleted': false,
        'singleEvents': true,
        'maxResults': 10,
        'orderBy': 'startTime',
      };
      response = await gapi.client.calendar.events.list(request);
    } catch (err) {
      document.getElementById('content').innerText = err.message;
      return;
    }

    const events = response.result.items;
    if (!events || events.length == 0) {
      document.getElementById('content').innerText = 'No events found.';
      return;
    }
    // Flatten to string to display
    const output = events.reduce(
        (str, event) =&amp;gt; `${str}${event.summary} (${event.start.dateTime || event.start.date})\n`,
        'Events:\n');
    document.getElementById('content').innerText = output;
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the &lt;em&gt;index.html&lt;/em&gt; with live server on VS Code. This should appear.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxnppismbm9go233qpgw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxnppismbm9go233qpgw2.png" alt="Authorize" width="541" height="297"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After you click the Authorize button a popup will appear. You will be asked to authorize your google account. After you have authorized your account all the upcomming events from the calendar of that event will appear. (You may schedule some events in advance for testing)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfqvo5xusbjx1ur0ezjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfqvo5xusbjx1ur0ezjr.png" alt="Events" width="557" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till now we have successfully fetched the calendar Events Now we need to Create Events from our website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Events
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First we need to create a form in our &lt;em&gt;index.html&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form id="event_form"&amp;gt;
&amp;lt;fieldset&amp;gt;
  &amp;lt;input type="text" name="title" id="title" placeholder="Add Title" class="input-title" /&amp;gt;
  &amp;lt;br /&amp;gt;
  &amp;lt;textarea type="text" name="desc" id="desc" placeholder="Add Descreption" class="input-title"&amp;gt;&amp;lt;/textarea&amp;gt;
  &amp;lt;br /&amp;gt;
  &amp;lt;label&amp;gt;Date&amp;lt;/label&amp;gt;
  &amp;lt;input type="date" name="date" id="date" /&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Start Time&amp;lt;/label&amp;gt;
    &amp;lt;input type="time" name="st" id="st" /&amp;gt;
    &amp;lt;label&amp;gt;End Time&amp;lt;/label&amp;gt;
    &amp;lt;input type="time" name="et" id="et" /&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;button type="button" onclick="addEvent()"&amp;gt;Schedule&amp;lt;/button&amp;gt;
&amp;lt;/fieldset&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the addEvent function in your &lt;em&gt;index.js&lt;/em&gt;. Also make sure that your SCOPE is &lt;code&gt;https://www.googleapis.com/auth/calendar&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const addEvent = () =&amp;gt; {
  const title = document.getElementById("title").value;
  const desc = document.getElementById("desc").value;
  const date = document.getElementById("date").value;
  const start = document.getElementById("st").value;
  const end = document.getElementById("et").value;

  const startTime = new Date(date + "," + start).toISOString();
  const endTime = new Date(date + "," + end).toISOString();

  var event = {
    summary: title,
    location: "Google Meet",
    description: desc,
    start: {
      dateTime: startTime,
      timeZone: "America/Los_Angeles"
    },
    end: {
      dateTime: endTime,
      timeZone: "America/Los_Angeles"
    },
    recurrence: ["RRULE:FREQ=DAILY;COUNT=2"],
    attendees: [
      { email: "abc@google.com" },
      { email: "xyz@google.com" }
    ],
    reminders: {
      useDefault: false,
      overrides: [
        { method: "email", minutes: 24 * 60 },
        { method: "popup", minutes: 10 }
      ]
    }
  };

  console.log(event)
  var request = gapi.client.calendar.events.insert({
    calendarId: "primary",
    resource: event
  });

  request.execute(function(event) {
    console.log(event.htmlLink);
  });
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should be your final result&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftscw69l3aajbk95ior13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftscw69l3aajbk95ior13.png" alt="Final Result" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So far you have created a basic website where users can list their calendar events and also add new events. I have pushed my code in this &lt;a href="https://github.com/debopriyadey/google-calendar-api" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; you can fork it and add your innovations or if you want to contribute to this repository you can create a pull request. &lt;br&gt;
Do share your websites in the comment section also if you are still facing any issue, you can comment that down I will try to solve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Step
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/debopriyadey/schedule-google-meet-using-html-and-javascript-4gc2"&gt;Schedule Google Meet Using HTML and JavaScript.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/workspace/guides/configure-oauth-consent" rel="noopener noreferrer"&gt;https://developers.google.com/workspace/guides/configure-oauth-consent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/calendar/api/quickstart/js" rel="noopener noreferrer"&gt;https://developers.google.com/calendar/api/quickstart/js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/calendar/api/v3/reference?apix=true" rel="noopener noreferrer"&gt;https://developers.google.com/calendar/api/v3/reference?apix=true&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>googlecloud</category>
      <category>api</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Create a Node and Express AWS Lambda function</title>
      <dc:creator>Debopriya Dey</dc:creator>
      <pubDate>Tue, 18 Oct 2022 18:02:55 +0000</pubDate>
      <link>https://forem.com/debopriyadey/create-a-node-and-express-aws-lambda-function-gb5</link>
      <guid>https://forem.com/debopriyadey/create-a-node-and-express-aws-lambda-function-gb5</guid>
      <description>&lt;h2&gt;
  
  
  What is AWS Lambda
&lt;/h2&gt;

&lt;p&gt;Before deploying your first AWS lambda function lets talk a little bit about Serverless and AWS Lambda. If you already know much about this you can skip to the next part. &lt;/p&gt;

&lt;p&gt;At first serverless sounds like there is no server involved but that not the case. It simply means that you're not responsible for managing or provisioning of the server and as a developer you will just focus on writing the logic in your code.&lt;/p&gt;

&lt;p&gt;AWS Lambda is a serverless, event-driven compute service that lets you run code for virtually any type of application or backend service without provisioning or managing servers. Once you upload your code to lambda the service handle all the capacity, scaling pathing and administration of the infrastructure to run your code.&lt;/p&gt;

&lt;p&gt;Now lets get started to create and deploy your first lambda function.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating AWS accounts
&lt;/h2&gt;

&lt;p&gt;Firstly you need to create a AWS account for which you need to verify your credit or debit card. The process is very simple.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://aws.amazon.com/" rel="noopener noreferrer"&gt;AWS website&lt;/a&gt; and click on Create an AWS Account then a webpage will appear to verify your email. Fill up your email and verify the OTP.&lt;/li&gt;
&lt;li&gt;After creating your password you will be asked for your contact details&lt;/li&gt;
&lt;li&gt;After this you will be asked to verify the payment method. Here you have to add your Card details after which 2 rupee will be credited from your account for verification and then it will be refunded. &lt;/li&gt;
&lt;li&gt;After few more steps you will be logged in your AWS console.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03un0fhxt7iwph9plss0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03un0fhxt7iwph9plss0.png" alt="AWS Console" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting with AWS console
&lt;/h2&gt;

&lt;p&gt;Firstly we need to install the AWS CLI on our machine. &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" rel="noopener noreferrer"&gt;AWS CLI&lt;/a&gt; go to this link and download the version supported by your OS. After the download is complete run the installation process and now to check your installation open your command prompt and enter&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\&amp;gt; aws --version
aws-cli/2.7.24 Python/3.8.8 Darwin/18.7.0 botocore/2.4.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now in order to enable the serverless framework to communicate with our AWS account we need to create a IAM account. This is basically a service to manage who get access to what resources of our AWS account.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for IAM service on the search bar and navigate to same. There you need to create a user by clicking on Add user.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8xnj3850f7vaeneo3sm.png" alt="IAM Dashboard" width="800" height="265"&gt;
&lt;/li&gt;
&lt;li&gt;Give a username and and check the programmatic access option and click next. 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jm0s0etnww1mrap7mpm.png" alt="Add User" width="800" height="398"&gt;
&lt;/li&gt;
&lt;li&gt;Now you need to provide the permission to the users of what resources they can use. For now you can give AdministratorAccess (They have access to all the resources).
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0miqau9oq6rl3g66rdof.png" alt="Set Permission" width="800" height="383"&gt;
&lt;/li&gt;
&lt;li&gt;For the next two steps you can leave the column as it is and click on  Create User. You can copy the credential or Download the csv file. Later you need these to connect your machine to the AWS account.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5ok8kr9q8ouchckllte.png" alt="Credential" width="800" height="330"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now we will finally do the setup. For that we need to open our command prompt and &lt;code&gt;aws configure&lt;/code&gt; and then provide the access key and the secret key of the recently created user&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\&amp;gt;aws configure
AWS Access Key ID [****************TEUZ]: AK********3X
AWS Secret Access Key [****************Rh5l]: VVL******xKv9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we are all set to create and deploy our lambda function from our Command Prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Lambda function and Deploy
&lt;/h2&gt;

&lt;p&gt;Now we need to setup &lt;a href="https://www.serverless.com/" rel="noopener noreferrer"&gt;Serverless&lt;/a&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Just do a npm install to setup the serverless &lt;code&gt;npm install -g serverless&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter serverless and you will be given a list of templates. Select &lt;code&gt;AWS - Node.js - Express API&lt;/code&gt;. Your template will get downloaded &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu570qkks10ofmv050xty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu570qkks10ofmv050xty.png" alt="template" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the folder in VS code and check your template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we just have to deploy the code which might take few minutes. For that we need to open our project dir &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhtu1lvatnxx6xu3m0ky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhtu1lvatnxx6xu3m0ky.png" alt="deploy" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check your api by hitting on the provided endpoint from your browser or Postman.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9f251a32hr1up2g9ybs1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9f251a32hr1up2g9ybs1.png" alt="Test" width="726" height="368"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>node</category>
      <category>aws</category>
      <category>serverless</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
