
I've had the privilege of embarking on an exciting journey with several early-stage startups, which has been instrumental in shaping my career. To provide you with a glimpse into my rich professional background, I commenced my foray into the development world as a full-stack engineer at Tripeur, a pioneering corporate Travel and expense management platform. This remarkable venture, now seamlessly integrated into Navan (previously TripACtions), marked the inception of my dynamic career.
Subsequently, I transitioned to ByteProphecy, an enterprise analytics startup, where I left an indelible mark by spearheading pivotal contributions to platform optimization and core feature enhancement. My remarkable achievements did not go unnoticed, culminating in Accenture's acquisition of ByteProphecy an achievement that resonates with pride, as it marked Accenture's inaugural acquisition in India.
For the past 2.5 years, I have been a vital cog in developing a cutting-edge digital marketing SaaS white-label platform. My journey within this venture commenced with an emphasis on the funnel and website builder functionality and has now evolved to encompass the pivotal domain of workflow automation. I've led a team of three skilled developers, steering the seamless rollout of features and ensuring uninterrupted system availability.
My multi-faceted journey across diverse startups has significantly honed my proficiencies across various domains, facilitating a seamless adaptation to new technologies and skill sets. This trajectory has uniquely positioned me to grasp the iterative nuances of product development, in close collaboration with visionary founding team members.
In essence, my proven track record of driving innovation, nurturing teams, and seamlessly adapting to the evolving technological landscape underscores my suitability for the present role. I am confident that my rich and diverse experiences will be a robust asset in delivering impactful contributions to your team and organization.
Senior Software Engineer
SleekSenior Software Engineer
HighlevelSoftware Engineer II
HighlevelSoftware Engineer
Tripeur (Acquired by Navan)Software Engineer Analyst
Accenture S&CSoftware Engineer Analyst
Byte Prophecy (Acquired by Accenture)Software Engineer Intern
TripeurSoftware Engineer Intern
Professional Soft-TechSoftware Engineer Intern
Professional Softtech
Javascript

React
Node.js

NestJs

Vue.js

MySQL

MongoDB
AWS (Amazon Web Services)

Google Cloud Platform
.png)
Cloud Firestore
.png)
Firebase

TypeScript

Kubernetes
.png)
Jenkins

Elasticsearch

HTML5

CSS 3

tailwind css

Material Design

Bootstrap

Cypress

Mocha

Jest
Figma
.png)
ClickUp
Jira

GitHub

GitLab

Bitbucket

Sentry

D3.js

Nuxt

Microservices

Puppeteer

Redis

