profile-pic
Vetted Talent

Tuhin Samanta

Vetted Talent

Experienced full-stack developer and team leader with more than 6 years of expertise in designing, developing, and deploying software and web applications. Skilled in creating highly functional, responsive, and intuitive solutions. Committed to staying current with technological advancements and delivering innovative results that exceed client expectations.

  • Role

    Full Stack Developer

  • Years of Experience

    8 years

Skillsets

  • Mongo DB
  • Next Js
  • Postgre SQL
  • React Native
  • HTML
  • Python
  • GCP
  • Git
  • Go
  • Flask
  • Jest
  • CSS
  • SCSS
  • LoopBack
  • Sequelize
  • Electron
  • Java
  • C
  • C++
  • Nest.js
  • Next Js
  • Socket.IO
  • react - 5 Years
  • GraphQL - 2 Years
  • Node Js - 6.3 Years
  • Node Js - 5 Years
  • Vue JS - 6 Years
  • Vue JS - 6 Years
  • Redux - 6 Years
  • JavaScript - 6.6 Years
  • SQL - 6 Years
  • MySQL - 6 Years
  • FullStack - 7 Years
  • Type Script - 4 Years
  • React Js - 5 Years
  • Node Js - 5 Years
  • React Js - 5 Years
  • React Js - 4.5 Years
  • Mongo DB - 2 Years
  • Rest APIs - 6.5 Years
  • Wordpress
  • Bootstrap
  • jQuery
  • PHP
  • Laravel

Vetted For

10Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Lead Fullstack Developer (React Js & Node Js)(Remote)AI Screening
  • 71%
    icon-arrow-down
  • Skills assessed :DevOps, AWS, Docker, Go Lang, Jenkins, Kubernetes, Node Js, React Js, React Native, REST API
  • Score: 64/90

Professional Summary

8Years
  • Sep, 2024 - Present1 yr 8 months

    Developer III

    Thermo Fisher Scientific
  • Jul, 2022 - Sep, 20242 yr 2 months

    Senior Software Developer

    IBM
  • Mar, 2020 - Jun, 20222 yr 3 months

    Software Development Team Lead

    Teknikforce
  • Feb, 2018 - Feb, 20202 yr

    PHP Developer

    Teknikforce

Applications & Tools Known

  • icon-tool

    Illustrator

  • icon-tool

    Photoshop

  • icon-tool

    Swagger

  • icon-tool

    Jest

  • icon-tool

    Storybook

  • icon-tool

    Electron

  • icon-tool

    Redis

  • icon-tool

    Sequelize

  • icon-tool

    Git

  • icon-tool

    SVN

  • icon-tool

    Docker

  • icon-tool

    CI/CD

Work History

8Years

Developer III

Thermo Fisher Scientific
Sep, 2024 - Present1 yr 8 months

Senior Software Developer

IBM
Jul, 2022 - Sep, 20242 yr 2 months

    JavaScript, Node JS, Vue JS, React, MySQL, PostgreSQL, Electron, Express, GraphQL, HTML, CSS, SCSS, Bootstrap, Jest

Software Development Team Lead

Teknikforce
Mar, 2020 - Jun, 20222 yr 3 months

PHP Developer

Teknikforce
Feb, 2018 - Feb, 20202 yr

    Technologies used :

    JavaScript, Node JS, Vue JS, React, React Native, MySQL, Electron, Express PHP, Laravel, WordPress (Plugin dev), HTML, CSS, SCSS, Bootstrap

Major Projects

22Projects

UI Practices- Assets

IBM
Jul, 2022 - Present3 yr 10 months

    Using: Vue JS, Storybook

    Detail: The primary task involved updating the Vue app for Assets to Vue 3 and ensuring all components functioned correctly. Upon discovering that Carbon components were not yet compatible with Vue 3 and only supported Vue 2, I manually designed all the necessary components, replicating the functionality to maintain the existing workflow. Additionally, I enhanced the Storybook setup for improved appearance and performance.

