profile-pic
Vetted Talent

Mahaligam

Vetted Talent

A dedicated Software Engineer with 3+ years of experience primarily focused on backend development using Node.js, NestJS and Hasura. Highly skilled in designing, developing, and maintaining robust software solutions that ensure secure, scalable, and high-performance backend servers with the cutting-edge technologies. To seek and maintain a full-time position that offers professional challenges utilizing interpersonal skills, excellent time management and problem solving skills

  • Role

    Back End Developer

  • Years of Experience

    3 years

Skillsets

  • Sanity CMS - 1 Years
  • JavaScript
  • Jest - 2 Years
  • Lambda
  • NestJS - 3 Years
  • Node Js - 3 Years
  • Postgre SQL - 3 Years
  • React Js - 1 Years
  • REST - 3 Years
  • S3 - 3 Years
  • Java
  • soap apis - 1 Years
  • SQS
  • stripe
  • Hasura - 1 Years
  • AWS SAM - 0.5 Years
  • Sequelize - 0.5 Years
  • SES
  • Pushalert
  • Docker
  • Node Js - 3 Years
  • Twilio - 1 Years
  • TypeORM - 3 Years
  • Express Js - 3 Years
  • Agile - 3 Years
  • AWS Cloud - 2 Years
  • Bitbucket
  • CSS
  • Type Script - 3 Years
  • EC2
  • ECS
  • Express Js - 2 Years
  • Firebase
  • Git - 3 Years
  • Github - 3 Years
  • GraphQL - 3 Years
  • HTML

Vetted For

14Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Backend Developer(Remote)AI Screening
  • 56%
    icon-arrow-down
  • Skills assessed :AWS SDK, dotenv, Hubspot.API, Mailgun.JS, OpenAI, Passport, Bcrypt, Node Js, Socket.IO, Twilio, TypeORM, Express Js, MySQL, Type Script
  • Score: 50/90

Professional Summary

3Years
  • Sep, 2021 - Present4 yr 1 month

    Backend Engineer

    Tringapps, Inc.

Applications & Tools Known

  • icon-tool

    Twilio

  • icon-tool

    SendGrid

  • icon-tool

    PostgreSQL

  • icon-tool

    Hasura

  • icon-tool

    AWS Cloud

  • icon-tool

    Docker

  • icon-tool

    Docker Compose

  • icon-tool

    Freshworks

  • icon-tool

    Firebase

  • icon-tool

    AWS SES

  • icon-tool

    SonarQube

  • icon-tool

    Git

  • icon-tool

    Jira

  • icon-tool

    NPM

Work History

3Years

Backend Engineer

Tringapps, Inc.
Sep, 2021 - Present4 yr 1 month
    • Design and develop scalable backend servers utilizing Node.js, NestJS.
    • Create and maintain efficient Rest and GraphQL APIs Architect and manage databases to optimize performance and scalability.
    • Collaborate closely with frontend and DevOps teams to ensure smooth development and deployment processes
    • Maintain high code quality standards through rigorous unit testing and continuous improvement
    • Stay up-to-date with emerging technologies and integrate third-party tools into backend systems
    • Adhere to Agile methodology principles and leverage version control systems effectively

Achievements

  • Successfully led backend teams across 5+ projects within a 2-year period, consistently implementing cutting-edge technologies while adapting quickly to new tools and methodologies. This experience has honed my ability to deliver high-quality results under tight deadlines, manage multiple concurrent projects effectively, and thrive in fast-paced environments. Through these accomplishments, I've developed strong leadership skills, technological adaptability, and pressure handling abilities, allowing me to excel in demanding project scenarios and contribute significantly to innovative tech initiatives.

Major Projects

4Projects

TPV Horizon

    Successfully integrated Twilio for customer interactions through SMS, IVR calls, and live calls. Incorporated SendGrid to enhance email campaigns. Developed and maintained REST and GraphQL APIs. Integrated additional SOAP APIs with the backend server.

QuickAsyst

    Created a backend server utilizing Hasura, an instant GraphQL API generator. Implemented Docker for the GraphQL engine and Hasura. Integrated Stripe for customer payment transactions.

Leaguemed

    Built a server with Sanity CMS using Groq queries and webhooks. Integrated Freshworks, a cloud-based CRM, for customer interactions. Incorporated PushAlert for both web and mobile push notifications.

Plantd

    Designed and implemented a subscription-based application using Stripe and Wise. Developed efficient and secure data models with PostgreSQL and TypeORM. Utilized Jest for unit testing, achieving high code coverage in SonarQube. Secured GraphQL APIs with JWT authentication and access control via AWS Cognito.

Education

  • B.E - Computer Science and Engineering

    Dr. Mahalingam College of Engineering and Technology, Pollachi

