profile-pic
Vetted Talent

Jignesh Gondaliya

Vetted Talent

As a Senior Software Developer with 7 years of professional experience, I am deeply passionate about building efficient, scalable, and user-friendly digital solutions. My drive has always been about addressing complex challenges with innovative solutions.

  • Role

    Senior Backend Engineer

  • Years of Experience

    7.1 years

Skillsets

  • Terraform
  • WebSocket
  • Prometheus
  • opentelemetry
  • Microservices
  • Grafana
  • Express
  • Cloud run
  • Playwright
  • Jest
  • Cypress
  • MySQL
  • GitHub Actions
  • CI/CD
  • AWS
  • REST
  • GraphQL
  • GCP
  • react
  • MySQL
  • TypeScript
  • Redis
  • Kubernetes
  • PostgreSQL
  • Node.js
  • MongoDB
  • Docker

Vetted For

11Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Full Stack Developer - (PHP Laravel/React)AI Screening
  • 81%
    icon-arrow-down
  • Skills assessed :REST API, SCORM, Web sockets, React Js, AWS, Docker, HTML / CSS, Laravel, MySQL, PHP, Tailwind
  • Score: 73/90

Professional Summary

7.1Years
  • Feb, 2025 - Jan, 2026 11 months

    Senior Backend Engineer (Node.js Microservices & Cloud Platforms)

    Emirates Nbd
  • Nov, 2023 - Dec, 20241 yr 1 month

    Senior Backend Lead (TypeScript, APIs & Cloud Delivery)

    Uplers
  • Sep, 2021 - Aug, 20231 yr 11 months

    Platform Engineer (Node.js, Real-Time Systems & MongoDB)

    Nesscale Solutions
  • Apr, 2018 - Apr, 20191 yr

    Web Developer

    Tuvoc Technologies
  • May, 2019 - Mar, 20211 yr 10 months

    Senior Full-Stack Developer

    Excellent Web World

Applications & Tools Known

  • icon-tool

    PHP

  • icon-tool

    cPanel

  • icon-tool

    XAMPP

  • icon-tool

    MySQL

  • icon-tool

    FTP server

  • icon-tool

    jQuery

  • icon-tool

    Git

  • icon-tool

    REST API

  • icon-tool

    React

  • icon-tool

    Javascript

  • icon-tool

    Node.js

  • icon-tool

    Vue.js

  • icon-tool

    Laravel

  • icon-tool

    MongoDB

  • icon-tool

    Jira

  • icon-tool

    Skype

  • icon-tool

    CodeIgniter

  • icon-tool

    Postman

  • icon-tool

    Amazon S3

  • icon-tool

    Amazon EC2

  • icon-tool

    Ajax

  • icon-tool

    Visual Studio Code

  • icon-tool

    WebRtc

  • icon-tool

    ReactJS

  • icon-tool

    Next.js

  • icon-tool

    AWS

  • icon-tool

    Docker

Work History

7.1Years

Senior Backend Engineer (Node.js Microservices & Cloud Platforms)

Emirates Nbd
Feb, 2025 - Jan, 2026 11 months
    Node.js Microservices: Architected high-throughput Node.js service layers handling 10k+ operations per second across distributed enterprise workflows and API integrations. System Design: Designed resilient service boundaries, async workers, retry-safe flows, idempotency keys, Redis locks, and event-driven coordination for production reliability. Cloud Scaling: Built and operated services on Kubernetes/GKE and GCP patterns with Docker, CI/CD, structured deployments, and environment-specific configuration. Event-Driven Workflows: Used Kafka and Pub/Sub patterns similar to AWS SQS for queue-backed processing, decoupled services, and operational status propagation. Observability & Debugging: Added OpenTelemetry traces, structured logs, Prometheus-style metrics, dashboards, and root cause workflows for production issue resolution. Mentorship & Reviews: Reviewed backend changes across Node.js, Java, Python, and React, mentoring engineers on clean code, scalability, and production readiness.