Ulta Beauty - Booking Application

    Developed backend for Ulta Beauty's booking system, managing stylist availability, reservations, and customer communication. Implemented authentication and backend functionality to find stylists. Enhanced code structure, implemented caching mechanisms, and set up GraphQL. Created comprehensive Swagger API documentation and wrote test cases.

MTN - Mobile Telecommunication

    Enhanced backend systems and optimized customer-related functionalities. Developed and maintained critical backend logic and endpoints.

UI Practice - Assets

Jul, 2022 - Present3 yr 10 months
    Updated the Vue app for Assets to Vue 3 and manually designed necessary components due to compatibility issues.

Mobile telecommunication (South Africa)

IBM
Jul, 2022 - Present3 yr 10 months

    Using: Node JS, Loopback, MongoDB, Swagger, Jest,

    Detail: Collaborated with MTN, a leading South African telecommunication company, to enhance their backend systems and optimize customer-related functionalities. Leveraged Node.js, LoopBack framework, MongoDB, Jest, and Swagger to revamp and streamline the backend architecture, ensuring seamless handling of customer operations, recharges, and customer invitations. I was responsible for developing and maintaining critical backend logic and endpoints, including customer management, recharge processes, and customer invitation on features. This involved writing efficient and scalable code using Node.js and the LoopBack framework. Actively contributed to the design and optimization of the database structure, ensuring data integrity and efficient data retrieval using MongoDB. This helped in enhancing overall system performance. Implemented comprehensive testing procedures using Jest to ensure the reliability and robustness of the backend functionality. This included unit testing and integration testing to identify and rectify any issues. Developed and maintained the Swagger documentation for the project, making it easier for team members to understand and interact with the API. This documentation was essential for seamless communication and collaboration within the team. Worked diligently on refining the backend architecture, optimizing code structure, and implementing best practices to enhance maintainability and scalability.

Ulta Beauty Booking application

IBM
Jul, 2022 - Present3 yr 10 months

    Using: Node JS, Express, PostgreSQL, GraphQL, Redis, Sequelize, Swagger, Jest, React Js, Redux,

    In this project, I developed the backend for Ulta Beauty's booking system. My responsibilities included implementing authentication and backend functionality to find stylists based on specific locations and time ranges. I managed stylist availability, booking reservations, and confirmation processes, as well as handling customer communication via messages/SMS for various purposes.

    Additionally, I facilitated communication between the admin panel and Teammate application regarding bookings, timing changes, cancellations, and other updates. Moreover, I focused on enhancing the code structure, implementing caching mechanisms, and setting up GraphQL to ensure a seamless system-wide implementation. I also created comprehensive Swagger API

    documentation and wrote test cases to ensure robust functionality. On the frontend, I developed

    components such as login functionality and stylist search, and integrated frontend GraphQL calls,

    ensuring a cohesive and efficient user experience.

MTN Mobile telecommunication (South Africa)

Jul, 2022 - Present3 yr 10 months
    Collaborated with MTN to enhance backend systems and optimize customer-related functionalities using Node.js, LoopBack, MongoDB, Jest, and Swagger.

WP GDPR Fix

Feb, 2018 - Jul, 20224 yr 5 months
    Developed a plugin to make WordPress blogs GDPR compliant.

Online money spending control system

Feb, 2018 - Jul, 20224 yr 5 months
    Developed a system to control daily spending and budgeting of money.

Social networking system

Feb, 2018 - Jul, 20224 yr 5 months
    Developed a social networking system where users can update status, photos, and message each other.

Anonymous Messaging System

Feb, 2018 - Jul, 20224 yr 5 months
    Developed an anonymous messaging system for entertainment purposes during college.

Snivy

Feb, 2018 - Jul, 20224 yr 5 months
    Developed Snivy, an Android app to download videos from Facebook, Instagram, and WhatsApp status.

WP Gener8Tor

Feb, 2018 - Jul, 20224 yr 5 months
    Created a plugin to engage and get leads from messaging platforms like Facebook, WhatsApp, and Skype.

WP ProdRecomender