Interests

  • Cricket
  • Exploring Cities
  • Walking
  • AI-interview Questions & Answers

    Yeah. Hi. Uh, I'm Harikam. So I'm looking as a software engineer for for 3 years. Uh, I have gained a good knowledge about the at an agenda in the back end of the report. And I have a, uh, some plus projects, uh, and let the back end team and, uh, provide the deliverables. So I'm working with various technologies and tools, uh, which will help to integrate, uh, and improve the performance of the system. And, like, uh, I'm working at work in a video, CMS, and other technologies, which helps to if it helps, uh, customer interaction as well as, uh, which improves the back end system. So

    So yeah. Uh, to upgrade the configuration, the Node JS, uh, Node JS system, like, we usually have, uh, 3 environments, like dev, QA, and prop. So if we have, uh, configuration changes, we first do it in a dev environment as and, uh, like, we usually use AWS parent to store for a configuration, and we are changing those configurations and and maintain, uh, it as in a config config files. So we'll update it across the form and do a sanity testing with the demo demo. After that, we'll move to the further moments. So before applying any configuration change or playing, uh, new note, apply the note, uh, upgrade the motions or downgrade or other differences. We will confirm with the versions and the, uh, will the will it break any other functionalities? So we'll see that. So after that, we'll need to, uh, push it to the table enrollment and, uh, do the testings. So main part about the config configuration changes will always which makes major changes in the, uh, develop developer, and it will affect the run time. Uh, so we have to make sure, like, uh, it won't affect the inflectionalities before the, uh, configuration. So, uh, the first part is first part is if we have we have to, uh, have any configurations, so we don't have to hard code it in there. So we have to maintain as a EMV or or an AWS. So, uh, we can easily manage, uh, the credentials. So we can provide the endpoints of the books to modify and update the values, um, from the, uh, AWS, or we we can use, uh, docker Docker IMDs to update the configurations.

    Yes. Uh, currently, we are using a password strategy in the nested JS. We are using a nested framework, which is built on top of Node JS. So it provides the default password strategies. And for our rule based access, we have, uh, maintaining a, uh, coin tool level roles and DB level roles. So for coin tool level roles, we have created, like, groups, like user group and admin groups. If the client has, uh, we don't have we don't need a separate group, so we'll maintain it in a DB level. So, uh, at first, we are using AWS Cognito to the user. And, uh, using that, uh, JW strategy, we extract the user and get their database from the DB, uh, get their data from the database, and the role as well as the access share on fuel. So based on that, um, based on the rule, we are implementing, uh, guards. Uh, they are implementing, uh, guards in the messages. So at each calls, we are making, uh, the guards are working as a middle. So so we are, uh, playing cards to the each APIs. So based on the, uh, if the guard is present and the role is present, and we will have a or we will, uh, reject in the card itself, like, uh, as a middle it it card is like a middle back. So we will, uh, add it, um, we will throw an error in the middle back itself.

    In which case, when you prefer to use type 1 rather, you know, simple. Yeah. Uh, we started, uh, using we're starting to using a sequence. So it provides some models, and uh, we'll we have to write the schema files, and, uh, we have to, uh, create a model and generate a, uh, like, what is the migration files? So in, uh, in SQL is warm, we face a difficulty of writing schema files and maintaining the models. And the the type warm, we will overcome the, uh, issues. Like, it, uh, it works in any environment like Node. Js and other environments as well. But, uh, as it provides, uh, good, uh, availability and documentation with the, so we welcome to the, uh, welcome the issues we we faced in the and user type ORMs. So it provides a a clear entity, uh, entity basic. So for, uh, add for relational database features, Like, all the, uh, we can define the database models in the class, and we can provide a decorator as it supports a decorator pattern as well. Uh, we can we'll overcome, uh, the schema generation schema generation and, uh, migration for the generation, and it provides a, uh, clear documentation about the about the repositories and using a base class entities. And as it's a we can as it works with the concept, so we can, uh, easily integrate multiple class systems, uh, with the entities files. Like, it provides a table in abstract class and the returns for, uh, for different models. We can define one model and use it use it as in the 3 models, and it will store in a single database itself. So each model work it work it as a separate entities and classes so we can easily modify and do the actions within the model within the model. It will, uh, affect the it will not affect the other models. So we fail and it is and it's easily, uh, with the messages. So message is it's like, uh, it's provides, uh, it's fully supported the types of concepts. So while moving from the state wise to type warren, uh, with the typescript, it helps. Uh, type warren provides better way of accessing to the database using the, uh, repositories.

    What pattern would you use to ensure a secure answer? Should they're handling? Yeah. Usually, uh, it's not, uh, restrict it's not restricting with any, uh, basic structure, structure of code. And for security and structure handling, we use some middleware middle bus at the road at initial routing levels. Uh, it provides a default middle bus so we can, uh, we can we can add it before entering the route itself. So and for the error handling assets, it's not limited to any structure code structure. We can, um, we can have a error handling at our own level. So, uh, it provides a no provides, uh, additional middle class of concepts. So, uh, we can easily integrate with the expression.

    How would you handle a real time check feature in the note JSON? The socket. Io phone. Yeah. Usually, socket dot io. I have worked a lot, uh, in this socket at io, but I have, uh, have a little bit of knowledge in socket at io, uh, as it's, uh, providing a way to have interaction between the server and the client system. So, uh, we can send and resume request that, uh, like, a subscription. Uh, so so it, uh, it accepts a request and sets a request at any time. So

    I'm I'm not much familiar with the data socket at IO code. Uh, but I have a little bit of knowledge about the on and clicking functionalities, like, uh, we used to, uh, we used to to, uh, read the emails using. So I provide like, if the connection is established with the runtime, uh, we go to the, uh, client functionalities inside the JavaScript function. So so we can handle the disconnect functionality at in outside of the IO dot on function. So if, uh, like, IO dot disconnect or something. So if any connection disturb is tab is connected or it's not established, so we can handle that handle that.

    The main consensus we get before saving to my. Yes. Uh, we used a beacon for hashing functionality to store the to store the password. Hashing, however, it it it's a one way one way of, uh, encrypting the data, and we can't decrypt the data as it's stored as a hash. So it will store the passwords in a hash, uh, in the database. And yes, uh, we can store it as a hashing, or we can use a JWT, uh, to decrypt the data to encrypt the data, uh, using data JWT dot sign, and we can store it as a, uh, JLPT code inside the database as well. And 22 data. And for passwords and all, uh, if we have to, uh, store it, we we usually don't, uh, store the passwords assets, uh, maintained the clienteleven. So if you want to store the query and store the password, we can use the hashing methodology, uh, like, and we can store it.

    How you take to migrate complex data schema? Don't run things in type of purchase. We are maintaining the, uh, scale migrations. Uh, like, in the type forum, we can, uh, like, db sync files, and we can use the migrations, and it will generate a, uh, a schemas in whenever we, uh, now we're changing in entity files, like, uh, in the class, and we can generate the migration file using the using, uh, the default command generation. So it will, uh, it will keep on track the database changes, uh, in the schema level so we can have a track. Yes. So we can have a track in the, uh, and we can have a track with what are the scheme schemas are, um, changed over the time. So we we we will make a use of these schemas files, like, 10 or 25 which we can, uh, get these basic this migration file, which are basically filled with the, uh, we we usually, we store the, uh, store it as a SQL SQL queries, uh, in up and down. So we can we can make a use of this, uh, migration file, and we can migrate the data, the database schema. For the datas, we have to make sure we have a backup, then we can move the datas as well. And if the schemas, uh, if the migration file which is created, the latest will will just not working the scheme working with the database, we can easily revert it back using, uh, revert reversion command. So it will revert the, uh, last modified database changes. So we can have a clear track about, uh, database schema changes with with the use of migrations.

    What should be passed as a request for what what will return. Uh, so we have to capture the both scenarios, like positive and static and negative scenarios. In negative scenarios, uh, the external APIs may be, uh, which will usually close to to 3 errors, like success error and, uh, downtime. So for downtime, we can't, uh, we can't track it. So we have to make it, uh, in a we can we have to handle the exertions. So for the additional types, we have to we can create the interfaces or a class or types. So we can assign to the, uh, response to the response from, uh, response which we get it from the external APIs. So as TypeScript provides a strongly type, uh, strongly type mechanisms, uh, we can assign the, uh, the interface interface, uh, with the variables. So, uh, we can, uh, use this, uh, so it will we can use, uh, the response of errors further, and we can process. Usually, we face around, uh, renting errors as, uh, as most of it have a downtime at midnight. We, uh, lastly integrated a. So, they, uh, down they down the so functionalities at midnight. So it won't it will, uh, it will throw an error, like, connection time out and, uh, like, contact. Uh, so, uh, we have to handle the the we can't have we can't provide, uh, types or interfaces to each, so we have to handle the, like, session handling methods.

    Yes. As, uh, asynchronous behavior of Node. Js, it helps to, uh, it helps to work with multiple client work multiple, uh, clienting for us. So each anchors had a less in. So, uh, it increased the performance of the back end system. So, uh, while, uh, integrating the, uh, multiple third party. Yeah. So we usually, uh, attach attach our webhooks, our endpoints as a webhooks to the third parties, third parties APIs. And from there, we are we will use the, uh, direct points to, uh, send or request to any datas. So, uh, also as the asynchronous behavior, we can, uh, use the await functionalities to wait for the response and, uh, each each request handle as a. So it be lazy to manage request and response in no choice.