profile-pic
Vetted Talent

Ayush Agrawal

Vetted Talent
Results-driven Node.js Developer with over 4 years of experience in backend development. Successfully led the design and implementation of scalable applications. Adept at utilizing modern technologies such as Node.js, AWS, Redis, and PostgreSQL to deliver high-impact solutions.
  • Role

    Senior Software Developer

  • Years of Experience

    4 years

Skillsets

  • Node Js - 4 Years
  • WebSocket
  • SQS
  • SNS
  • S3
  • Microservices Architecture
  • Lambda
  • EventBridge
  • Docker
  • API Gateway
  • Node Js - 4 Years
  • Github - 4 Years
  • Mongo DB - 2 Years
  • Rest APIs - 4 Years
  • RESTful API - 4 Years
  • Type Script - 2 Years
  • risk analysis
  • Fast Learner
  • Time Management
  • Teamwork
  • Redis
  • Postgre SQL
  • Mongo DB - 2 Years
  • Leadership
  • JavaScript - 4 Years
  • Express Js - 4 Years
  • AWS - 1.3 Years
  • Express Js - 4 Years
  • Node Js - 4 Years
  • MySQL - 4 Years

Vetted For

14Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Backend Developer(Remote)AI Screening
  • 37%
    icon-arrow-down
  • Skills assessed :AWS SDK, dotenv, Hubspot.API, Mailgun.JS, OpenAI, Passport, Bcrypt, Node Js, Socket.IO, Twilio, TypeORM, Express Js, MySQL, Type Script
  • Score: 33/90

Professional Summary

4Years
  • Oct, 2023 - Present1 yr 11 months

    Senior Software Developer

    Dataflow Group
  • May, 2021 - Sep, 20232 yr 4 months

    NodeJS Developer

    DistrictD
  • Aug, 2020 - Jan, 2021 5 months

    NodeJS Developer Intern

    LineupX

Applications & Tools Known

  • icon-tool

    NodeJS

  • icon-tool

    ExpressJS

  • icon-tool

    TypeScript

  • icon-tool

    PostgreSQL

  • icon-tool

    MySQL

  • icon-tool

    MongoDB

  • icon-tool

    Redis

  • icon-tool

    AWS

  • icon-tool

    S3

  • icon-tool

    Lambda

  • icon-tool

    SQS

  • icon-tool

    SNS

  • icon-tool

    API Gateway

  • icon-tool

    Docker

  • icon-tool

    WebSocket

  • icon-tool

    RESTful API

  • icon-tool

    Microservices architecture

Work History

4Years

Senior Software Developer

Dataflow Group
Oct, 2023 - Present1 yr 11 months
    Designed and built a highly scalable and secure web application from the ground up using NodeJS, Express.js, PostgreSQL, ensuring robust data validation, comprehensive system security, and a seamless user experience. Integrated third-party services and APIs to enhance application functionality and designed and implemented RESTful APIs for efficient data exchange. Provided production support by resolving various issues on live systems, maintaining optimal performance, minimizing downtime and ensuring high availability for users. Design and implement a microservice architecture to ensure seamless integration and communication between services.

NodeJS Developer

DistrictD
May, 2021 - Sep, 20232 yr 4 months
    Designed and implemented robust wealth management modules using NodeJS, PostgreSQL, jQuery, and EJS, enhancing the functionality and performance of financial applications. Identified and resolved issues in existing system, debugging and refactoring code, improving system performance. Worked closely with clients to gather and analyze problem specifications, ensuring that solutions met business requirements and expectations. Also led a team of 3 members, coordinating tasks, providing guidance to them.

NodeJS Developer Intern

LineupX
Aug, 2020 - Jan, 2021 5 months
    Developed and managed the company website, handling backend API creation, integration with server-side logic, and database management using Node.js, Express.js, and MongoDB. Conducted regular testing and debugging to ensure code quality and functionality.

Achievements

  • SPOT Award in Dataflow Group (Best Performer for outstanding achievements and contributions)
  • Event Coordinator in Rotaract Club (Planned and executed events, leading teams)
  • Publicity Head in ASEE (Managed publicity, promoted events and boosted awareness)
  • SPOT Award in Dataflow Group