Senior Backend Lead (TypeScript, APIs & Cloud Delivery)

Uplers
Nov, 2023 - Dec, 20241 yr 1 month
    Backend Platform Rebuild: Rebuilt a legacy subscription and workflow platform into modular Node.js/TypeScript services backed by PostgreSQL/MongoDB-style data patterns. API Performance: Refactored GraphQL and REST data loading with DataLoader primitives, removing N+1 query paths and reducing enterprise data fetch latency by 60%. CI/CD Pipelines: Authored Terraform modules and GitHub Actions-style deployment workflows for GCP Cloud Run, Kubernetes, repeatable releases, and rollback-safe delivery. Automated Tests: Added Jest, integration, and E2E coverage around sensitive backend/API paths while improving release confidence and regression detection. Database Optimization: Improved schemas, indexes, query plans, consistency checks, and migration strategy for high-volume customer workflows. Product Collaboration: Worked with product and operations teams to prioritize user-facing reliability, debug issues, and ship incremental improvements quickly.

Platform Engineer (Node.js, Real-Time Systems & MongoDB)

Nesscale Solutions
Sep, 2021 - Aug, 20231 yr 11 months
    High-Volume Services: Programmed scalable asynchronous microservices in Node.js and Python for 100k+ daily routing, notification, and operational events. MongoDB/Redis Patterns: Built document-style data models, Redis-backed caching, slug/event deduplication, and indexing patterns for fast operational reads. Real-Time Dashboards: Built React/WebSocket dashboards for queue status, exception review, event timelines, and support team visibility. Testing Discipline: Established Jest, RTL, Cypress, and Playwright practices, reaching 85% baseline coverage and shortening regression cycles by half.

Senior Full-Stack Developer

Excellent Web World
May, 2019 - Mar, 20211 yr 10 months
    Marketplace-Style Systems: Delivered 20+ B2B web applications using Node.js, React, Java Spring Boot, MongoDB/MySQL, and REST APIs. API Integrations: Built customer, inventory, payment, admin, and third-party integration APIs with validation, error handling, and operational audit logs. Maintainable Code: Refactored legacy modules, improved database-backed workflows, documented implementation details, and supported production releases.

Web Developer

Tuvoc Technologies
Apr, 2018 - Apr, 20191 yr
    Backend Foundation: Maintained custom APIs built on Express/Node.js and MySQL/MongoDB-style schemas for dynamic business workflows. Frontend Foundation: Developed responsive UI patterns, dashboards, JavaScript interactions, React/Vue components, and cross-browser interfaces.

Major Projects

16Projects

Auction-Driven Trade-In Engine

    Marketplace workflow for device intake, buyer bidding, pricing decisions, and instant seller payout orchestration using Node.js, TypeScript, and MongoDB.

Device Lifecycle Microservices

    Service decomposition for device grading, offer generation, inventory state, buyer matching, and fulfillment updates with Node.js, REST, and MongoDB.

AWS SQS Processing Pipeline

    Queue-backed workflow for asynchronous trade events, retries, dead-letter handling, and idempotent task execution using AWS SQS and Node.js.

MongoDB Aggregation Service

    Document-model design with indexes, aggregation pipelines, and read models for high-volume marketplace analytics.

Node.js Event Loop Optimization

    Async performance tuning for CPU-light I/O-heavy services, backpressure control, worker isolation, and timeout management.

CI/CD Release Platform

    Automated lint, type-check, tests, image builds, deployment gates, and rollback checks using GitHub Actions, Docker, and Kubernetes.

Microservice API Gateway

    Central API layer for authentication, validation, routing, rate limiting, and service-to-service viability using Node.js and TypeScript.

Distributed Caching Layer

    Redis-backed caching and locking strategy reducing database load by 70% while protecting critical state transitions.

Real-Time Operations Dashboard

    Dashboard for auction activity, processing queues, SLA issues, error rates, and operational alerts using React, WebSocket, and Node.js.