Feb, 2018 - Jul, 20224 yr 5 months
    Developed a plugin to display product recommendations from Amazon on WordPress sites for monetization.

WP MobiFlux

Feb, 2018 - Jul, 20224 yr 5 months
    Developed Mobiflux, a WordPress plugin to create ads specifically for mobiles, including subscription or sharing options.

MailEngine

Feb, 2018 - Jul, 20224 yr 5 months
    Developed MailEngine, a WordPress-based autoresponder supporting bulk mailing, email scheduling, and list cleaning.

Language generator for CloudFunnels and CourseFunnels

Feb, 2018 - Jul, 20224 yr 5 months
    Created a desktop-based tool to manage and translate language for CloudFunnels and CourseFunnels.

CourseFunnels

Feb, 2018 - Jul, 20224 yr 5 months
    Developed CourseFunnels for creating and managing courses with features like video streaming, quizzes, and drip content.

ShopFunnels

Feb, 2018 - Jul, 20224 yr 5 months
    Led the development of ShopFunnels, a self-hosted e-commerce platform enabling users to create tailored stores with seamless payment gateway integrations.

CloudFunnels

Feb, 2018 - Jul, 20224 yr 5 months
    Led the creation of CloudFunnels, a self-hosted funnel & website builder with advanced features like autoresponders, membership sites, and A/B testing.

Logii - Multi-Login & Anti-Detect Marketers Browser

Feb, 2018 - Jul, 20224 yr 5 months
    Developed a desktop app that creates multiple browser instances with separate storage, aiding marketers with multiple ad accounts and social media campaigns.

PursueApp

Teknikforce Ventures LLC
May, 2019 - Aug, 20201 yr 3 months

    Using Node JS, React JS, HTML, CSS Bootstrap

    Detail: As the lead developer on this solo project, I conceptualized and built PursueApp, a versaTIle email marketing platform tailored for effective outreach strategies. With seamless integration of Node.js and React.js, PursueApp offers a comprehensive suite of features to streamline email campaigns. PursueApp empowers users to send personalized cold emails effortlessly, utilizing popular email services like Gmail, G Suite, Outlook, Exchange, or SMTP. The pla orm allows for precise scheduling, enabling emails to be sent at specific intervals, days, or triggered events. Its intelligent reporting system provides valuable insights, facilitating informed decisions by highlighting successful strategies and areas for improvement. A standout feature of PursueApp is its advanced lead filtering capabilities, enabling users to identify super qualified leads based on email interactions such as opens, clicks, and replies. The platform supports customizable email themes, allowing users to create a unique brand identity. With support for multiple campaigns, users can effectively market diverse products or businesses from a single interface.

    PursueApp boasts an array of productivity-enhancing tools, including built-in email verification and cleaning systems to ensure delivery to valid leads. Importing and exporting leads via CSV files is seamlessly supported. Additionally, PursueApp offers automation capabilities triggered by website events, such as purchases or subscriptions, facilitating dynamic and responsive marketing strategies. The platform further enriches user experience with a drag-and-drop opt-in form builder, enabling easy creation of engaging subscription forms. PursueApp's friendly API and Zapier integration offer limitless possibilities for connecting with other applications, providing unparalleled flexibility and scalability. This version presents PursueApp as a powerful and comprehensive email marketing solution's, highlighting its innovative features and user-friendly design.

Education

  • Bachelor of Technology in Computer Science & Engineering

    MAKAUT (2021)
  • Diploma in Computer Science & Technology

    WBSCTE (2018)
  • Bachelor of Technology in Computer Science & Engineering

    MAKAUT (2021)
  • MP

    WBBSE (2012)
  • HS

    WBCHSE (2014)
  • Diploma in Computer Science & Technology

    WBSCTE (2018)
  • B.Tech in Computer Science & Engineering

    Maulana Abul Kalam Azad University of Technology (2021)
  • Diploma in Computer Science & Technology

    West Bengal State Council of Technical & Vocational Education and Skill Development (2018)
  • Higher Secondary

    West Bengal Council of Higher Secondary Education (2014)
  • Secondary Examination

    West Bengal Board of Secondary Education (2012)