Major Projects

2Projects

Social Developer Website

    Developed a platform for developers to showcase their profiles, share GitHub repositories, and manage posts. Implemented features using NodeJS, MongoDB, JavaScript, jQuery and EJS.

Social Media Website

    Created a social platform similar to Facebook with features for posts, comments, friend requests, and media uploads. Built using Node.js, Express.js, MongoDB, JavaScript, jQuery, and EJS.

Education

  • BTech, Electrical Engineering

    Bharati Vidyapeeth University College of Engineering, Pune (2020)
  • Higher Secondary Education, Maths

    G.C.S.S College, Ranipatra (2015)

Certifications

  • Coding ninjas - teaching assistant - (enhanced javascript and nodejs skills for students)

  • 100xdev by harkirat singh - full stack web development with aws course

  • Coding ninjas - teaching assistant

  • 100xdev by harkirat singh

AI-interview Questions & Answers

My name is, and I have 4 day of experience.

Everyone. And I have 4 year of experience as a Node JS developer, uh, mainly in the back end development. And I have completed my studies in Pune in the Bhardi Vidya Pit, uh, University College of Engineering, Pune. I have worked on the various projects, uh, like finance system verification process and equipment platform. So these are the major leap plat you know, uh, uh, projects which I have worked on, And I am, uh, I am always eager to learn the new technologies and best best practices. Uh, I have experienced in the, uh, SQL and the NoSQL both type of database, uh, Node. Js expenses, uh, and, uh, in in the in the in the SQL database, I have experience in the postgreSQL, uh, no c MySQL. And in the, uh, no SQL database, I have experience in the MongoDB. And, also, I have knowledge of the AWS. So I have work on the AWS Lambda functions, AWS SQS, AWS, uh, you know, you know, SNS, uh, Evenbras, uh, Cognito's, uh, EC ECS. I have worked on these type of the technologies also. And, um, I also I have also knowledge of the, you know, socket, uh, WebSockets, like, socket IO, uh, libraries. And, you know, for the messaging system, I work on the Twilio. So, yeah, I have, uh, I have worked on this type of the

Okay. So, um, uh, we know, uh, for the bidirectional type of communication, we required the, uh, WebSocket. Okay? So what is the web? First, I will for using the socket IO, we understand the what is a WebSocket. So WebSocket is a, uh, bidirectional bidirectional, uh, provide the persistence connection. Okay? Is a is a is a protocol, which is used to, uh, provide the bidirectional, uh, and the persistent connection. So what happened, uh, if if we want to continuously ask something from the server, so you need to, uh, you need to send some request to the servers. Okay? For example, for example, on the, uh, we we can say on the finance system where we are seeing the, uh, where we are seeing the, like, uh, you know, stock prices. So stock prices change in every second. Okay? So, uh, if you if you pull the, uh, server in each each second, so it might get hampered, uh, or it might get hampered. So, uh, here, what we can do, what we can, uh, you know, create a single connection over the on the, uh, server. And whenever, uh, anything update on the server side, uh, or anything which we client want from the server, so it can it can don't they don't need to connect the, uh, you know, uh, connection, um, multiple times. Even the single on the single connection, uh, on the single TCP connection, they can communicate on they can send in the events. So it, you know, uh, it, uh, decrease the, uh, bandwidth. So so that, uh, you know, you you you can you can send the easily data on over the server. So, yeah, this is the feature on socket dot ios library, which is, uh, work on the top of the, you know, WebSocket. So socket ios library we use to, you know, communicate with the client and server in the bidirectional communication. Okay. So in the chatting app in the chatting application, what we can do in the we can use a socket IO library and the in the socket library, we we we have first cleared the connection over the over the over the server and the client. So this connection is, you know, uh, auto connected. So if some some, you know, uh, some, you know, failure happened in the in your server and all things, so this connection will automatically reconnect. So in that, you can create a a broadcast. You can get a room, you know, okay, using the socket IO library. So so that I provide this stand of the feature. So yes. So using socket IO, first, you have to, uh, you know, uh, create a create a, uh, you first, we'll listen the message and you get the room and broadcast. And based on the room and broadcast, you can send the message to the, uh, consumer end. Yes.

