Qualified B.TECH with a total of 5+ years of experience in Sr. Software Development with NodeJs, TypeScript,
Redis, Express, JWT, NGINX, AWS(EC2, S3, SQS, ECS,ECR, Route 53, LoadBalancer, Task Def, Certificate
Manager(DNS)), Mincroservices , Sequelize(ORM), Mysql, MongoDB, Kafka & Docker.
Extensive experience across all phases of the Software Development Life Cycle (SDLC), including analysis,
Design, development, testing, implementation, enhancement, and maintenance using both Waterfall and
Agile methodologies. Problem solver using System Design & Design Patterns.
Strong problem-solving skills with expertise in System Design and Design Patterns.
Passionate about coding challenges with over 250 LeetCode problems solved and additional experience
With GeeksforGeeks.
Sr. Software Engineer
CENSANEXT SYSTEMS PVT. LTD.Sr. Software Engineer
Busybees logistics solutions pvt. ltdSr. Software Engineer
Kellton Tech Sol. LTD.Trainee Web Dev.
Gingerpan SWAPCART PVT. LTD.Jr. Software Engineer
Kratikal Tech PVT. LTD.Jr. Software Engineer
Zimyo consulting pvt. ltd.
NodeJs

TypeScript

Redis

Express
.png)
JWT

NGINX

AWS

EC2

S3

SQS

ECS

ECR

Microservices

MongoDB

Kafka
.png)
Docker

OOPS

