profile-pic
Vetted Talent

Mritunjoy Mahanta

Vetted Talent

I'm a Full Stack Developer mostly focused on JavaScript domain with a little bit knowledge of python programming as well with overall experience of 3years. Also I've a keen interest in Japanese language, and I'm also JLPT N5 certified. Very much enthusiastic about new technologies.

  • Role

    Engineer II

  • Years of Experience

    5.3 years

  • Professional Portfolio

    View here

Skillsets

  • Git
  • Styled component
  • TypeScript
  • React.js
  • Node.js
  • Next.js
  • MongoDB
  • Material UI
  • Google cloud vision api
  • Github
  • JavaScript - 4.0 Years
  • Express.js
  • Ant Design
  • Jira
  • AWS
  • Redux - 4 Years
  • AWS
  • Tailwind CSS
  • DynamoDB
  • JavaScript - 4.0 Years

Vetted For

10Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Full Stack Engineer - React JS and Node JS (Remote)AI Screening
  • 63%
    icon-arrow-down
  • Skills assessed :AWS, Git, Meteor Js, Mongo DB, Node Js, React Js, JavaScript, Jenkins, Problem Solving Attitude, React Native
  • Score: 57/90

Professional Summary

5.3Years
  • Jul, 2024 - Present1 yr 11 months

    Engineer II

    Apexon
  • Oct, 2022 - Jun, 20241 yr 8 months

    Senior Software Developer/Team Lead

    Algoscale Technologies
  • Sep, 2021 - Oct, 20221 yr 1 month

    Full Stack Developer

    Omind Technologies
  • Mar, 2021 - Aug, 2021 5 months

    Software Developer Intern

    Xanther Services

Applications & Tools Known

  • icon-tool

    Git

  • icon-tool

    React

  • icon-tool

    REST API

  • icon-tool

    Node.js

  • icon-tool

    Express.js

  • icon-tool

    MongoDB

  • icon-tool

    Amazon DynamoDB

  • icon-tool

    AWS (Amazon Web Services)

  • icon-tool

    Amazon S3

  • icon-tool

    Amazon EC2

  • icon-tool

    TypeScript

  • icon-tool

    Redux Toolkit

  • icon-tool

    Next.js

  • icon-tool

    DynamoDB

  • icon-tool

    AWS EC2

  • icon-tool

    AWS S3

  • icon-tool

    AWS Amplify

  • icon-tool

    Nginx

  • icon-tool

    OpenCV

  • icon-tool

    Tesseract

  • icon-tool

    Agile

  • icon-tool

    Jira

  • icon-tool

    Trello

  • icon-tool

    React Js

  • icon-tool

    Typescript

  • icon-tool

    Material UI

  • icon-tool

    styled component

  • icon-tool

    Ant Design

  • icon-tool

    Node Js

  • icon-tool

    AWS EC2

  • icon-tool

    AWS S3

Work History

5.3Years

Engineer II

Apexon
Jul, 2024 - Present1 yr 11 months
    Worked on diverse bug fixes and developed new functionalities based on client requirements, ensuring optimal performance and user experience. Collaborated closely with the backend team to fetch and display personalized data, achieving seamless integration across the application. Actively engaged with the client at their onsite location to gather requirements, understand expectations, and deliver tailored solutions aligned with business goals. Designed and developed a new module from scratch called BANCA, which is actively used by bank employees as well as end-users for a self-service (DIY) banking journey.

Senior Software Developer/Team Lead

Algoscale Technologies
Oct, 2022 - Jun, 20241 yr 8 months
    Led a team of frontend developers by assigning tasks, reviewing code, and ensuring timely delivery of high-quality features and fixes. Spearheaded the development and optimization of various functionalities and bug fixes in alignment with client requirements. Significantly improved product performance, reducing page load time from 55 seconds to just 2 seconds through efficient state management, reducing unnecessary API calls and code optimization. Engineered performant data handling solutions to display thousands of records in tabular format without compromising user experience or application speed. Collaborated closely with the backend team to fetch and integrate personalized data, ensuring a seamless and robust data layer. Designed and developed a dedicated Client User module from scratch, tailored to specific business needs.

Full Stack Developer

Omind Technologies
Sep, 2021 - Oct, 20221 yr 1 month
    Designed and developed a QA validation tool from the ground up to improve contact center quality control and automation. Led end-to-end development across both frontend and backend, ensuring a fully integrated and scalable full-stack solution. Implemented advanced Audio-Text Synchronization with real-time text highlighting, inspired by platforms like Spotify, to enhance transcript clarity. Built dynamic form capabilities for creating unique, auto-detectable Tags based on audio transcription, enabling smarter analytics and categorization. Automated the Customer Support Feedback Form process, significantly reducing manual work and enhancing evaluation efficiency. Developed a drag-and-drop-based user permission management system, allowing non-technical users to assign roles and access levels with ease. Created an interactive Word Cloud feature to analyze and visualize frequently spoken words by both customers and support agents. Managed and executed deployment to production environments, ensuring smooth and secure releases.