What pattern would you use to ensure secure and structured error handling in SPSS? Okay. To ensure secure and structured error handling in an its previous application. So I can use a different pattern, uh, for the, uh, you know, security and the structure error handling. Like, uh, we start from the basics. Okay? So first, what we can do, uh, first, we can, uh, we can we will use the HTTPS instead of HTTP. It's a more secure version. Okay. Um, so, uh, so, uh, basically, HTTPS use the TCP connect, uh, work on the single, uh, single TCP connection. Okay. Uh, so, you know, we can use your first, uh, HTTPS, uh, then second. Second, what we can do, we can, uh, use the joy, uh, validations. Uh, okay. So what what joy validation do, it will, uh, sanitize your, uh, inputs which comes from the client side. So sometimes what happen, uh, suppose a hacker present in the middle of this client and the server. Okay? If clients send some request on the server or, uh, like, uh, on the query parents. Okay? And and, uh, in the hacker, in the middle of the hacker, he performs some some any type of SQL injections. Like, he can put in the delete query, delete table queries. Okay? So if you know if you don't sanitize the input, then what happens? Um, your your database can hamper or some, you know, attack attack attacker can attack something on on your server. So, uh, by, uh, so we can provide some security, uh, parameters on the on the, you know, on the, uh, before going to server on the, uh, middle of the server, uh, using the, uh, uh, what we can, joy validations. So it will sanitize your input that what type of input you want. So, you know, this type of things, uh, which which which which which way which we can, uh, ensure, uh, that going to the from that going to the back end server. Before going to back end server, we can sanitize all the data. So okay. And the third one we can use for the error handling, like, uh, we can use a try catch mechanism. So whenever we are in the controller or in the services, what we can do, uh, whenever we're writing the functions. So in that, we can provide the try and catch block. So in the try in the try block, we write our all the logics. Okay? In the catch block, we handle the error. So if in the try block, we got any type of the error, any type of, like, database error or, you know, logic error, uh, end type of error, uh, like, syntax error, which which will come into the which will come into the cache block. And in the file file is our the main file where, uh, everything your your your application, we start the running. Okay? In the in the uploads file, we can provide the error handling middleware. So if any error error occur in that catch block, so which will come to the, you know, that uploads file error handling block and where we can define, okay, what type of error and what type of page we will shown on the server, uh, on the client. And, you know, if you want to save the error in our database, so we can, uh, we can, uh, you know, we can also save the database error in the database. If you if you want to notify, uh, someone that, okay. If you got the error, then we can, uh, you know, uh, we can, uh, notify there. So, uh, we can use a try catch block for the error handling.

So, uh, here I can see, uh, we are creating the connection and again and again. Okay. So what we can do, we can first create the connection, and after the connection, we, uh, you know, first time created after then we can listen the events, like, on and, you know, like event message and disconnect this kind of thing. Yeah. This is a better way to, uh, handle this in socket. Io.

What is the best approach to manage and apply configuration changes? So, uh, the so in the multiple environment means, like, UA, UAT, and production. Okay. So what we can do? Uh, so we have a configure configuration changes. Configuration changes means if you change some configuration, like, uh, for example, you have a database pass you have a database. Okay? So there is a database password, database URL, database port, this kind of thing. Like, you have some third parties APIs or or or we can say ports and all things. So, uh, in the this all those things which are used to configure configure to some something on something. So these are the these are the variables or, you know, the things we can put in the dotenv file. Okay. So we can create the multiple dotenv file based on the our environment, like q environment, port environment, and keep all of these things in our environment file. Okay? Our environment files in the configuration level. So what happens if if, uh, so based for example, uh, what we can say, uh, for our for our uh, q environment, uh, that, uh, the database is, uh, different database we are using. Okay? We are using the post database, but the, you know, URL is a different for that. And but in the protestant, we are the different URL because in the database, they have separate. So both of the different different, uh, different different configuration URL. Okay. So we we we put the the those URL based on their environment. Like, you have the QA, uh, URL and the, you know, you, uh, you have the u a t URL protestant of the protestant URL development is a development URL. So we based on our environment, we can create the, uh, environment file and put all of this configuration, uh, over there. So it will it will also also and whenever we have push our code into the server, you know, into the production, so we don't need to push that environment file. Okay. So these environment files are all, uh, already available in our server. Okay. And we don't have to, you know, um, uh, uh, share this environment file to everyone.