PHP
My name is. I'm based out of Gujarat, India. I have around 5.5 to 6 years of experience working as a full tech developer with multiple early stage startups. The main technologies that I have used on the front end is React, Vue, and Next. Js. On the back end, I have used Node and Nest. Js. With the databases, I have experience using Firestore, MongoDB, MySQL, PostgreSQL. I have always been working as a full stack developer with startups, and hence, I've been getting challenging raw, uh, challenging task in day to day situation. The different domains of the companies that I have worked with includes I started my career with, uh, corporate admin start up named Tripio, which was acquired by a US based company, uh, named Strip Actions. Uh, then I moved on to an enterprise analytics startup named Byted Prophecy, which was acquired by Accenture supplied intelligence wing in India, which was also Accenture's 1st acquisition in India. Currently, I am working with a digital marketing all in one platform, which also Support's white labeling. Um, it's a CRM, um, platform that's based out of US. And I have been contributing to their automation, so the workflow builder. Other skills that I possess is Web scrapping and, uh, Babel configurations, something that I had worked on as well. For CSS libraries, I have experience using Tailwind, Material UI, as well as Bootstrap. On I On the CSS part, I do have experience using SCSS. I have I don't have much exposure to less, but that's something that I would be flexible learning for.
So for front end testing, I have used Cypress. Uh, Cypress, where we can use the it's HTML or the path to just see if the component is rendered or not. For back end related testing, I have used Chest and Mocha. Uh, I used to just tweak some of the data that I would need in case it's required. I think, yeah, that's pretty much it in terms of testing the front end and
So in order to optimize a WebSocket connection, I would suggest to keep allow the same connections rather. I think with socket dot I those latest versions, it always keeps, uh, on the connection until we close it explicitly In order to ensure that no new connections are made or new connect new socket connection is not established for It'll, uh, every time for the for the same user even in different sessions, which would really help managing the number of connections as well as Retrieve data. So the long pulling that we call basically I think with socket.ios Jettest version, it's already taken care of. I'm not particularly so sure about how we could do it with WebSocket connections, but I think a better approach here would be To add the ID to the WebSocket, it makes a connection and use the same ID connection ID every time the user connects
So the best practices that I have been following is to divide or break down the components into smaller pieces and ensure that if a part of code is repeated, I try to make it a component. Also, for React based application, I generally try to create base components. Let's ins. Let's say a button, a drop down, or the commonly used, uh, like, the input box, whatever it is. I try to create a wrapper over their conventional input so that it ensures using the same style throughout my system, which helps in adopting team based systems very easily. 2nd approach that I follow is add I I ensure to add proper keys to any of the data that's been looped over. For example, I loop over an area to render multiple dues. So I ensure that proper keys are maintained so that the pro performance is optimized. I then use, uh, methods like useCallback, use memo, and memoist components to ensure that the number of recalculations of something or the number of references of a function are minimize, uh, in successive re renders. I try to use context API for something that require the central state management, and it ensures that all the components up to the current components are rendered properly in case there is some state that needs to be updated. I also ensure that while unmounting the component, if I am adding any event listener, ensure to remove those event listeners as well to not overload the components. Yeah. That's it.
You are tasked with building a live epic Hello to to get that allows multiple users to edit a document. So do you implement to minimize conflicts and ensure data So I I believe this would be very similar to what Google Docs, Google Sheets, or, Uh, Figma and so many of the products nowadays provide, which is collaboration live collaboration, basically. So I have you, uh, I have read about a few techniques. I am currently not recalling the exact technique name, But, uh, there are 2, 3 techniques that I had referred to which we could use in order to Have a comparison between the changes made by multiple users and then ensure that The changes are not conflicting or the the latest change is, uh, is the one which takes the High priority. Let me just think of the method name. I'm just trying to think what are the I think it's OEMs. No. Really OEMs. That's something very similar to it, which I'm just trying to recall. Let me just think of it. I think I am not currently remembering it. Let me think of the algorithm that it might be using. I think I am not currently
So in order to manage state, we can, uh, induce 1 of the 2 things. One is either we can use a third party library like Redux, uh, or we can use context in order to maintain state. I think, uh, we're complex here. Uh, one of the 2 methods should be good enough. We need to And, uh, I think if it's real if it's a really complex application, then we should go for Maintaining Redux as Redux, uh, setup needs as the Redux boiler plate needs certain kind of setups which needs to be done in order for Redux to be used in the system. So if it's really complex and there's a lot of state uh, updations or state management happening. I would go with Redux. But if it's a simple to intermediate complex app, I would Rather use context or a third party library
Updated. So one thing that I Noticed here was, uh, not having a proper component, uh, as well as a function that would that that would be involved when clicking on that button. So I think that's a mistake on the return statement where increment increment should click button. It was on click handler should be the increment count, and There we should be actually updating the stat state. This does have state. Count. And, Yeah. I think the second thing should be maybe we should edit, We should add a component date method where we should be performing certain operations.
A message, just send that pass. Update chart. Notification. Show notification. So So firstly, I would add a proper mechanism for dry catch. Like, let's say that some error on, Uh, just a note pass. I would have some proper error handling then. Second thing is this if else letter Doesn't really seem to be extendable so that I would, uh, I would try to add a switch case where based on the case, I can, call out certain functions, or I can invoke certain functions. Yep. I think these 2 things should be enough to ensure robustness as well as maintainability and extendability.
Alright. So okay. So, firstly, at the components level, I would be using React bound, React error boundaries in order to ensure that if something breaks or if a component throws some error, uh, it does not break the application or Show a blank white page or some errors. So first thing, implementing React error boundaries, I would be adding a custom component, Say, uh, which I could display in case of any errors. Second, I would integrate some tools like Sentry, which So which handles all that kind of errors that the application is throwing and Give me visualizations on what component basically give me a proper stack trace of the the error that has been resulting The application and which components is showing the error. Using analytics provided by Sentry, We could easily eliminate most of the errors and ensure that such
In a scenario where your SaaS application built with React, it's quite Quickly due to surge in user base. So this, I would say, is more based on how the scalability of the back end would impact. But in terms of To get app, uh, I would ensure that there would be minimum number of requests that I should be making to back end or any third party applications. And, also, uh, in order to ensure that there is very less wait time. Also, what I would try to do is I will ensure that that data that I'm storing in the state, the state does not becomes too heavy, Uh, which becomes difficult to actually render the DOM. What I would also ensure is I only pass the bare minimum or the needed data to my child components so that it, Uh, the payload or the data exchange does not really take a lot of time. I would also try to keep the bundle as small as possible To ensure the overall application is on the lighter side and it I would try to avoid heavy images to be loaded on the app and Uh, scale them down before, uh, rendering on to the UI.