
Experienced Senior Full Stack .NET | Angular |React | SQL Software Developer with over 10+ years in full-stack development. Specialized in designing, implementing, and optimizing complex applications with expertise in Single Sign-On (SSO) integration. Proficient in modern technologies including React, .NET Core, Redis, and SQL Server, and recognized for delivering secure, high performance solutions that enhance user experiences and business productivity. A hands-on leader adept at collaborating across teams, managing client relations, and driving end-to-end project success
Full Stack Developer
DataArt IndiaSenior Full Stack Developer
MedalliaLead Full Stack Developer
Etech Global ServiceSoftware Developer
Etech Global Service
ASP.NET Core

ASP.NET MVC

Redis

IIS

Angular

React

TypeScript
.png)
Ionic

jQuery

Javascript

Bootstrap

Microsoft SQL Server

MongoDB

GitHub
.png)
GitHub Copilot
.NET Core

ADO.NET

highchart
REST API
.jpg)
Web API

IIS
Hello. My name is Suraj. Um, I have 10 years of experience as pushback developer, uh, in, uh, dot net and the SQL Server. If you're talking about my, uh, skill sets, so I have experience in the HP dot NET Core Core API, API, Reshful API. Um, also, I had experience in the node chairs and experience in the creating a web API and putting the security mechanism in the web API, like, authentication, etcetera. And also I have experience in the SSO integration, single sign on. If we're talking about the front end side, so I have experience with the Angular and the React, JavaScript, and jQuery. In the database side, I have experience about the SQL server, like creating a function, uh, jobs and store versus query optimization, ETL job, all the things that I have experienced, sending a notification through the email and using the SQL. So that I got the experience I have. And, uh, if you're looking more the current project, uh, with the survey tool project, so we are using, uh, we are capturing the data from the different print sources, uh, through the survey. So we are, uh, capturing data from the SMS, um, browser, and all the things, and we are generating the report as on the data and we are analyzing the database on the report, and we are generating a sentiment and data. We are generating a report. We are generating a report reason wise, gender wise. All the things that we are reporting, uh, generated report will help the customer to get the insight of data or take what data they are getting. Based on that, they will take a decision on that. So that kind of experience I have, I will be the database team to, like, uh, channel like, working on the report part and getting the data, showing the data. So that kind of experience that I have. And, uh, mostly, I'm using the SQL server. We go throughout the throughout the entire career, I'm working with the SQL and the dot net. So yeah. And, also, here, I'm, uh, managing more team, and, uh, I'm working as a senior developer to, uh, handling the project. And, also, I'm defining the scope of file and yeah. So that's from my side. Yeah.
Yeah. Uh, not a failure project failure. Uh, it's a smaller thing. Sometimes it is happening, like, uh, when you create a milestone for the particular 2 state. Okay? So suppose, uh, in in my project that I I have worked on the future feature that will be, like, delivered in the particular timeline, okay, goal. So, uh, it's not like a completely failure. We can say that, uh, uh, if it is a big, big feature, so we are dividing in the chunk and we decided, okay, what is the MVP for that project? So first, we are trying to achieving that one. If it is everything is working fine, then we will be deliver, and it is not like it's completely failure. I can say that it's a 90% return with small definitely, it is a 100%. Sometimes, it's maybe we have, uh, facing a small failure. I cannot say. It's learning for us. So next time we take the input from the current failure or the current, uh, day, and then we we go ahead with the improvement and we take the improvement for feedback from the client as well and the team as well where we are lacking and where where we are missing and thus. And then those thing we collect and we work on that and we will be achieved. So yeah. Uh, it's not like that that, uh, failure. Yeah. It's learning. So yeah. So mostly, uh, so, yeah, mostly, I'm we're working with the, like, team and, um, we we responsible for the whatever the things happening in the project. So we work hard. We will put extra time over there, and we make sure that the client will be, like, happy in the end of the day and, like, end of the week and whatever it will go. So yeah. That's it.
Yeah. So, uh, view function and the stoppers is a very important part of the SQL server and and and it's mostly widely used in their applications. So if you're talking about the stored procedure, then we can set is the compiled query. So stored procedure, uh, we can get a stored procedure. It will be, like, help to to to think it's a mainly the performance improvement and also improving the SQL injection because, uh, if you're talking about inline query, it's impossible to there is a SQL injection happening. Someone passes some data data, it will be, like, giving the explanation. But in store processor, we are using the parameters. So parameter is the latest chances to, uh, is prevent to, like, SQL injection. And store procedure is like is not like the it every time it's written a value. It will be like that sometimes it's written a value or sometimes it's not written a value, but it's compiling, and we can, uh, we can improve so many things in the store process. Like, we can put, uh, for optimization set, not count on. So it will be, like, not within the data. And yeah. So that thing, we can put in the store process. Store process, we can say that it's a compile, uh, compile set of query. It will be, like, uh, return a result in the single set, multiple set, and sometime it will not result written anything if you just update the data or anything data. And and we are calling store for sure. Like, we are not calling, uh, store for you to the function, but we are calling the function to the store processor. If you're talking about the functions function, we can say that it's mess mostly for the calculation. Suppose, uh, you want to, uh, give some inputs, like, you want to, uh, some data for the like, if you pass a quantity and the price and based on that, it will be, like, a looting data how what is the price of the particular portion. So when we send it data function, so it's mainly used for the manipulation for the data and it will return the data. Mostly, it will list in the scalar value, but as we can say that it can be a tableau form and it can be a scalar value. So, yeah, in the function, we cannot perform a DML for formal, like, instead of the delete, but in store proceed, we can do that. View, we can say that it's, uh, it's holding a digital set. We cannot, like, it's it's it's fetching the data and storing in the 1 rigid set, and that is just that we can use in the different places. So mostly, it will be, like, useful for the performance boosting. So we when we have know that the data will normally frequently changes or frequently something, then we can use a a view, and we can create a view different different view. Uh, like, uh, improve data list, we can create a view and, uh, any data which we can detect compared to fast, we can create a view and we can use it. So yeah. Uh, so procedure, we can perform a DML command like data insert, update, delete function. We cannot do that. We can just only the, uh, manipulation are there, and view is mostly for the returning data. It's a cannibal resource that we can say that.
Yeah. It's like I'm a senior developer. It's mostly happened with me. Like, this sometime, like, Zoom people will not deliver the task and sometimes it's delayed. So I take the responsibility. I take the chunk of the work piece work from the junior, and I can take the responsibility and I can finish, uh, the thing. And, also, meanwhile, I'm helping the junior to understand what what what would be your approach if this kind of situation you have and you have occurred. So, yeah, uh, I take the responsibility and the always result in the positive, and we will be, like, deliver. And I can say that I can put on my step forward because I'm a completely hardcore developer, and I'm very passionate about the coding and all the things. So, yeah, I'm always taking a challenge and always, uh, taking a complex task compared to junior developer. And meanwhile, I will be getting with some, uh, difficult task to junior as well. So, yeah, uh, I take initiative. I take a these are the problem. I'm messaging the scrum meeting, like, when we have a TEQ, like, critical bugs from the client reported, then I will jump on that. I will take an initiative. I will do the some analysis and all the thing. And later on, I'll I also found out the area which we can improve it and we can fix it. So yeah. Uh, and for my case, it's always positive because I am working on the working with the positive attitude, and I can take care with the other developer as well. So yeah. So it's always good if you talk about the result.
Yeah. So, uh, few thing that I'm considering in my mind. Uh, first thing is the security. That's the highest priority for us to, like, what kind of security we can, uh, put in the dot net application. Uh, second is the infrastructure, like, uh, architecture which we are going to use mostly by using a clean architecture and what design pattern that we are pouring in this application. So I'm highly prepared to, uh, repository pattern, which is very convenient, and it is very, uh, like, loosely coupled. So if if you change anything, we can easily change it, and we can easily modify without affecting any other area. And some application I'm approaching to microservices to create some small small microservices in a particular work. And this is the thing that, uh, by particular in web application. Also, for the performance, I'm I'm having I highly recommend it to Redis, uh, uh, for the caching purpose for for the boosting the performance. And we also we are, uh, very much, uh, with the HIPAA compliance to make sure, uh, like, whatever the standard we are following, it's compliant. Like, it's it's, uh, up to the mark with the compliance. The security is the main concern, so we are putting a security in the login page, uh, with the JWT token, okay, and the capture on the, uh, screen. And, also, uh, we are putting some firewall, uh, on the server, the IAS server, where we can, uh, block the traffic if we get the multiple request in this, like, particular time period if we get multiple get request in a particular IP address and some unauthorized resources, we can block them. So yeah. So that kind of policy and that kind of approach that I have so this is the best metric that we are following. And, yeah, mostly, I'm looking to do microservice to create a most more services for the particular project. And and, also, we can take care about the load balancing. And if we have a multiple server, definitely, for the session management, I'm highly recommended to Redis because it's that this 2 is the system, and it'll be, like, the 2 is session, uh, in the one server to another server. And, also, uh, caching is also there. We can use the in line caching application caching to, like, make more faster, like, more performance booster. Yeah. So this is the that, uh, practice and, yeah, that solid principle that we are using and daily life we are using. I I I will recall that we are using repository pattern, so we are using a solid principle. So, yeah, that is the best tactic that we need to follow, and, yeah, definitely, we need to follow this one. And we are following in current project, and the last, uh, 6 to 7 year, I'm continuously following the best tactic. It will be, like, more and, like, give more readability of code, mental ability, and yeah.
Yeah. So, uh, for accuracy and reliability, so, uh, mostly, I will check suppose, uh, there is scenario, like, uh, where we we have a report, okay, where we have a report and finding something. Okay. Uh, we are not fetching the data, and we are fetching incorrect data. And what what was the logic in the behind of the data? Why we are getting this data in this format? So, definitely, I will analyze the complete, uh, data, uh, in the database side. I will face the all the table related data, and I will see the relation between them. And, also, once I I if you see the relations, I will try to face all the data with the whatever the criteria we have, uh, in the report. Suppose you are applying 5 filter, but you are getting a data which is not your expectation. So I try to, uh, put all the filter, whatever you have applied on that filter, then I will analyze the data. Okay? This data flow, how the airflow is going on, how was table is intake, uh, like, connected with another table. And data also, I will verify. Once I have all the conclusion with the database side also and also what parameter and what parameter we are sending from the application side, Once I have conclude all the thing, I will create a a one sheet where I have mentioned all my finding. Everything I have whatever I have found with the registered and everything, I put it in the, uh, Excel sheet and I compare the what are the data that currently we are fetching or what what I have found the data in the database using the query, then the store processor. And I will identify the what is the portion where we where we are missing. If I change it, then it will give the desired result for the client. So that also I will highlight it in the SPs, and I will discuss with the team and DV team. Um, Yeah. So that that is my validation. I I will definitely go to the DVACM person to, like, verify the data. Okay. This approach I have done. I have this is this is my analysis, and this is my finding. Uh, if I do this, then it will work. So if it is a correct approach, then definitely we can go with that one. So, yeah, that that is that is the thing that I'm I'm analyzing, like, uh, build it and re rebuilding my data before presenting.
Okay. Let's first talk about the delegate. Uh, delegate, we can say that, uh, it's useful. It it is pointing your function, uh, when you have a same definition. Suppose, uh, suppose you're creating a function and if you want to point out that function, suppose you have a function, uh, with, uh, basically, uh, like, taking a 2 parameter and based on that, it will be performing a 8 substitution and all the thing. So you can see that we have a 2 parameter same type. Okay. We can create a pointer for that one, and we can use that function to give a different definition on a different different approach. Suppose you create a function, okay, uh, like, uh, any any x, y, zed. And when when when you define the the delegates for the particular function, you can give a different definition. In some function, you can different, uh, multiple and, uh, other, uh, like, other definition that we can use the delegates. Even we can say that if you if you if you if you send something data across to, like, uh, applications and if you think that, okay, uh, something is invoked here, then it will automatically identifying the other places. So we can use a event. We can create a event, and then we can use the event dot invoke where we can pass the data. And it will be, like, notify where we we can use that event. So you can notify something when something has happened. That time, we can use the event. And, mostly, we are using a event when when when we are sending a notification to, uh, particular, like, for, like if you're creating a, like, uh, creating a application where you have generated report and you send some data and you want to notify to, uh, particular user, okay, this this thing is happening or the data has changed that time we are using. The interface, we are mostly using, uh, uh, for the repository pattern, uh, or the abstract because when we when we make sure, okay, uh, you have a contact with a tidy couple and you whatever the function we have in the interface that you forcefully implemented in the class, that time, definitely, we can use the interface because, uh, if you if if you implement the interface interface because interface, we cannot give a definition of the function. It's just a signature of of of function. When we implement interface in the class, that time you need to give a definition in the class. But in abstract, we can have a function with the body and without body. So if you think that you you forcefully forcefully implement that function in your, uh, class, then definitely you can go with the interface. But you think that, okay, some function we don't, uh, forcefully, we need to, like, uh, implement it, that we can do the abstract line. Garbage collection is, uh, it's very useful. Like, we are we're using a dispose. It's automatic useful, but we can
Oh, yeah. So, yeah, I've stick as I can say, it's a class. Okay? And it's it's, uh, with with the abstract keyword. And all function in the, uh, in the class, it should be, like, abstract and non abstract. So it's a 2 way like, in the in the abstract class, we can define a function, uh, with the logic as well, and we can also define a function without logic, with the abstract keyword. And in the way, uh, in the drive class, we can we can inherit, like, we can, like, inherit that class, and we can give the definition of that that which we cannot give the body on the abstract class. Why we can use? The reason suppose I if I want to share some common data, uh, between, uh, classes, uh, suppose I I have extra extra class employed where I have first name, last name, I I have a function, uh, give a full name based on the first name and last name. So that function, it's common for all the classes. Like, it's give just return the first name and last name with the combination of the so that common thing that if you want to share in the throughout the class where where we can inherit this abstract class, then definitely we can use this abstract class. Whatever the piece of code that you think, uh, when we, uh, inherit abstract class, where it is needed, then definitely we can go with the abstract class because it's, uh, you mostly useful sharing some common data while it is inheriting. Also, it is useful when we have a different different definition for the according requirement. Like, you have a, uh, you you have a employee where you have a silver employee, gold employee. Okay? So where you have a top or not, you have abstract class where your first name, last name, and the full name, and you have a membership. So membership, we cannot give a definition because the gold membership and, uh, the, uh, and the, like, senior membership have a different different definition. Maybe someone get a 10% discount, uh, gold gets 10 5% discount. So when we inherit this abstract class in the class, that time we can give a definition and it will be, like, work. So we have a different different implementation as well. And when we share common thing in the throughout the class, then definitely we can go with the abstract class.
Yeah. Wave API, uh, it is mostly useful, uh, for phishing the data, and it is really more reliable when when we have, uh, wave API where you want to, like, uh, it's it's useful in a very complex project where you want to feed the data. You you want authorize the person, like, authorize the, uh, user, authorize the request. So, definitely, way we pay, we can use over there. We can use, uh, STV protocol over there. And the way we pay the best benefit, it will be written data in in any format. It's not like the JSON and XML as we in the REST API. In the Web API, it can be in any formatted like JSON data, XML data, string data, and, also, we get the status for that one. So HTTP, let's say, 200 to 500. So Razor template, I can say that it's rainbow Razor templated, uh, is a combination of of the HTML helper, which we can create a controller for them, and, also, we can do this on calculation based on the data model. Describe how we can link here. So mostly, uh, razor template we are using to, like, uh, make a page where we want to bind with tightly with my model where I want to capture the data from the form in form format, then definitely I'll go with the razor template. And where if I want to consume only some data from the, uh, like, from server, then I can definitely go with the way we pay with the HTTP post, get, and report, and delete, where we have maintained all the thing like authorization and all the things on the life cycle. So that is the flow that I can use, uh, to consuming data from the API. The as I said, the wave API I can use, and it can be like consuming any device. Like, it's not like before desktop. Mobile applications also consuming the wave API. A razor engine is basically is a template. We can we can make a page as well. We can create a designee page. We can show the data. Uh, yeah, all thing we can do that in razor template with the help of the HTML helper and the code and everything.