Cluster
My name is Basikumar Pandit, and I have a 5.7 years of experience in back end side. I'm working as a senior Node.js developer in my current company. My technology mainly includes Node.js Microservices and AWS. For the AWS part, we can select EC2, SQS, SNS, and S3 bucket. For Docker, Microservices, Redis, Kafka, etc., I have experience in that at my current company. Currently, I'm handling one project, which includes a logistic project named and another one is a credit allocation. It means, like, suppose we are talking about credit allocations. That means we have multiple products coming from different e-commerce platforms like Flipkart, Amazon, Flipkart, you can say Myntra, any other server like Amazon. We can maintain according to that product all query services according to weight wise. There is a decision to maintain prices according to weight wise. According to suppose, there's a different query service we can see is blue dot express, and Nimbus post, then dtdc. This type of query service we have. We can create that project from scratch method. In that particular application, we can use Node.js, TypeScript, MongoDB, and SQS for selecting a message broker. We can use a queue, and in Docker, we can use Docker for deployment. We can tell these things. This type of technology I have worked with, and according to my current company, I'm working on a logistic part, which means it's a B2B business product. In the logistic part, if you're handling a trip, suppose we have a bulk product, so we can send it to one another place according to vendor wise. We can generate a trip, and the trip will decide it from the sales order and invoice ID. Because there is one sales order, but there are multiple invoices. So, we can decide these things according to the trip. We can generate a trip, then allocate the path where they will go, and we can generate reports. We can manually do all those things according to this application. Approximately, these things I have worked on using that technology, which includes Node.js Microservices and MongoDB. And Redis, we implemented, and Kafka for microservice communication. I have knowledge in React.js also. Not a deep knowledge, but I have knowledge in React.js also. I can do React.js as a functionality part, not designing part. I know how to implement React, Redux, and the Redux toolkit and hooks. I also know the OOP concept, object-oriented programming.
So, yeah. So, basically, the problem was too low, I used in a message for the messaging, like a phone number, and we can select an email. For that purpose, I have used Tulo. So, basically, Tulo, I have used only for that purpose because we can verify OTP and like different things in a Node. So, we implemented Tulo API integrations. That's it. Nothing more than that. I think the problem was only in the notification for the notification part, and I have implemented these things. That's it. I think nothing more than that. So, if I can say, like, how to implement this according to the coding level now? So, firstly, we can go to a Tulo account. We can create a Tulo account, then after creating an API, after creating a sign up, then there is one for the developer part. So, we can say, like, a big credential. So, we can implement and maintain a big, like, epic credential wise. So, we can install a package to or Tolo. We can implement it like Tolo. We know our NPL has installed Tolo. Then, after that, all credential account IP likes, like that. Yeah. Auth and auth tokens. These two things, so we need those then. We know how to, like, it's a message. We can say, like, there is a one type of, like, some line of code. We can say, like, client dot message. Suppose we can declare, like, a client call to Tulo and account ID, like, account ID and auth tokens. So, we know all these things according to client dot message. We can implement it like that one, a client dot message. So, whatever message we can throw in a body part or body part, we can just put it and directly send to the message. And OTP if we know OTP, send all for the mobile verification, then we can implement it, these things. After that, like, additional, we can taking, like, a WhatsApp also, what, in a WhatsApp integrations. Also, we can do these things, phone number, email, and WhatsApp. Those things, we can implement it on that particular part. That's it. Nothing more than that. So, it's, it will help, it's a little bit costly for the phone number verifications. Yeah. In India, there is a lots of services we can use, but in a flow is a fast implementation. Everything is easy to handle this thing. So, user experience for the implemented and suppose we need a, like, phone number then, enter from the client side phone number then, we can give, like, OTP then verify then, we can make it make it API. Like, if OTP is same, then we can verify an account in a user table. We can go like user table, and we can verify 1 like 1, 2, 3 like that's it. So, it's.
So by crypt, MySQL is okay. So, normally, you know, MySQL, we have a database of MySQL. So, we know how to implement it, like, a sign up, once we can bring, like, a sign up, then, there is a password, like, the starter. But we can convert it in a bi crypt. So bi crypt means, like, it will combination of the has, hassing. So it will come running, like, a has levels. So, like, nobody can understand like that. Nobody can, like, taking from the actual or actual converting in a SIMP. So, use of JWT and JWT, we can suppose sign in then, password. We can encrypt it. Suppose by crypt, there is a one package by crypt. So by crypt, we can install, and we can converting in a, password in a by crypt. Then we can insert it, inserted in a MySQL level, by crypt method. Whatever by encrypt, we can do by encrypt, then that's simply can, we can adding in a, in a db level. That's it. So this, by encrypt, we can say, like, we can store in, actual data. Like, suppose password, there is something like also, like, I know on bitch. You add the red 123. It's up my password. So we can encrypt these things. Help of by crypt. Yeah. There is a encryption, decryptions, like, encryption decryption method in a, node. So we can converting these things in a level. Then if we got that by encrypted, then we can directly insert it in a db level. If not, then we can before that, we can encrypt using, like, bcrypt package. So we can insert it like that. So this is the main approach we can bring these things. That's it. So anything, I think, by this is a approach where we have to do, like that. Okay. Yeah. So, we can tell, like, as according to coding level. So, Bcrypt, we already tell, like, Bcrypt, one type of package. Then after that, we can install it. Then suppose we are taking from the, any password level. So, there is a one method, like, we can select any processing salt round, like, bcrypt.hash and password. Suppose, any variable you can give you, like, how much length? Suppose, 5 to 10, yeah, 10 to 20. So there is a what type of length we can provide it? Suppose the blackberry dot has, password or whatever password coming from the, API. Then after that, Salt RAM, then we can keep it. And then after that, we can insert these things in a db level. So that's it. So these are method of MySQL, using by crypted method. And in a db level, you can insert it as a string, that's it.
So, Okay. So, we can implement it like, suppose as per my example, suppose there is a one table user. So, firstly, how much record we can find out, like, suppose there is a thousands of record. But we cannot display in a level wise, in a same safe pages in the front end side. So we can use a presentation. So we can send page. We can set page and limit. It means in a one page, there is a limit. Means a limit of 10, 20. In a one time, it will come, it will come like a limit of 10, then 10. Only it will sort 10. After that, a physical one, then we can provide like d v dot users find and count all. There is one method, find and count all. And building in a query level, we can implement these things. In a one time limit, we can pass this, and page we can pass this, and page we can pass this. And after that, we can say like a skip method also. Suppose 10 data already we can show. So after 10, page number 2, then skip method, we can do these things. After skip, then another 10 record will come. After then, page is gonna 3, then after that, it will it will come. So there is a syntax in a way clause. We can say like a limit, we can say like a limit semicolon, like a, like a limit then. We can say like a page, then we can provide the pages. And these are many approaches we have to do like that one. And skip method, we can say also skip because of 10 record is firstly first Tendergore, we can skip. Then after that, Tendergore, we can give that. So this is the approach we have doing like in Node Js, using the MySQL. So this is the approach of the vision essence in MySQL we have to use it. So, another thing, suppose of auto incremented, yeah. There is a one type of page. Suppose millions of data, and how it will throw in. So, there is a one method, also, suppose we can select a limit. We can select limit page, and one is the we can say like skip. And according to that one, MySQL, there's offset method also. Offset method, we can provide it like a, page minus, we can select a page minus 1 into limit. How much data it we can show in a like front end side. So this is the approach, and we can also say like some type of query and d v dot user find, d v dot, d v dot support user dot user is a collection name. Yeah. Table name, call it users, find and count all. So all those things you can provide in a query level. That's it. Yeah. We can say like a limit and offset, you can provide especially in a MySQL level. Limit suppose 10 and offset is called to page 1. 1 into page 1 minus 1 equal to like limit. So how much data it will skip here through. So this approach, we have to do like that one. These three things we need from the frame side limit base, and offset method. So offset method, we can calculate only limit and base coming from the frame set. So these things are.
How do you ensure okay. Endpoint developed by Express are strongly typed to 1 using TypeScript. So mainly, it's Express.js. So we can use a TypeScript. So mainly, in a TypeScript level, we can pass input output operations in a TypeScript level. Suppose we are sending a which type of type function we can sing suppose. So there is a we can pass three parameters. In a TypeScript using x-ray.js, we can pass three parameters. Suppose ID, we can select ID pass, we can set query pass. Now we can say integer pass. So if ID, then we can pass ID semicolon in a parameter. ID semicolon, like, integer we need a number. And, suppose, query then we need a string we can pass semicolon string like that. So this is the approach we have to do with Express.js from it. I'm using the TypeScript method. So this is the approach we have to do like that. Okay. So, according to TypeScript also, it's a function level. Then suppose we can pass in an app.get method. In app.get method, there is a request parameter, request response, and next. Then we can say, a request to semicolon request. In the above, importing once we are importing in a request level, so we can say, like, request response, and next means it's a function. So we can say, a p app.get. We can as an example, app.get. There is a method we can passing, like, we can select a semi-column, or not a semi-column. We can break it, slash, support user and list. So after that, after that comma, then we can pass request, then request, semicolon request full. Response res semicolon response. Then suppose next then semicolon functions. So that is the approach we have to do in these things. Yeah. We can say, in a DB level, suppose you can or DB level, we can say, a main brand main file. We can implement app.huge. So there is options, sir, or suppose error. So what is that error means? Error, semicolon. Any means like anything, like a number, string type of anything we can display. Request semicolon, request, and requested, request you can say, and respond that requested. And next function. So after that, we can say, a console.error, then whatever error we are getting that, then we can print it. Something like break. Yeah. So this approach, we have to bring these things. Yeah. We can maintain, like, a type status. Suppose active, yeah, inactive, yeah. We can say, like, interface maintaining, interface ID name, status. In that case, these things we can maintain in a TypeScript using, the help of Express.js.
The best approach to manage and apply configuration management is to consider the environment. Any notice of the beautiful environment tree? What is that? What is the best approach to manage and apply configuration management? It goes no. Just so, mainly, I have used environment, like dotenv files, and maintaining any files. All those things, whatever we have to need, like, suppose port number, we can define in the port number there, in like, dotenv files. And dotenv files, you can maintain a port level, then everything, suppose, as an example, suppose, whatever needs, suppose, because we are not taking from any files. So, configuration level. So, you can take it from the environment level. So, local, then we can define this thing with DB host and, like, port number, then port, we can define in the environment level. And all those things, whatever needs, we can define in an ENV file. Then, we can take it from there, process dot next process dot next dot ENV. So, after that, we can take in all those things, data, in a, anywhere, in that application, like any controller host, services. Yeah. Any files, we can take it from there. So, otherwise, another process you can do, like, these things, configuration levels. So, there is a one file, we can define, like, config.js. And all those things, we can also define there. But it's not secure, because we can push the code, then it will go in a, like a server level. Yeah. We can say, like a, we can say, like a, like, a git in a git. So, this is not a good approach, or we have to bring, like that. So, we can everything, maintaining any ENV files and ENV configurations, because of it will be secured. And, otherwise, we can encrypt it also. We can another method is to encrypt it. Because any data, coming from the EME file, then we can encrypt it. Because sometimes, so we can, we can, by mistake, we can, we can throw it to the client, all those data. So, it's not encrypted. Then, it will be easy to hack that data, and, it will, it will do anything. So, that's why we can, one method is an ENV file. Everything we can maintain. Second one is, we can say, like, a configuration for the configuration level. So, you can maintain in all those, that are, as encrypted, in a, front-end side. So, after that, front-end side, we can also, suppose we are using, like, data, then we can encrypt all those data. Suppose we can, send one to another level, so we can pass, all those, in a, like, a network file, in a browser network. So, you can train this thing. So, these are many approaches we have to do, like that, configuration as well in the files. And if we know, it's not secure, we can do, like, config.js files. We can maintain these things. And all those data, we can maintain in a main, index.js file. So, all before the all those components, yeah, we can say, like, services, controller. Yeah. So, commenting these things in a level. Yeah. That's fine.
Yeah, potential issue, we can say, first of all, one is the 3,000 we cannot declare directly here. We can take it from the environment files.nv files. So another one is it's not synchronous, because we know node is an asynchronous operation, and we can handle it with the help of async await method, which we can use. And another one is the async await method, which can be one type of function that we can generate like that. And after that, we can maintain try and catch, because of error handling, which is most important work in error handling. So try catch, you can implement it for this particular code. Because suppose we don't know how many traffic will come, then it will break. Sometimes it will break. So it's a one type of design pattern, circuit breaker, because it will maintain like a network part, mainly network part. So that case is we have some issues. It's like only a few traffic, then it's fine. But in a habit of traffic, then it will generate errors. So in error, it will not help to debug like that one. So we can use a firstly, async method. New promises, we can say, like, async only. Otherwise, we can use try catch method, which is error handling. In a middle layer, we can handle these things. So these are the main approaches we have to do these things in a socket.io because it's a heavy load coming from the socket level, we can receive real-time data within that particular. So in real time, everything we can move, receive, send, receive, send. Then it will creating some type of issue. So the issue is only error handling. We can maintain error handling for here. So that's it. So these things in my mind, I have to do firstly, before that, we can some line of code, we can generate. So EME file, we can maintain firstly. After that, we can maintain async await without tracking as method, which is error handling. If we are on CloudWatch, we can handle these things for that particular. And assuming we already told and tried guys. That's it. So this type of method we have to handle these things for the particular reasons.
Firstly, what are the patterns? What are the centralized? So can you select? For the particular patterns, we know we can maintain, firstly, in express.js, we can maintain our main files. Suppose there is a one type of file index.js. So we can maintain, like, there's a lot of proceed on method and unauthorized handling, we can define there because anything we know is an error then we can define these things. And then the one is the centralized method. Centralized means like a middleware level, we can maintain a centralized middleware level to handle these things. Suppose as per my example, suppose one type of function we can generate in the middle level, middleware level, suppose the function is an error handler. So we can select a status code, everything we can define, and the message whatever message we are coming from there. We can message them. After that, we can directly respond. Send. So export. One type of common file you can manage centrally, centralized middleware labels. So we can define everywhere. If nothing to find, then we can define directly this thing. Anything we can display. So after that, there is a custom error class. So we can maintain in oops. We can flow the oops. We can use the help of tap script as a tap script. So you can maintain any type of classes. So, whatever status we can define, so we can directly throw the message. Proceed on method, and we can define there. So another means the error handling, like, we can mainly also route levels also. Whatever routes they are coming. Yeah. Whatever do, it will come. So these things are at the structure level and secure method, we can sing like a try-catch method. We can use, like, normally, we have to use async-await method. We can proceed on. We can select a better user, like, an error for the particular errors. So this type of method, we can implement in xfinity.js for handling errors. So, there is a different pattern. We can say, like, a centralized one type of pattern, a middleware pattern, and all it's including design patterns. So this is a part of being like that, like, async error. We can select an async method. Also, we can use it sometimes. Async error, we can select a, suppose one type of function, we can maintain, like, a promise letter result. If there is an error, then we can throw the error. Otherwise, in a catch, we can provide it. So another thing is logging type of also, suppose in a node.js, I have used CloudWatch and some for logging errors. So when storms, we can select this time, we have to do it like that. So, this type of method we have to use, like, in environment level also we can be using, handling. So mainly, these things, we can select at the centralized level, error-handling level. Yeah. I think logging error, we can say CloudWatch and AWS. And another one is that we can select an implementation error and custom errors. We can say classic.
What ports do you take? Migrate to computer database skin count on. Conflicts. Cancel it now. Conflicts. we can say, like, downtime. So, in my approach, first of all, we can migrate it. We can migrate these things in a type R M using the help of type R M. So, first, we can replicate. We can maintain a replica. suppose a one-to-one database, sort of, like, downtime, then another automatic, automated transfer to the another database. So, one, this approach, if you're using a coding level, we can select a support type of R M. So, there's a some type of approach we have to bring like that. Suppose, we need, like, a migrate interface, one type of migrate interface, query runner, and table column, whatever table column in a type ORM. So, these things, suppose we can select a migrate interface level. So, we need some type of code, like a suppose, as per, as per my, I don't remember, but I know a few things, a few lines of code. I can explain, like, suppose there is a one type of parameter. Suppose you can pass the migration interface. Yeah. Query runner. Then, we can say, like, a query, not a query runner dot add column. We can say, like, whatever table. Suppose if there is a user table and table column. Which table column we can modify, we can bring like that. So, name type and is nullable or not yet default, whatever that. So, if there is a downtime mode type, another function we can create, suppose, downtime. And inside there, we can pass in a query runner and approach that, query runs, then we can drop, yeah, anything. We can do anything. Yeah. Data migrate, we can see, suppose, that data we can store. And after that, we can, modify the table here anything. So, can import it that, things we can bring this thing. So, deploy, this approach we have to, we have to do, in my case. So, I don't have a lot of migration knowledge right now. So, one of these things we can do, like, some line of code we can modify, implemented like that. Sure. That's it.
So, for this particular integration, there's a multiple third-party API. So, we have an approach, API gateway. We can define one type of API, proxy for the API gateway, and we can integrate for the particular or multiple third-party API asynchronous operations. We can do proxy patterns, proxy patterns. We can select a proxy pattern in a design patterns part of design patterns. One type of proxy pattern we can implement it for the API gateway. So, we can install a proxy, one type of express proxy, one type of package. We can install them. After that, we can require and express proxy pattern. This line, we can import it. And after that, we can add that use. So, in add that use, we can resolve multiple third-party integration. We need a gate method or a post method, whatever method we have. We can define proxy and URL with URL. So, after that, we can call these things in our applications. We can maintain one type of functions, async-await functions, yeah. The promises functions, and inside, there is async support, and user list, as an example, user list. One type of part, one type of sign-up for the third party. We can define everything request response, in a task screen method, a request, and a response. Then, we can inside their try-catch method, we can implement it. After that, we can use the user list, suppose, away to you, from there. We can use that API gateway. So, what method of data we can get? We can get the response. And there's another method also, adjust, or with help of adjust thought part integration, we can use the adjust also method. The adjust method, we can directly call whatever URL coming from the whatever URL and get post method, adjust dot get. Yeah. Adjust dot post and URL, then, whatever payload we can send. So we can maintain one type of object, and we can throw the adjust level also. And if they get to, we can need a proxy level. And if another thing, if there's heavy traffic coming from that particular API, so that particular third-party, so we can maintain, like, we have options, like, SQS. Yeah, SQS, and Kafka, RabbitMQ, queue operation can be doing, like that. So we can maintain all those things, we can maintain all those things, help of Kafka, RabbitMQ, and SQS, for the message broker who can be using, normal CCA. Yeah. Otherwise, API gateway. Yeah, help of xios. Whatever traffic coming from the, whatever traffic, yeah, coming from the, that particular API, so we can maintain these things. So, this is the main approach we have to do in Lyda. That's it.
Yeah, same things. How do you handle challenges when integrating external APIs like Tab? So, there is a cover, like a Luzhi cap, which is similar to that of a method. So we can use the same API gateway for the API gateway proxy patterns. So we can follow the proxy patterns here. Any message broker, we can use for that particular assumption typing integration. Okay, so it will not fail because it will help us with these things. Multiple APIs, we can integrate. Already, we can integrate it. The help of TypeScript, so we can train the method level. So what parameters we can pass like that. So these things, we can maintain. We can select, as in crucial operations. We can maintain these things. And that's it. Nothing more than that.