The system is a perfect authentication. System is a video. So 2 factor, uh, authentication system using Twilio in a notice. Okay. So, uh, what is the first two factor authentication? Okay. So, like, whenever whenever you log in on a whenever you log in, uh, log in log in on a system. Okay? Like, uh, you type the user ID and password. So after log in, uh, some, uh, the system asks you to do some OTP, okay, or some, you know, pattern matching. This kind of thing system ask you. So that's why the 2 factor authentication. Okay. So what happens, uh, here what can work we can see, uh, we can, um, so suppose, um, we have we have a we have a system where we we are we can log in our system. Okay? So whenever we try to log in the system, okay, at this at the time, uh, we enter the our username and password. Okay. After entering the username password, what we can do, we can send a OTP to that user, okay, for the for the 2 factor validation. So when they put their OTP on our system and we verify if the OTP is correct, only then we can authorize them to enter our system. So Twilio is basically library, uh, provided by the third party library, which provided sending a OTP to the users. Okay. So this is a major way, uh, where we can, uh, where we can, uh, you know, provide the authentication or provide the, uh, 2 factor authentication on our system.

It is how you could manage asynchronous processing in Node. Js to optimize how you do how do you manage a single processing in Node JS to optimize performance when integration multiple third party APIs. Okay. Okay. So when we integrated multiple third parties APIs, what we can do, we basically we use a synchronous await functions, uh, a synchronous await functions. Okay. So, uh, we can, uh, so if if those third parties API are dependent to each other, okay, it means, uh, if if one API will, uh, give the output and those API output will, uh, use in the another API. Okay? Then what we can do, we can use a synchronous await in the await. We provide the each and every API, like, await API 1, await API 2. So all these spends will come, and we store them. Okay. If those APIs are, uh, not dependent, these are only dependent, what we can use, we can create a promise. Okay. And in the promise, we put the single API. So like that, we can get the multiple promises. Okay. Like, in the promise 1, we have a API 1. In the promise 2, we have we have a in the promise 3, we have an API 3. And that we can use we can use a child processing for that or the we can use the promise all method permission all method or the, you know, child process, we have a spawn method or fork method we can use so that those API will run parallelly. Instead of 1 by 1, they can run the parallelly. So like this approach, we can handle, you know, uh, we we can handle the asynchronous programming in, uh, in Node. Js. So, basically, as, uh, whenever whenever email in any any third party API or this API is a call to, uh, so Node. Js offload this task to the lever, and lever handle this time this kind of thing, uh, this kind of thing. So, yes, we can use the promises, uh, methods like promise at all, or we can use a child process method like spawn, uh, spawn or folk, uh, for, uh, to manage it, uh, you know, mult to handle the multiple third party APIs call in our Node. Js applications.

Machine managing. So, uh, in, uh, experience, what is the most effective way to manage state manage state in real time application, uh, in user server? Okay. So, um, socket whenever the socket IO connection will establish okay. So, uh, so, uh, those connection with the state. So we know, uh, we know, uh, we know, STD v is a stateless first when we when we create a persistence connection. So at the time, we have to provide the, uh, state on the client and the server, both both the both the both the both the things so that they can communicate with each other. Okay. So we can use we can we can use some user identity on the client and also server end. So whenever a request will come, okay, whenever request will come, uh, whenever, uh, you know, uh, will come, so we don't have to make the database call and all things. And, directly, we can we can we can they see, okay, uh, for what, uh, broadcast or for what channel this message has come. Okay. So, you know, this is the way, uh, we can, uh, manage the state in the socket. Io.