AI-interview Questions & Answers

So currently, I am working with tech at IBM, since the last two years. And the project I'm currently working on is for the telecommunication company MTN. I'm working on their back end, managing their customer portal, managing recharges, and all. It's basically created with Node.js and the Loopback framework, which is utilizing TypeScript. And along with that, it's using MongoDB and a SQL-based database as well. Before that, I worked on IBM's internal project called IBM assets, which was a huge east-west project. And then before that, I worked on another project that was called Ulta Beauty Salon, which was a US-based project. It was a complete salon system, and their back end was created with Node.js, Express, and PostgreSQL along with Redis and GraphQL. And for the front end, it was used React and Redux. My role there was a back-end developer, and I actively worked on both parts. Before that, I was in another organization called TechnipForce. When I joined, they were recording services. I used to work on their WordPress plugins and WordPress plugins with PHP and with manual JavaScript and HTML/CSS. Later, they promoted me as their PHP team lead, and I worked on their couple of SaaS-based applications like Cloud Panels, Course Panels, and subfunnels. These are basically cloud panels, a prepared project, actually. Where it was, like, people can create their complete website upload through drag and drop, like, create members and it's automated email autoresponder, and it was integrated with a lot of third-party payment methods as well to automate sales membership and mailing. So it all the things, like, people can just install the software on the server and can easily integrate these things through drag and drop. So that's the thing. And utilizing that corresponds was created, which was basically a self-hosted element system like Udemy or Udacity. And Shopify was an alternate to sub, like, Shopify was an alternate to Shopify. It was also self-hosted. Next to it, I moved to their JavaScript team. My past project was a Pursue app, which was a cold mailing autoresponder. It was created with Node.js and Express and MySQL in the back end and for content. And all the applications that I mentioned, they are most of the memberships used to be created and payments like that kind of places for customers who are purchasing was used to create with React JS. And for the main application, we used mostly Vue JS as well. And that was a complete mailing autoresponder, cold mailing autoresponder so people can drag and drop and can put, make their sequence flow and all. Next, we created a browser based on Electron. So it's called Logi. So it was also

So the MBVW strategy, I will be using. There will be routers and their pages, and each page will have access to I will have different folders for my components, where I will have individual components for my videos and common components that I will have will be in a different directory inside components where I'll be using them everywhere in common places on other components. I will have a place for my storage, so I can store basically my Redux stores, and I will have my style, and it will have a structure provided by an engine CSS. They are also directory-based on common if they are common in the CSS files, they will have a general directory. And based on other components and pages, I will have a proper hierarchy and store them properly on a different folder. So that's where I will have the n b file on my root and also the index file. So that's the thing. And on my public, I will be storing my images and all, while maintaining the structure.

We can use a Jenkins for this purpose. So, what it does is automatically run after you push and after creating a PR when it's approved. It automatically does all the things if there are any issues, it runs its tests. It tests them with the weather, I assume you mean "with the weather conditions." All the test cases have proper syntax and good structure, then it can run the test cases itself. And once all the test cases are done, it deploys itself into the specified place. That's how it helps to go through a proper practice and does the automation itself where humans sometimes make mistakes. So, it doesn't deploy until everything is working well.