Software Developer Intern

Xanther Services
Mar, 2021 - Aug, 2021 5 months
    Designed, developed, and launched Business Easy, a full-fledged E-Tax filing platform similar to ClearTax, providing seamless online tax solutions for businesses. Single-handedly handled both frontend development and backend API design, ensuring a cohesive and efficient user experience across the application. Integrated Razorpay for secure and reliable payment processing, enabling users to complete transactions with ease. Architected the platform to support scalable user onboarding, tax form submissions, and document handling. Deployed and managed the application using AWS services, ensuring high availability, data security, and performance.

Achievements

  • Developed QA validation tool for contact center from scratch
  • Reduced the QA validation time as well as cost by 90%
  • Handled Deployment into production
  • Optimized the product performance from 55 seconds to 2 seconds.
  • Handled thousands of data in most of the parts of the application page in the form of a Table without any performance issues.
  • Collaborated with the backend team to obtain personalized data, ensuring a seamless integration for the application's data layer.
  • Created a separate module from scratch for the Client user.
  • Developed a QA validation tool for the contact center from scratch.
  • Created Features like Audio Text Synchronization with text highlighting features, like Spotify.
  • Created dynamically added form fields to create a unique thing called Tags, where the application can automatically detect the tags from the audio transcription.
  • Created Feedback form automation for the Customer support executive, which reduces the manpower to maintain the quality of any contact center.
  • Created Drag-and-drop-based user permission page.
  • Created a word cloud feature to find out the most spoken words by the customer and the customer support executive.
  • Handled Deployment into production.
  • Developed a product that gives a solution for E-Tax files.
  • Integrated Razor pay as payment gateway.

Major Projects

1Projects

DOCR Automated Document Processing for Hiring

    Developed and delivered DOCR, an intelligent document processing tool designed to streamline the HR hiring process by extracting structured data from documents like Aadhaar and PAN cards. Engineered frontend components using React and TypeScript with Material UI, and built backend APIs with Node.js and MongoDB. Implemented document upload and parsing workflows, automated manual data entry, and enabled real-time data validation and preview features.

Education

  • Electronics & Communication Engineering

    Birbhum Institute Of Engineering & Technology (MAKAUT) (2021)

Certifications

  • React

  • JavaScript

  • MERN

  • Qualified jlpt n5

AI-interview Questions & Answers

Mithun J. Mohanty, I'm from Bolpur, which is in the Birbhum district in West Bengal. I have three years and two months of experience in full stack development. Mainly in ReactJS, NodeJS, ExpressJS, and MongoDB, which is a NoSQL database. I also work on DynamoDB. Additionally, I have experience with a little bit of AWS, including EC2 instances, AWS Amplify, and S3 Buckets. My current project is called Elite Primary, which is in the real estate domain. In this project, I'm working as a front-end developer, handling the front-end stuff and leading the front-end team using ReactJS, Redux, TypeScript, and Style Component. Before that, I worked on a project called Mindvoice. Mindvoice is a quality management tool for contact centers. In this project, I worked as a full-stack developer, handling both the front-end and back-end parts. For the front-end, I used ReactJS, Redux, TypeScript, and Ant Design, while for the back-end, I used Node.js, Express.js, and MongoDB. We also used EC2 from AWS for hosting purposes. The project Mindvoice is about recording calls at contact centers. Based on these recordings, quality assurance engineers rate the agents' performance. This process was previously time-consuming and labor-intensive, but after we built the project, it automatically detected fraud and agent quality. It transcribed the calls and used this transcription to rate the agents. Before that, I worked on a project called Business Easy. Business Easy is an e-commerce platform for e-text filing. In this project, I also worked as a full-stack developer, handling the project from scratch.

Can you leverage React's context API to manage global state in the application? And how does it differ from state manual libraries like Redux? So, in content, leverage React context API to manage global state. Yeah, so why do we have to let's suppose we have a parent component, right? And then inside that, we also have a child component, and inside that we are also having another child component, so a grandchild component. So let's suppose I need data, which is present in the parent component, right? And also I need the same data in the grandchild component. So what we have to do, like in a normal state, if you just try to pass that same data, either we have to call that same API from the grandchild component, and that's not a very effective way or efficient way to do that. And another way we can do, like we have to pass that data from the parent component to the child component, and then again to the child to the grandchild component. So that is also not an effective way or efficient way, because the child component is actually getting that data unnecessarily, and the data can leak from that child component, right? So what context API does, it creates a separate store, and whenever we just need the data, instead of just passing it from the parent to child and child to grandchild, we can directly call that data from that store, inside that grandchild component. It just wraps our context, we have to wrap up our context to that whole, initially we have to wrap up our app, which is the initial component, to that context provided, and then we can do that. What's different from Redux also works like the same way, but what is the difference, is that Redux is a very huge tool, it's an external library, and it doesn't work with only with React, it also works with Angular as well. So that's the one difference, and also context API actually comes with Redux, and whenever we just create a mid-size application, that time if we can use context API, that is fine for it, but for a very large scale of application, where we have to manage a lot of state, it is recommended to use Redux, instead of using the context API.