System Design Playbook

    Reusable templates for service boundaries, data ownership, message contracts, API versioning, and migration planning.

Functional Test Harness

    Automated functional and contract tests validating marketplace flows, queue processing, error cases, and API compatibility.

Cloud Scaling Blueprint

    Kubernetes, GKE, and AWS deployment strategy for horizontal scaling, autoscaling signals, config isolation, and observability.

Payment Event Workflow

    Retry-safe event workflow for payment status, audit logs, reconciliation checks, and operational visibility.

AI Debugging Assistant Agent

    Agent that analyzes logs, traces, stack errors, queue metrics, and source context to recommend debugging actions.

AI Test Generation Agent

    Agent workflow that detects changed backend code paths, proposes edge cases, and generates reviewable test scaffolds.

Backend Refactor Planner

    Agent-assisted checklist that identifies risky modules, decomposition opportunities, and safe normalization steps.

Education

  • Diploma in Computer Engineering

    Gujarat Technological University (2018)

Interests

  • Watching Movies
  • Reading
  • AI-interview Questions & Answers

    Hello. I have over 5.5 years of experience in back end and front end technologies. In the back end, my expertise are in PHP, Laravel, coordinator Node.js. And in front end, my expertise in HTML, CSS, and React. I have also worked with 3rd party APIs and REST APIs. And in the database, I have experience in MySQL and MongoDB. And for the server, I have experience in AWS EC2 instance and CloudFront Technologies. That's all about me. Thank you.

    And yes, so to manage database transactions in Laravel, and ensure asset properties, which is atomicity, consistency, isolation, and durability, are maintained. I can employ strategies like database transactions. So, I will use Laravel's database transaction methods like database being transaction, db commit, and db rollback to represent the database operation. This will ensure that either all the operations within the transaction are completed successfully or none of them are applied. Then error handling. So, I will implement proper error handling mechanisms within transaction blocks to catch exceptions and roll back the transaction when an error occurs, ensuring consistency. And then isolation levels. So, for that, we have to choose an appropriate isolation level for the transaction to manage the level of visibility and concurrency. Laravel will support setting isolation using database configuration or query builder. And then testing. So, we have to thoroughly test the database transactions, especially in scenarios involving concurrent access to ensure that data integrity is maintained under different conditions. And then optimistic locking. So, to create concurrent modifications to the same data by multiple users, we have to use the optimistic locking technique. Laravel will provide support for optimistic locking through the lock for update method. And then database constraints. We have to define appropriate database constraints, such as a foreign key constraint, unique constraint, and check constraint to enforce data integrity at the database level.

    Okay, so to optimize the rendering process when handling that dataset and integrate with a parallel backend, we have to use virtualization, in which we have to use libraries like react virtualize or react window to render only the visible items that reduces the memory footprint and improves performance. Then, pagination or infinite scrolling, so that we fetch data in smaller chunks to avoid loading all data at once. This reduces the initial load time and improves user experience. Laravel's pagination features can help with this, and then memoization and paired components. So, the memo caches expensive computations and uses the square component or normalization technique to create unnecessary re-renders. We have to use IndexedDB or local storage, optimize API response, and then implement server-side rendering, which means server-side rendering, caching, and lazy loading. This means loading components, images, and other assets asynchronously to prioritize the initial rendering and improve overall performance. Here, I mentioned caching, which means implementing a caching mechanism on both the front end and back end to reduce the load on the server and speed up subsequent requests. As I mentioned, server-side rendering, in which we have to render the initial HTML on the server to improve perceived performance and SEO, then iterate with React on the client side. Libraries like interior.js or Livewire can help with this.

    In a Laravel app, by using MySQL indexes, query performance can be significantly improved, resulting in faster data retrieval, optimized sorting and filtering, and enhanced join performance, as well as reduced disk I/O. The partial data rate table means that indexes act like a table of content for your database tables. When you execute a query on those index columns, MySQL can quickly locate the rows matching the query criteria, leading to faster data retrieval. Optimized sorting and filtering means indexing speeds up the sorting and filtering operation by reducing the number of rows that need to be scanned. For example, if you have an index on a column used in a WHERE clause or ORDER BY clause, MySQL can use the indexes to efficiently locate and sort the relevant rows. A join performance means an index can also improve the performance of a join operation by allowing MySQL to quickly locate the rows in the join table that meet the join condition. The last one I mentioned was reduced disk I/O. By using indexes, MySQL can minimize the disk I/O operation because it doesn't have to scan the entire table to find the requested data. Instead, it can use the indexes to directly access the relevant rows.

    Okay, so for AWS S3, that includes a few steps like the first of all, we have to set up an AWS S3 bucket. So for that, we have to create an S3 bucket in the AWS account to store the uploaded files and then configure the bucket permission to allow access only to authorized users. Then we have to install the AWS SDK for PHP. So we can do that by running the command composer require AWS/AWS SDK PHP. And then we have to configure AWS credentials. So we will add AWS configuration in the config/services.php file or use environment variables for security. Then we have to ensure that the IAM user is associated with the credential that has permission to access the S3 bucket. Then we have to create the file upload form. So we have to implement the file upload form in the Laravel application view using HTML forms or Laravel form helper methods. And then we have to handle file upload in the controller. So for that, we have to create a controller method to handle the file upload. In this method, we will use the store method to store the uploaded file on the S3 bucket. And then we will write the function. And then we have to securely handle the file upload. So for that, we will validate the uploaded file to ensure it meets the application requirements, for example, file type and size. And then we have to return a response. So after a successful file upload, it will return a response to the user including a success or failure. And then we have to check the access control. That means we have to set up appropriate access control settings on the S3 bucket to control who can access the uploaded files. Thank you.

    Okay, so the Laravel queue system provides background processing and what AWS services would complement it. So the Laravel queue system facilitates background processing by allowing to defer the processing of time-consuming tasks, such as sending emails or interacting with external APIs, to a later time. This helps improve the responsiveness of your application by uploading nonessential tasks, which can be processed synchronously. So how Laravel queue works. First, we have to make configuration. Laravel comes out of the box with multiple queue drivers, including Redis, Amazon SQS, and others. You can configure the queue driver in the config/queue.php configuration file. The second task is job dispatching. So when you want to execute a task asynchronously, you dispatch a job to the queue using Laravel's dispatch method. This method queues the job for later processing. And then comes queue workers. Queue workers are continuously monitored for incoming jobs. When a job is available, a worker picks it up and executes it. You can start one or more queue workers using Laravel's queue:work artisan command. The last one is the job execution. Each job class in Laravel represents a unit of work that needs to be performed. You define the logic for the job with its handle method. The job object is automatically serialized and deserialized, making it easy to pass complex data structures between your application and the queue workers. As for the AWS services that complement the Laravel queue system, we can use Amazon SQS and Amazon SNS. Amazon SQS is a simple queue service. Amazon SNS is a simple notification service. Then Amazon Lambda. Then, Amazon ECS, which is the Elastic Container Service.

    The code snippet stays is a method of getUser that attempts to find a user by their ID and it returns the user data as a JSON. If the user is not found, it's supposed to return JSON with an error message and 404 HTTP status code. So, there could be problem with the request ID part if the ID is not being passed correctly in the request or if the ID field does not exist on the request object or on the request object. So, another potential issue could be with the user find method. Perhaps if it's not working as expected due to the database connection issue or model configuration problem in the ORM being used. To debug this, I would first ensure that the $request object contains the expected ID field and that it's being passed correctly. I would also check the user model to make sure it's set up correctly and can connect to the database. Checking the logs for any errors that occurred during the request could provide further insight into what might be going wrong. By adding error handling to catch any exceptions during the find operation and logging this exception could also be helpful for debugging purposes. Additionally, the testing method with a known user ID to see if it returns the correct response would be a good step to confirm that the method works under the same conditions.

    The user profile so there's the user profile, which includes a constructor and handles a method for sending user data along with the render method. So the potential issue is there is no actual button in the render method to trigger the handle method. To the render method should include a button that when clicked calls the handle method. For better state management, we can use a save service or data function, handle errors and update the component state accordingly. Use a controlled component for form input to sync the formulas with the component's state. We have to replace the alert with a less intrusive way to notify the user of the save status. Then we have to add the handle show method to a button in the render method. If props are expected to change over time, then we have to consider using a lifecycle method to update the state in response to prop change.

    In a Laravel application, to apply the SOLID principle, I would first use the Single Responsibility Principle (SRP), where each class should have only one reason to change, meaning it should only have one job. This means separating the logic into different classes based on their functionality. For example, controllers should only handle the HTTP request and delegate business logic to service classes. Then, I can use Laravel's jobs for background tasks, processing, and even for handling the side effects of the main action. This adheres to the Open-Closed Principle (OCP), where the software entity should be open for extension but closed for modification. Next, I would use the Liskov Substitution Principle (LSP), where the object of a subclass should be replaced with objects of the superclass without affecting the correctness of the program. I would also use the Interface Segregation Principle (ISP), where clients should not be forced to depend upon interfaces they do not use. This is achieved by creating multiple, smaller interfaces that meet the needs of specific clients. Furthermore, I would apply the Dependency Inversion Principle (DIP), where high-level modules should not depend on low-level modules, both should depend on abstraction. Abstractions should not depend on details, so the details should depend upon the abstractions. To ensure the Laravel code behavior, I can consider creating service providers using middleware, employing resource controllers, utilizing form requests, using Eloquent, implementing policies, and writing features.

    To improve the performance of a React app with heavy visual elements, I can use lazy loading. For that, we have to use dynamic import syntax or libraries like create lazy load to lazy load components. And then, we can use code splitting, which will split the application into smaller chunks using Webpack or Parcel, offering loading only the necessary code at the start and the rest of the month. We can use pure components and React.memo to prevent unnecessary re-renders by comparing props or state. Then, we can use optimizing renders with shouldComponentUpdate to implement this lifecycle method to our components when the state or props haven't changed significantly. We can use virtualization for that, using libraries like react-window or virtualize to only render items that are currently visible in the viewport. We can also use throttling and debouncing for continuous events like scrolling or resizing, to limit the number of times the event handler are called. And then we can use Canvas drawing, web workers, and CSS transitions and animations. We can also use immutable data structures, profiling and optimizing components, and reducing the bundle size. And then we can use SSR, which is server-side rendering. To prioritize loading, we have to use the link tag and the rel attribute equal to preload. And then we can use state management optimization.

    No. Okay. So the testing complexity component interaction in a web application using Jest, I have to set up the testing environment. So first, I will install Jest by using the command npm install --save-dev Jest. And then I will install the testing library, npm install --save-dev @testing-library/jest-dom. And then I will configure Jest. So for that, I will create or update the test.config.js file. And then I will set up the test utilities in the setupTest.js file. And then I will write the test. So in which I will render the component by using the React testing library to render the component. Then I will simulate user interaction. Then I will test effects and callbacks. And then I will use passing operations and API mocks. And then I will check advanced techniques, like testing prop changes, context providers, or hooks. So the hooks will utilize the testing library to test the custom hooks. Then I will use performance testing, which will use profiling to understand the component performance with various states and props. Then I will use the main ability, which is clear test cases. That means we will name the test case clearly and ensure they are focused on specific functionalities. And then we can use mocks and stubs, by using just the smoking function twice, to test a little component for unit testing while stubbing out complex dependencies. So by this type of strategies, we can effectively test the complex component interaction that will ensure the application is bug-free and user-friendly.