So earlier, we used the pattern for the back-end application called the emission structure where we used to have all the models in one file. So, basically, they are data or database models. Maybe that may be a civilized database model. So, that the things and the controller basically, like, the controllers are our functional things that will merge and connect our route and those and the models that I'm using, so that's the thing. But nowadays, we don't have that view card. We used to create our separate application for view. So apart from that, what we used to do, if we were using our REST API and also we basically used routes there or API folder there and used your structure. Our separate API with proper hierarchy that's easier under a proper under a, like, that is a parent path. So that means that path, we can, like, create a separate proper folder structure and routes inside that. And if we were using, like, a GraphQL, so we will have a proper GraphQL folder and there, the proper structure again for individual elements and individual workflow. So I will have the proper structure. And there, we will have a proper folder for utilities, like, where we will have our helper concerns or the library files that we are going to use, like, commonly. So that's the thing. And in the room on the room there, I should have a config folder. So config, basically, it's like, it's updating each hour in dotenv file. We can, like, specify, but the config file is the thing that where I can, like, stick to checking, like, whether all the things that I need, all the keys are there or not. And programmatically, we can modify that, you know, keys and all if we need. So that kind of restrictions we can keep written in a config file. So in that way, even if there is something wrong in v, so it forces us to go through a proper, practice. And for and for scalability, we can do one more thing. We can like, if it's a programming perspective, we can for a large-scale application, we can think of using cluster and that you will utilize the multi, processing. And so in that way, we can make it as, like, scalable. We can utilize the huge release there for our caching and all. So for collaboration, the structure and that structure, in the, like, trajectory and code and, you know, folders are important as well. Also, the proper flow and it, you know, just like I just mentioned, some places we may need to use cluster for proper relations, proper when we are using the, you know, database system. So structuring them properly using indexes properly, connecting the by probably, to, like, to make to, you know, make them visible proper. So there are a lot of good things that we can do there.

So, virtual DOM is basically without using the actual DOM tree. We don't modify or use the actual DOM tree. React is doing, like, it takes the difference of a proper DOM element when we create the root element. So, it sticks a reference there. And instead of modifying the entire document, it does whatever it's doing after the state changes or props change. It re-renders things and uses that DOM element itself. So, it doesn't modify the entire DOM or interact with the DOM team all the time. That's the way it works. Now I can explain how it works. Let's assume we have a React application, and we have an object with a getter, a setter, and an init method. So, let's assume we have an init method that takes the parent through query selector or get element by ID of a specific element that I want to render. Now, let's assume when we're using a getter, we're assigning something through get. So, if that variable is used in my content somewhere, in the element that we're given, if we have content inside that, we can modify the HTML or it's a very busy example. In our HTML log, it creates a proper DOM tree where the elements are modifying, I mean, DOM portion it's modifying is just rendering that portion in a React viewer. But for the sake of example, if there's something I'm providing and it's the variable getting changed, I can modify that variable value directly, and it can do that in our HTML. So, like, JavaScript also has getter and setter, and JavaScript now supports a proxy. So, with proxy, we can also do these things happening. In such an application site, React reaches the virtual DOM without modifying the entire DOM element, or entire HTML. It just takes a reference of a variable, and whatever we're assigning things, assigning its child components or all are working there. So, all modifications are applying there. This is how the virtual DOM works.

So one way, like, if it's a component level, we can use an effect to hook with like, it to maintain side effects so you can pass the additional array. So inside the only tool, like, get the content. It's only one time it will trigger after the hashed agenda. So each time it renders. So I mean, each time it mounts, so it will be running one time, and we can use React or Axios to call our APIs. And, also, you can use custom hooks for our logic that our API call that we are going to call multiple times. So if we use a custom hook so that there it will give us a benefit to hide our logic in one place and to get benefits from other components. And another practice is that we can do if we are using Redux so that we can also use Thunk middleware. Also, in Thunk, basically, it's used to handle asynchronous operations. So there, we can place our API call. And another place that we can do is we can create our own middleware. So in our own middleware, we can also use three arguments, namely the store, the next, and the action. So when you are getting the action based on that, we can do our API call and whatever the values, then we can pass it to our store itself. So that's not practically used, but that's possible. So there if we can when we get things happening, so we can pass that. We can modify the store from there or pass the payload to the next. So it will also work. This is the couple of ways that I've been saying. So this is the way of asynchronous data patching. And, yeah, also, it's an asynchronous start task. So every time we are doing an API call or when the promise got resolved, we need to maintain the state. We should update the state if it's in touch to suit, maintain the state. And, also, we should handle the errors to throw the catch person, and we can use a proper error handler to handle errors as well. So, that is basically a state itself, state manager, where you'll have error and whatever error happening there. So properly based on that, I will show a different component that this error happened. This is the way how we can handle errors in async on a start data bridge.