to demonstrate how you would use NestJS guards for implementing a role-based access control. So for role-based access control, what we can do is create a role in the user schema, let's suppose. In the user schema, we can pass fields such as first name, last name, email, phone number, and then a schema called title, or role. We should handle it by giving the value as a numeric value for that role, that is like 0, 1, 2, 3, 4, and so on. If the number is higher, then depending on that higher number, that user has more access. Let's suppose we have three types of users: one for normal users, another for managers, and the third for super admins. We can pass the role value as 0 for normal users, 1 for managers, and depending on that, we can show different views or functionality. In the front-end side, whenever we do a login, we can check the role of the user, if it's 0 or 1, and depending on that, we can show different views or functionality. We can also create a higher-order component that checks the role of the user and implements the role-based access control.

Illustrate how you would set up a mongodb replica set to provide high availability for a Node.js application Set up a mongodb replica set to provide high availability for a Node.js application So what we can do, replica set to provide high availability for a Node.js application Let me open up my editor Let me create a new folder For mongodb implementation, what we can do For mongodb implementation, what we can do I thought we have to demonstrate that I thought we have to demonstrate that We can use something called mongoose To connect with the database, we can use mongoose That's a separate package we have to install We can do something like mongoose.connect We can do something like mongoose.connect We can do something like mongoose.connect We can use mongoose.connect We can use mongoose.connect We can use mongoose.connect We can use mongoose.connect We can get the connection string from there We can use mongoose.connect We can use mongoose.connect We can use mongoose.connect We can use mongoose.connect We can get the connection function, from there We can get the connection function, from there

strategy for merging complex feature branches with git, merging complex feature branches with git while ensuring minimal disruption to the main development branch. Demonstrate a strategy for merging complex feature branches with git while ensuring minimal disruption to the main development branch. So, what we can do for merging a branch, what we can do initially, what I do, let me demonstrate this from scratch. Let's suppose I have a main branch, and all the things are actually merged to the finally into the main branch. Right, so what you can do is let's suppose I am creating a new branch called staging branch, and I just need to merge that. I just need to take that main branch code to the staging branch first, and then we can later on, whatever changes we are doing in the main staging branch, we can just merge it to the main branch. So, what we can do is the command we have to do is like git initially. We can do like git stash to stash all the changes, whatever we did, so that we don't miss out all the changes, whatever we did earlier. And then, what you can do is git checkout and with the sign of minus b to create a new branch, and then giving up the new name, that is the staging branch. So, I will just pass the new name after minus b or dash b space staging, and then we can pass the main name because we are taking all the code from the main branch. And then, if you just press the enter, it will create a new branch in the name of staging, and then what will happen is it will create a new branch from the main branch, taking the code from the main branch. Also, we can after that do something like git stash pop, so that whatever changes we have done, and whatever are in the stash, we stashed earlier, it will be popped up, I mean, it will be come here again in this new branch, so that is the staging branch. And whatever changes we have to make, we can just select all those, or like git add, and select all those files. And then, what we can do is like we can do like git commit and minus m for message, and then pass it, pass the message, whatever we commit message, whatever we want to do. Add, and then we can do something like git push origin, and to that branch name, that is that staging branch, right, so that staging. And then, these changes will be there in the staging branch, and later on, what we can do is like git merge, we can write that git merge command, and then them with the branch name that main branch, and also that current branch name. Otherwise, if you go to, if you are using github or gitlab, for that, we can do like we can directly go to the github or gitlab portal, and then we can create a pull request for that one, or the merge request for that, from them, for that staging branch to the main branch. And then, it will come up, come up a merge request in the main branch, and we can merge the code from there. So, that's the way we actually do the git merging the complex feature.

