
I’m a Full-Stack AI Engineer with 3+ years of experience building scalable web platforms and LLM-powered intelligent systems across enterprise environments.
My work spans end-to-end AI product development, including agentic workflows, multi-agent orchestration, RAG pipelines, contextual retrieval systems, cloud deployments, and modern web apps using React, Next.js, FastAPI, and Python.
I specialize in integrating LLMs (OpenAI, Gemini, LLaMA, Ollama), vector DBs (FAISS, Chroma, VertexAI Search) and cloud-native systems to build automation platforms that save teams time and deliver measurable business outcomes.
Full-Stack AI Engineer
WiproIntern
Wipro
React

Spring Boot

tailwind css

Redux Toolkit

Express.js

Javascript

Java

Google Cloud Platform
I'm currently working in Wipro Limited. I have two years of experience in web development, and I worked in React.js and Express MongoDB in the MERN Stack, as well as I have hands-on experience in Java Spring Boot. I know modern frameworks like Tailwind CSS and state management tools like Redux. I can create user-friendly UI/UX designs and reactive applications that can work efficiently on desktop and mobile devices with various form factors. So that's all. I will be happy to work with your company and look forward to your answers.
Hello, everyone. So, the strategy to memoize complex calculations in React components is to obligate the factor that we update the component in the virtual DOM, if we update any component, the parent component and the child components also get rerendered multiple times. We use the `useMemo` hook to memoize this and achieve a seamless experience for the user by eliminating the child components from rerendering if there is no data change that has happened in the child. In this case, after the return, we can wrap the whole JSX component in the `useMemo` function.
Can I give an example, is basically a state management, is a tool that is given in React. So in React, we use useState to provide dynamic data and store data and re render components and basically give the reactive view to the application. So in order to pass the state to one component to another component, as I mean, if a parent component is passing state to the child component, so and we need to pass the state in the props, react props. So for one, two components, this might be achievable. But for big complex applications, this gets very tedious. And in order to manage a state upwards, we need to pass the components as well, along with we need to manage the state in the parent component and pass the state downwards to the child component. And in order to achieve this, many child components get unnecessary access to the state, which it doesn't need, and the coding becomes much more tedious and unmanageable. The code base gets big. So in order to obliviate this factor, which is commonly known as prop drilling, we can use context in React, and maintain a context of a state and update that state globally, and we can use that global state in any component, and we don't need to do any prop dealing or pass the components.
So, in order to set up a root-based code splitting in a React application, I can use a proper NPM repository called React Router. Here, we can take an example of a simple home page. We can differentiate the whole page into different components and make, for example, we can differentiate any simple application into 3 main components. That is, the header section, the base or the main section, and the footer section. We can use the React Router NPM repository in order to achieve this route-based code splitting and use the browser router component and wrap it around the whole routes that are inside the main sections. So there might be an about section, a home section, the hero section, another functionality depending upon the application we are building. And we can fix the nav section or the header section apart, just above the route section at the footer section as well below the route section closing tag. And the whole thing is wrapped in the browser router so that this is a route-based application, and only the middle section that is wrapped inside the routes will get re-rendered depending upon the URL we are passing and changing. This helps us making the React application and code splitting very much responsive and only the route-based section gets re-rendered and the top and bottom sections are fixed if we use navigation module from
So how do you use a custom hook in React to manage the state of a form? So we can, here, use a state using use state. And, a custom hook, we can design using the children props. So, how to use a form. So here are the main scales that we need to take into account. Let's say the user email we are taking and the user password. So those 2 fields are required. I can make a hook that injects the states inside a custom form and call that form inside the hook whenever the state is getting changed. And in that way, I can implement a reusable code that is much more easy to maintain inside React.
Toggling system in with minimal performance. So implementing a feature toggling system, let me take an example for the dark mode. So it is a quite obvious thing, and modern day applications are, quite, the UI UX. We are designing, depending, and giving the user much more control. So by doing that, we are providing them with a toggle button on top that enables or disables dark mode. So by using toggle mode, toggle button and keeping a state for is dark mode enabled, we can track that if the toggle is being clicked or not clicked. By checking that inside the return function, we can check that state, and return by checking that state, we can change the class. We can change the border classes and implement class change, I mean, the dark mode. We can, as of tailwind, provide the dark mode inside the class as well. And in the header tag, head section of the HTML component, we can switch the whole page to append that in a dark class by appending the dark string inside the class. So by manner of this, the whole page will switch to dark mode. And vice versa. If we click the button once again, the state will change. We can use change dark set dark mode and nullified it with the not operator, and it will reverse the effect and bring the page to the light. So I can use this toggling system. I believe there is much less overhead because we are only maintaining one state, react state, and we are not changing anything. We're not re rendering any component. We're just appending one class in the header tag in the main tag, in the HTML, and the whole page is changing via CSS only. So this is much more performant. As we know, the browser uses C++ to render CSS inside user
Function for evaluating user input. This seems to be type related error that needs debugging. Can you identify that error? Explain what's wrong. Okay. So here, we are given a validate input function and the input is of string. Input is of string. Input is returning a string. Okay. Input is of type t. If type of input is string, we return valid. If type of input is number, we return input dot to string. Okay. So we are converting, constant, result is a number, validate input 42. Okay. So here, I believe, input type t, we are, taking a wild card as a input. And if, the type is string, we are simply returning a string, and the result, we are storing as a number. It is expecting a number. But here, we are, for the validate input, we are returning a string. So I believe that is the wrong thing here. So if we are, taking the result variable, we must change the number to a string, and I believe that would
So let me understand the problem. There seems to be an issue with Flexbox layout when the screen size is less than 600 pixels. So, we are setting the flex direction to 100%. Here, in the media query, we are setting the max width of 600 pixels. It seems like a problem when that is less than 600 pixels. Okay. When we break that query, the flex direction changes. So here, the flex direction needs to be in column. Okay. So it should be in the min width. In the media query, we might add the min width of 600 pixels. So when the width becomes less than 600 pixels, we reverse the flex direction from column to row in order to provide a user with a more readable format in the mobile view, so the user can scroll it. So that might fix the problem. Any other issue? The card component is flexing with a margin of 10 pixels. I don't believe there is any problem with the margin. I believe the max width is the problem.
Illustrate the process of implementing a custom middleware in Redux to log actions and states. Okay. So as far as I can understand, the problem, wants us to implement a middleware in Redux to log actions and states. So, you know, I am trying to implement an so I'm taking into assumption that, whenever the, there is a payload and the function is called, I'm supposed to log the state as well as the payload. So that's the assumption I'm taking because it's not very clear for me. So in Redux in Redux, we can use the in Redux, toolkit, React Redux toolkit. We can, we do, provide them with we do create a Redux store. So in the store, when we return the reducers so inside the reducers, we can we might be able to log those and that would be visible. Yeah. We are able to log those, states as well as well as the action and that would be visible to the user, in the console. So I believe this is, this is for the logging purpose, and that would be, achievable. Yep. Redux 2 log action
When optimizing the build size of a React application when using Tailwind CSS, the Tailwind build process is already optimized, as it only generates the CSS classes that are used. This reduces the required compiled CSS. To further reduce the Tailwind CSS build size, install Tailwind CSS using npm install dash d tailwindcss. This installs Tailwind CSS as a developer tool, which won't get built or compiled into the production environment, thereby reducing the size and the bundle size. Apart from that, researching Tailwind optimization can help. There might be some tags or configurations in the Tailwind config file that can be used to optimize the size further.
Explain how to manage local state in a React app using readers for a global state. By using Redux, React Redux, and Redux toolkit, we can easily manage global states. For React Redux, we can use the provider and wrap the whole app inside the index.jsx. I mean, taking David's build of React here. So, inside the index.jsx, I can wrap the whole app component inside the provider component that is provided by us via Redux toolkit. And provide the store, our custom store, which will give us the reducers. And inside the reducers, we can provide the custom reducers that will help us to keep the states and give us the actions as well as the states. So whenever we are changing any state, we can use the state to change the react reducers as well.