So here, it's not maintaining the immutability. So what happens is, JavaScript objects, each JavaScript object, used to have the mutability thing. Doesn't matter if we assign it to a defined variable, and then we are still modifying it. They are like it's basically modifying that variant object that it has the reference. So in the past case, what we are doing, we are completely getting a new object there by spreading these dot stated items. But later in the code, we are just modifying the items by concuring their new item as an added. So that's the one problem. And another thing, there is also one key I'm seeing that a new item. So yeah, that's the thing. It's not going to provide any more this new item. So based on that, we could spread it past the state and then whatever we are going to modify there. So in that way, it will be doing that, it will be a better practice to maintain the immutability. So in this code, that's not working. So that's the problem. What we could do is spread the this set state and then spread the state passed. And then inside items, I could take Like add in and then only spread their heat and add a new item there. Basically, there is a library called Lodash. So it's also beneficial in such cases to handle and maintain the immutability.

So here the issue which we are not assigning, we are taking the numbers and running the for each loop there. So now we are getting there as well. But what we are doing, we are not assigning that to some. We're just making the sum plus num, which is basically will do nothing. So what we need to do here, sum equals sum plus num. So in that way, it would do the actual sum and sum plus equals num. So that, in that way, it would give us the proper result.

So, the best practice would be using a nonce. So, nonces are basically a one-time key. So, whenever someone is rendering the application, I will give her a proper token ID or a system ID so that it only works for that specific screen. And once that, we can restore that in a stored variable or maybe in a session storage. So, when the user goes through the form, that would be also passed there. And in the back end, I will check that, whether it's a system that was created or if it's a JWT token, so whether it's a valid JWT token and it has the validity or not. And in that way, I can make sure that the nonce with that nonce is going fine. And also, what we can do is encrypt data. So, in that, we can try encryption of our data. If it's high-volume data, we can break them into chunks and consider sending it to Azure. It's like a performance thing. So, in that kind of business, we can consider chunking. Otherwise, for integrity, maintaining the integrated token is one thing. And another thing that can be done is creating a proper session. Now, this session is not using cookies, so we can consider using a proper JWT token with the proper expiry time so that it gets expired even though someone is copying the cookie from one browser to another. So, it will not work. And what else can be done is rate limiting, with a specific time, so that the back end will only allow a specific amount of requests. And next, it will stop taking the request or itself with a delay and then take the request. And basically, for when we are passing any data, which is required to have high integrity, we can try that and use the token thing that we render our bids with. It automatically takes it from the back end and can, whenever we are making the request, pass the specific system's token. That will ensure it's coming from a proper source and will maintain the integrity. And same for the front end to front end, we'll pass the proper token and verify that as well. So, that's the thing with proper authorization.

Yeah. So, integrating the part is like a highly beneficial thing. It's like a two-way, like, authentication. First of all, we just need to place at that whatever username or password they need. So, next to it will redirect them to a specific server endpoint. So after that, it will generate some sort of token and all, and we'll authorize the authentication request. We'll again get back to that page with the proper JWT, I mean, proper token that will expire after some time. And all the requests that we send in will be using that token. So not only that, if we're using Gmail or other logging systems, they also maintain this flow in a very authenticated way. They already have the endpoint and all which you need to whitelist. So it mentions complete security. Whenever you're making a request, it takes the token, checks the validity and all. This is how it's been updated.

I'm not sure about this question, what it's asking, but if it's a performance thing, so I will. If it's in the application level, so I should consider using a high load balancer while we are doing a lot of processes, and a lot of users are using it. So from the application end, we should do that. We would use a system to preserve data that are frequently needed. And from that perspective, I should be using a SQL-based database, indexing, and also consider new database cache configurations. Whenever possible for long-running data, I will try to utilize worker threads. So in that way, I will try to make sure that the back end is always available to solve requests and perform my content even when I am solving a lot of requests. Even if you select 1, we are doing CPU binding to the task, which takes a lot of time. So in that kind of cluster, it's going to help us through multiprocessing. And again, I will take care of the event-driven approach of React, including workers. So that will make our application efficient.