How do you integrate a client-side React application with a server-side Node.js backend, ensuring secure API calls and data transfer? So, to integrate a client-side React application with a server-side Node.js backend, ensuring secure API calls and data transfer, we can use something called CORS. CORS is a cross-origin resource sharing. And what it does is, it actually allows you to take the data or fetch the data from a different origin, or it allows the server to call it from a different endpoint or from a different server. So, let's suppose if you are not using CORS in your backend application, then what will happen? If you try to call that API, after creating all the, let's suppose I'm creating an API for getting the user. So, if you try to call the API from the frontend, so the port number is different, right? So, although it's running in the same machine, but the port number is different, right? So, let's suppose the frontend is running in port 5050, but the backend is running in port 4000. So, then it will give us some CORS error in the terminal or in the browser console. So, you can see it there, that there is a CORS error. So, that means that it doesn't allow, the backend server is not allowing it to call the data from a different server. So, in that case, we have to install CORS in the backend server, and then what we can do, in the Node.js application, what we can do in the main file, like the index.js file, we can create a, we can import the express.js from the express library, and then let's suppose I'm just initializing that express.js in a variable called app. So, we can use like app.use, and then inside that, we can just call the CORS, C-O-R-S, and just pair of parentheses. So, and before that, we also have to import that CORS as well, install and import that CORS as well. So, that's how we can do the secure API call for data transfer.

There is an issue when this component is unmounted. And then the component will unmount if there's anything we should do here. What we have to do here is unmount the state from here. So in this case, in this component will unmount. In this case, what we have to do is stop the fetch API call. So what we can do is use a function that will prevent the fetch API call or cancel the API call. So basically, that's the thing. We have to cancel the fetch user data call in the component will unmount. So what will happen? Let's suppose we're going to the user's page, and then the user profile page, the API will call, right? So it's the component that mounts, so initially it will be called. But let's suppose, and then instantly we're just clicking on the other page, like the home page. So that time, what will happen is we don't need that API, right? So that will be an unnecessary resource-taking thing. So we have to unmount that component and cancel the fetch user data function. So the user fetching doesn't happen and that resource won't be taken because we don't need the data. So we have to cancel the API call, that's what we have to do.

In this Node.js code block, can you spot any issues that might affect scalability or cause potential errors in handling asynchronous operations? Function fs.readfile path utf-error-data if-error-thrower-console-log-data In this fs.readfile, we have to make it as asynchronous operation because whenever we just try to read a file, that is an asynchronous operation. We can use an async await method here so that inside that await we can just log this data and otherwise we can handle the error from there. So inside the try-catch, let's suppose I'm just passing instead of this if-error, we just, this is fine, if-error, this is fine, but then we can pass something called a try-catch inside the try block, we can pass this, we can store this data inside a variable and then that is the await inside that await and then console log this data, otherwise in the catch, we can just catch the error and then console log that error or whatever we want to do in the error, so that's what we can do in this function.

I would deploy the following strategies to optimize the performance of a React Native application integrating with a Node.js packet. Initially, in the Node.js server, I would use the clustering thing to make it a multiple cluster and multiple thread, so that it will be a lot more easier or a lot more scalable whenever there is a multiple user for this one, I mean for that actual application and that doesn't break that application very easily. That clustering thing will allow us to use our whole system's core, every core of the system that we can use. I would also handle all the errors properly by trying to catch them everywhere so that we can catch all the errors instead of it just breaking somewhere. To do this, we would use the error-first approach, so that whenever there is something error, we have to catch it first and then if you are just getting some error, then we have to catch it first and otherwise if you are not getting the error, you have to check it first and then if you are not getting the error, then it's fine, we can just pass the response. In the React Native application, I would use something called Redux to manage the states. I would also use lazy loading to load the components properly, by importing only the components that we just need at that time. Additionally, we can use something called React Suspense to show some suspense in our project, so that user can actually know that there is something, instead of just loading all those components at the initial state. I would also use functional components, as they are much faster than class-based components. The reason for this is that class-based components are actually converted by our compiler into the functional components, so in the functions initially it is, I mean later on when we just try to build our project, that time it just converted into the functional component, so that actually takes a slight extra time while we are just writing a class-based component. Finally, I would use something called TypeScript to improve the development speed, so that we can get the errors in the development time.

Can you explain how Jenkins can be utilized to automate testing MongoDB backend node.js applications? Yeah, we can use Jenkins while we are creating the CI-CD pipeline also to create an automated test that if all the codes are in the place or something like that, we can use Jenkins for that.

How do you handle automatic deployment of a React application using AWS infrastructure with CICD tools? So, one way, that's an easy way, for a React application is that AWS offers something called AWS Amplify. If we deploy, if we give permission to our GitHub repo or GitLab repo to that Amplify, then it will, whenever we just commit code in a specific branch, let's suppose I'm telling AWS Amplify that there's a specific branch called master, then you have to select that. Whenever we're committing code to the master or merging some other branch with the master, it will find those changes, conditionally check if there are any changes in the master branch, then it will take those changes and automatically deploy them to the server. That's one thing. Otherwise, we can use something called Jenkins to create our own CICD pipeline. We can also use that. That's how we can do that.