< browse all profiles
skill profile

NodeJS

People who contributed to profile creation

5

Contributors
Give us a feedback
Community

8

Subscribers
Subscribe for news

Description

A Node.js developer can write server-side web application logic in JavaScript. Node.js developers usually develop back-end components, connect the application with the other (often third-party) web services, and support the front-end developers by integrating their work with the Node.js application.

Skills

General knowledges

Expand/colapse
How does the internet works, how the Web works. Difference between a web page, a web site, a web server and search engine. Understanding domain names. Understanding development processes, main programming paradigms etc.

Protocols (HTTP, HTTPS, HTTP2)

Protocol - a set of rules or procedures for transmitting data between two or more entities of a communications system.

Browsers (how do they works with APIs)

‍A web browser (commonly referred to as a browser) is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. Although browsers are primarily intended to use the World Wide Web, they can also be used to access information provided by web servers in private networks or files in file systems. (Render, parsing, optimization etc.)

‍Web Security Knowledge (Content Security Policy, CORS, OWASP Security Risks)

‍Website security is the act/practice of protecting websites from unauthorized access, use, modification, destruction, or disruption (important principles of modern web security, security best practices)

‍SDLC and Methodologies (Scurm, Kanban, Waterfall, XP)

‍Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high-quality software. The SDLC aims to produce high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.

‍REST, SOAP

‍REST and SOAP are 2 different approaches to online data transmission. Specifically, both define how to build application programming interfaces (APIs), which allow data to be communicated between web applications.

‍Functional Programming (immutability, state less, meta reducers)

‍Functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program.

‍OOP (Inheritance / Encapsulation / Polymorphism)

‍Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods).

‍Template Engines (Mustache.js, Handlebars, EJS, Pug, Nunjunks.js)

‍Template engine helps us to create an HTML template with minimal code. Also, it can inject data into HTML template at client side and produce the final HTML.

‍HTML

‍HTML (Hypertext Markup Language) is the code that is used to structure a web page and its content. For example, content could be structured within a set of paragraphs, a list of bulleted points, or using images and data tables.

‍CSS

‍CSS (Cascading Style Sheets) is the language used to style an HTML document. CSS describes how HTML elements should be displayed.

‍Authorization and Authentification (Authorization, Cookies, Session, JWT, Token, OAuth)

‍In simple terms, authentication is the process of verifying who a user is, while authorization is the process of verifying what they have access to.

Protocols (HTTP, HTTPS, HTTP2)
Protocol - a set of rules or procedures for transmitting data between two or more entities of a communications system.
Browsers (how do they works with APIs)
A web browser (commonly referred to as a browser) is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. Although browsers are primarily intended to use the World Wide Web, they can also be used to access information provided by web servers in private networks or files in file systems. (Render, parsing, optimization etc.)
Web Security Knowledge (Content Security Policy, CORS, OWASP Security Risks)
Website security is the act/practice of protecting websites from unauthorized access, use, modification, destruction, or disruption (important principles of modern web security, security best practices)
SDLC and Methodologies (Scurm, Kanban, Waterfall, XP)
Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high-quality software. The SDLC aims to produce high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.
REST, SOAP
REST and SOAP are 2 different approaches to online data transmission. Specifically, both define how to build application programming interfaces (APIs), which allow data to be communicated between web applications.

Performance optimization

Expand/colapse
Performance is an important aspect when building web pages and applications. You need to understand how long your users interact with your app, how often they leave, and the response time as well.

Performance Metrics

‍Measuring performance provides an important metric to help you assess the success of your app, site, or web service. For example, you can use performance metrics to determine how your app performs in comparison to a competitor or you can compare your app's performance across releases. The metrics you choose to measure should be relevant to your users, site, and business goals. They should be collected and measured in a consistent manner and analyzed in a format that can be consumed and understood by non-technical stakeholders.

‍High load testing

‍Load testing is a great way to grab insights about how your application runs under heavy load, how all services interact, and to plan production capacity accordingly.

‍Performance Bottlenecks Identification

‍Bottlenecks can slow down an application significantly.

‍Node.js Profiling techniques

‍There are many third-party tools available for profiling Node.js applications but, in many cases, the easiest option is to use the Node.js built-in profiler.

‍Node.js Clustering

‍NodeJs single-threaded nature is by default using a single core of a processor. Therefore NodeJs introduced a cluster module to spawn processes. β€œCluster” was introduced to scale an application execution on multiple processor cores by creating worker processes. Worker processes share a single port, therefore, requests are routed through a single port.

‍KISS, DRY practices

‍DRY and KISS are software design principles, they are about clean code.

Performance Metrics
Measuring performance provides an important metric to help you assess the success of your app, site, or web service. For example, you can use performance metrics to determine how your app performs in comparison to a competitor or you can compare your app's performance across releases. The metrics you choose to measure should be relevant to your users, site, and business goals. They should be collected and measured in a consistent manner and analyzed in a format that can be consumed and understood by non-technical stakeholders.
High load testing
Load testing is a great way to grab insights about how your application runs under heavy load, how all services interact, and to plan production capacity accordingly.
Performance Bottlenecks Identification
Bottlenecks can slow down an application significantly.
Node.js Profiling techniques
There are many third-party tools available for profiling Node.js applications but, in many cases, the easiest option is to use the Node.js built-in profiler.
Node.js Clustering
NodeJs single-threaded nature is by default using a single core of a processor. Therefore NodeJs introduced a cluster module to spawn processes. β€œCluster” was introduced to scale an application execution on multiple processor cores by creating worker processes. Worker processes share a single port, therefore, requests are routed through a single port.

JS Core

Expand/colapse
The core language of JavaScript is standardized by the ECMA TC39 committee as a language named ECMAScript. This core language is also used in non-browser environments, for example in node.js

ES6+

‍ECMA means European Computer Manufacturer's Association. ECMAScript is a programming language standard that web browsers follow while interpreting Javascript.

‍Typescript

‍TypeScript is a programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript and adds optional static typing to the language.

‍let/const vs var

‍When we declare a new variable in JavaScript, we can either use 'const', 'let', or 'var'.

‍Template Literals

‍Template Literals were introduced with JavaScript ES2015 (ES6) to handle strings in an easier and more readable way. It allows us to embed expressions (expression interpolation) inside a string declaration, handle multiline strings and create "tagged template literals" which is a more advanced form of template literals.

‍Map, Set, WeakMap, WeakSet, Proxy

‍More data structures and more in-depth study of the types.

‍Arrow Functions

‍Arrow functions were introduced in ES6. Arrow functions allow us to write shorter function syntax

‍Multi-Line Strings

‍String manipulation is easy to learn but most difficult to master of it in JavaScript. Earlier, multi-line string was not supported by JavaScript. After 2015, string literals have introduced by ES6 (ECMAScript 6) that supports multi-line string.

‍this

‍A function's 'this' keyword behaves a little differently in JavaScript compared to other languages. It also has some differences between strict mode and non-strict mode.

‍Enhanced Object literals

‍Object literal enhancement is used to group variables from the global scope and form them into javascript objects. It is the process of restructuring or putting back together.

‍Primitive types, Object

‍In JavaScript, a primitive (primitive value, primitive data type) is data that is not an object and has no methods. There are 7 primitive data types: string, number, bigint, boolean, undefined, symbol, and null. In JavaScript, objects can be seen as a collection of properties.

‍Function context

‍Functions in JavaScript run in a specific context, and using the "this" variable we have access to it. All standard functions in the browser run under the Window context. Functions defined under an object or a class (another function) will use the context of the object it was created in. However, we can also change the context of a function at runtime, either before or while executing the function.

‍Async and Await

‍The async function keyword can be used to define async functions inside expressions. The await operator is used to wait for a Promise. It can only be used inside an async function within regular JavaScript code; however it can be used on its own with JavaScript modules.

‍Asynchronous programming (Asynchronous programming and callbacks; Timers; Promises)

‍In general, JavaScript is running code in a non-blocking way. This means that code which is taking some time to finish (like accessing an API, reading content from the local file system, etc.) is being executed in the background, and in parallel the code execution is continued. This behavior is being described by term asynchronous programming. An Event loop is browser’s mechanism to perform non-blocking operations by providing WebAPIs (setTimeout, setInterval, etc.) which are capable of maintaining callback references in memory.

‍Scope, Closures, IIFE

‍A scope in JavaScript defines what variables you have access to. There are two kinds of scope – global scope and local scope. Whenever you create a function within another function, you have created a closure. The inner function is the closure. This closure is usually returned so you can use the outer function’s variables at a later time. An IIFE (Immediately Invoked Function Expression) is a JavaScript function that runs as soon as it is defined.

‍Regular Expressions

‍A regular expression is a sequence of characters that forms a search pattern. When you search for data in a text, you can use this search pattern to describe what you are searching for. A regular expression can be a single character, or a more complicated pattern. Regular expressions can be used to perform all types of text search and text replace operations.

‍Modular JavaScript

‍JavaScript modules are a way to structure JavaScript code. Code in a module is isolated from code in other modules and is not in the global scope. JavaScript has had modules for a long time. However, they were implemented via libraries, not built into the language. ES6 is the first time that JavaScript has built-in modules.

‍Prototype

‍When a function is created in JavaScript, the JavaScript engine adds a prototype property to the function. This prototype property is an object (called a prototype object) that has a constructor property by default. The constructor property points back to the function on which prototype object is a property. We can access the function’s prototype property using functionName.prototype.

ES6+
ECMA means European Computer Manufacturer's Association. ECMAScript is a programming language standard that web browsers follow while interpreting Javascript.
TypeScript
TypeScript is a programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript and adds optional static typing to the language.
let/const vs var
When we declare a new variable in JavaScript, we can either use 'const', 'let', or 'var'.
Template Literals
Template Literals were introduced with JavaScript ES2015 (ES6) to handle strings in an easier and more readable way. It allows us to embed expressions (expression interpolation) inside a string declaration, handle multiline strings and create "tagged template literals" which is a more advanced form of template literals.
Map, Set, WeakMap, WeakSet, Proxy
More data structures and more in-depth study of the types.

Testing and Code Quality

Expand/colapse
In the context of software engineering, software quality refers to two related but distinct notions: Software functional quality; Software structural quality.

Code quality inspection (Code Climate, Sonarqube)

‍There are tools that allow checking code before or during its execution to assess its quality and its adherence to coding standards using a process called code analysis. SonarQube is code review and management software. Code Climate provides automated code review for your apps, letting you fix quality and security issues before they hit production.

‍Linters and Formatters (Prettier, ESLint, StandartJS)

‍It is worth spending a little bit of extra time now to set up formatting and linting tools that will help keep your code clean and enforce good development practices.

‍Integration Testing (Super Test, Mocha, Chai)

‍Integration testing is used to test a group of individual modules, components or piece of units. The main purpose of Integration testing is to find bugs when two or more modules are integrated. To check how two or more modules, components or a different piece of code are will work together.

‍E2E Testing (Selenium, Puppeteer, SuperTest)

‍Unlike unit testing, which focuses on individual modules and classes, end-to-end (e2e) testing covers the interaction of classes and modules at a more aggregate level -- closer to the kind of interaction that end-users will have with the production system.

‍Unit Testing (Jest, Chai, Sinon)

‍Unit Testing: This testing is used to test a small isolated piece of code, unit testing will be done by developers to test functions or blocks.

‍Test Driven Development

β€β€œTest-driven development” refers to a style of programming in which three activities are tightly interwoven: coding, testing (in the form of writing unit tests) and design (in the form of refactoring).

‍BDD (Behavior-Driven Devellopment)

‍In software engineering, behavior-driven development (BDD) is an agile software development process that encourages collaboration among developers, quality assurance testers, and customer representatives in a software project. BDD is an extension to TDD concept, but instead of testing your code you are testing your product, and specifically that your product behaves as you desire it to. Popular tools and frameworks for BDD: Mocha, Chai, Jasmine, Cucumber.js.

Code quality inspection (Code Climate, Sonarqube)
There are tools that allow checking code before or during its execution to assess its quality and its adherence to coding standards using a process called code analysis. SonarQube is code review and management software. Code Climate provides automated code review for your apps, letting you fix quality and security issues before they hit production.
Linters and Formatters (Prettier, ESLint, StandartJS)
It is worth spending a little bit of extra time now to set up formatting and linting tools that will help keep your code clean and enforce good development practices.
Integration Testing (Super Test, Mocha, Chai)
Integration testing is used to test a group of individual modules, components or piece of units. The main purpose of Integration testing is to find bugs when two or more modules are integrated. To check how two or more modules, components or a different piece of code are will work together.
E2E Testing (Selenium, Puppeteer, SuperTest)
Unlike unit testing, which focuses on individual modules and classes, end-to-end (e2e) testing covers the interaction of classes and modules at a more aggregate level -- closer to the kind of interaction that end-users will have with the production system.
Unit Testing (Jest, Chai, Sinon)
Unit Testing: This testing is used to test a small isolated piece of code, unit testing will be done by developers to test functions or blocks.

Dev tools

Expand/colapse
Development Tools help to accelerate the web development process. There are many front-end web development software that help you faster your development work.

Docker (Docker-compose)

‍Docker is a computer program that performs operating system level virtualization, also known as containerization. It runs software packages as β€œcontainers.”

‍Build Tools (Gulp, Grunt etc.)

‍They are designed to automate tasks that you would otherwise have to do manually (Compiling Less/Sass to CSS; Concatenating and minifying CSS and JavaScript; Linting code; Optimizing images; Running unit tests)

‍Task Runners (npm scripts, nodemon, pm2)

‍Task runners allow to automate many tasks (repetitive tasks: making a change, compressing the js and css file, minimize code to gain performance)

‍Modules Bundlers (Webpack, Rollup, Parcel)

‍Module bundlers are tools that process your modern JavaScript applications, internally build dependency graphs which map every modules your projects need and generate one or module bundles.

‍VCS (Git (Git branching models), GitHub, GitLab, Bitbucket, Mercurial, SVN)

‍Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time.

‍Monitoring tools: NewRelic, Stackify, Ruxit, LogicMonitor and Monitis, etc.

‍With Node.js monitoring, APM tools are used to monitor the software application’s performance and availability by finding bottlenecks and fixing errors. The Node.js monitoring tools can fix the bugs by analyzing each web result, pointing out the problem at the code level, and tracking down the issues.

Docker (Docker-compose)
Docker is a computer program that performs operating system level virtualization, also known as containerization. It runs software packages as β€œcontainers.”
Build Tools (Gulp, Grunt etc.)
They are designed to automate tasks that you would otherwise have to do manually (Compiling Less/Sass to CSS; Concatenating and minifying CSS and JavaScript; Linting code; Optimizing images; Running unit tests)
Task Runners (npm scripts, nodemon, pm2)
Task runners allow to automate many tasks (repetitive tasks: making a change, compressing the js and css file, minimize code to gain performance)
Modules Bundlers (Webpack, Rollup, Parcel)
Module bundlers are tools that process your modern JavaScript applications, internally build dependency graphs which map every modules your projects need and generate one or module bundles.
VCS (Version control system)
Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time. For example Git (Git branching models), GitHub, GitLab, Bitbucket, Mercurial, SVN, etc.

Cloud Platforms

Expand/colapse
A cloud platform refers to the operating system and hardware of a server in an Internet-based data center. It allows software and hardware products to co-exist remotely and at scale.

Amazon Web Services Lambda

‍AWS Lambda is an event-driven, serverless computing platform provided by Amazon as a part of Amazon Web Services. It is a computing service that runs code in response to events and automatically manages the computing resources required by that code. It was introduced in November 2014.

‍Microsoft Azure Functions

‍Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in Azure or third party service as well as on-premises systems.

‍Google Cloud Functions

‍Google Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services.

Amazon Web Services
Amazon web service is an online platform that provides scalable and cost-effective cloud computing solutions.
Microsoft Azure Functions
Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in Azure or third party service as well as on-premises systems.
Google Cloud Functions
Google Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services.

CI/CD

Expand/colapse
CI and CD are two acronyms frequently used in modern development practices and DevOps. CI stands for continuous integration, a fundamental DevOps best practice where developers frequently merge code changes into a central repository where automated builds and tests run. But CD can either mean continuous delivery or continuous deployment.

GitHub Actions

‍GitHub Actions is an API for cause and effect on GitHub: orchestrate any workflow, based on any event, while GitHub manages the execution, provides rich feedback, and secures every step along the way. With GitHub Actions, workflows and steps are just code in a repository, so you can create, share, reuse, and fork your software development practices.

‍GitLab Pipelines

‍Pipelines are the top-level component of continuous integration, delivery, and deployment. Pipelines are the fundamental building blocks for CI/CD in GitLab.

‍Jenkins

‍Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software.

‍TeamCity

‍TeamCity is a Java based CI server by JetBrains. Being a commercial tool, it is licensed under a freemium license (up to 100 build configurations and 3 build agents)

‍Travis CI

‍Travis CI was the first CI as a Service tool. It introduced a new approach to building code in the cloud. This CI tool allows the user to sign up, link their repository, build, as well as test their apps.

‍BitBucket Pipelines

‍Bitbucket Pipelines is CI/CD for Bitbucket Cloud that’s integrated in the UI and sits alongside your repositories, making it easy for teams to get up and running building, testing, and deploying their code.

‍Azure DevOps

‍Azure DevOps is a powerful tool to organize development tasks of an any project. In addition, there is the pipeline tool available, which allows you to build continuous integration and continuous delivery pipelines.

‍CircleCI

‍CircleCI is the continuous integration & delivery platform that helps the development teams to release code rapidly and automate the build, test, and deploy. CircleCI can be configured to run very complex pipelines efficiently with caching, docker layer caching, resource classes and many more.

‍Bamboo

‍Bamboo is an automation server used for Continuous Integration. Developed by Atlassian in 2007, this tool allows the developers to automatically build, document, integrate, test the source code and prepare an app for deployment.

‍VSTS

‍Visual Studio Team System (VSTS) is an integrated development environment (IDE) developed as a software product by Microsoft Corp. to facilitate software project creation, development and management.

GitHub Actions
GitHub Actions is an API for cause and effect on GitHub: orchestrate any workflow, based on any event, while GitHub manages the execution, provides rich feedback, and secures every step along the way. With GitHub Actions, workflows and steps are just code in a repository, so you can create, share, reuse, and fork your software development practices.
GitLab Pipelines
Pipelines are the top-level component of continuous integration, delivery, and deployment. Pipelines are the fundamental building blocks for CI/CD in GitLab.
Jenkins
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software.
TeamCity
TeamCity is a Java based CI server by JetBrains. Being a commercial tool, it is licensed under a freemium license (up to 100 build configurations and 3 build agents)
Travis CI
Travis CI was the first CI as a Service tool. It introduced a new approach to building code in the cloud. This CI tool allows the user to sign up, link their repository, build, as well as test their apps.

Architecture

Expand/colapse
The software architecture of a system depicts the system’s organization or structure, and provides an explanation of how it behaves. A system represents the collection of components that accomplish a specific function or set of functions. In other words, the software architecture provides a sturdy foundation on which software can be built.

Data Structure and Algorithms

‍Algorithm is a step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output. From the data structure point of view, following are some important categories of algorithms: Search; Sort; Insert; Update; Delete.

‍Serverless

‍Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.

‍AntiPatterns

‍Architecture AntiPatterns focus on the system-level and enterprise-level structure of applications and components. If design patterns are the good guys, then the anti-patterns are the bad guys. And sometimes a good guy can turn into a bad guy. This happens in Hollywood movies, but it also happens in software engineering.

‍MVC

‍Architectural patterns that separate applications into three main logical components Model, View, and Controller

‍Design Patterns (Factory, Strategy, Observer, Middlewares, Singeltone, State)

‍Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time.

‍Microservices VS Monolit

‍Monolith means composed all in one piece. The Monolithic application describes a single-tiered software application in which different components combined into a single program from a single platform. Microservices are an approach to application development in which a large application is built as a suite of modular services (i.e. loosely coupled modules/components). Each module supports a specific business goal and uses a simple, well-defined interface to communicate with other sets of services.

‍Microservices communication techniques

‍This skill is about (Message-Broker (RabbitMQ, Apache Kafka, ActiveMQ, Azure Service Bus); Message-Bus (Distribus, BusMQ), etc.) Choosing the mode of communication is a fundamental decision which needs to be taken with great care. Services must handle requests from the application’s clients. Furthermore, services often collaborate to handle those requests. Consequently, they must use an inter-process communication protocol.

Data Structure and Algorithms
Algorithm is a step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output. From the data structure point of view, following are some important categories of algorithms: Search; Sort; Insert; Update; Delete.
Serverless
Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.
AntiPatterns
Architecture AntiPatterns focus on the system-level and enterprise-level structure of applications and components. If design patterns are the good guys, then the anti-patterns are the bad guys. And sometimes a good guy can turn into a bad guy. This happens in Hollywood movies, but it also happens in software engineering.
MVC
Architectural patterns that separate applications into three main logical components Model, View, and Controller
Design Patterns (Factory, Strategy, Observer, Middlewares, Singeltone, State)
Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time.

Data and Database

Expand/colapse
A database is an organized collection of data, generally stored and accessed electronically from a computer system.

Relational DB

‍A relational database is a type of database. It uses a structure that allows us to identify and access data in relation to another piece of data in the database. Often, data in a relational database is organized into tables. The most popular in use: SQL Server, PostgreSQL, MariaDB, MySQL, etc.

‍Cloud Database (Azure CosmosDB, Amazon DynamoDB)

‍A cloud database is a database that typically runs on a cloud computing platform and access to the database is provided as-a-service.

‍NoSQL DB

‍A NoSQL (originally referring to "non-SQL" or "non-relational") database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. The most popular in use: MongoDB, Redis, LiteDB, Apache Cassandra, RavenDB, CouchDB, etc.

‍Search Engines (ElasticSearch, Solr, Sphinx)

‍A powerful search engine behind your database, helps the customers in better finding.

‍GraphQL

‍GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data.

‍ACID

‍Set of properties that a database transaction in a relational database is supposed to have (Atomicity, Consistency, Isolation, Durability)

‍Transactions

‍A transaction can be defined as a group of tasks. A single task is the minimum processing unit which cannot be divided further.

‍N+1 Problem

‍The N+1 query problem happens when your code executes N additional query statements to fetch the same data that could have been retrieved when executing the primary query.

‍Database Normalization

‍Database normalization is the process of structuring a database, usually a relational database, in accordance with a series of so-called normal forms in order to reduce data redundancy and improve data integrity. It was first proposed by Edgar F. Codd as part of his relational model.

‍Indexes and how they work

‍A database index is a data structure that improves the speed of data retrieval operations on a database table at the cost of additional writes and storage space to maintain the index data structure.

Relational (SQL Server, PostgreSQL, MariaDB, MySQL)
A relational database is a type of database. It uses a structure that allows us to identify and access data in relation to another piece of data in the database. Often, data in a relational database is organized into tables.
Cloud Database (Azure CosmosDB, Amazon DynamoDB)
A cloud database is a database that typically runs on a cloud computing platform and access to the database is provided as-a-service.
NoSQL (MongoDB, Redis, LiteDB, Apache Cassandra, RavenDB, CouchDB)
A NoSQL (originally referring to "non-SQL" or "non-relational") database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.
Search Engines (ElasticSearch, Solr, Sphinx)
A powerful search engine behind your database, helps the customers in better finding.
GraphQL
GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data.

Node.js Basics

Expand/colapse
Node.js is an open-source and cross-platform JavaScript runtime environment. It is a popular tool for almost any kind of project!

Events (Emitting, handling)

‍Node.js allows us to create and handle custom events easily by using events module. Event module includes EventEmitter class which can be used to raise and handle custom events.

‍Process Object

‍The process object in Node.js is a global object that can be accessed inside any module without requiring it. There are very few global objects or properties provided in Node.js and process is one of them. It is an essential component in the Node.js ecosystem as it provides various information sets about the runtime of a program.

‍Error Handling Skills

‍Error handling is a way to find bugs and solve them as quickly as humanly possible.

‍Buffers

‍The Buffer class in Node.js is designed to handle raw binary data. Each buffer corresponds to some raw memory allocated outside V8. Buffers act somewhat like arrays of integers, but aren't resizable and have a whole bunch of methods specifically for binary data.

‍Request validation (express-validation, joi, etc)

‍Go to the server/routes directory and create there a new directory called validation.

‍Log libraries

‍Node provides an easily extensible logging system, allowing you to control which messages get logged and to where they are output. There are many third-party logging libraries available for Node.js. The most popular: Winston, Morgan, Node-bunyan, Node-Loggy, Log Management System (Sentry.io, loggy.com), etc.

‍Node.js Frameworks

‍There are Node.js frameworks popular for their lightweight and simplified development process. The most popular: Express, Nest.js, Next.js, Koa.js, etc.

‍Package Manager (npm, yarn)

‍Two of the most popular package managers among JavaScript (and Node.js) developers are npm and Yarn. There are subtle differences between them, which can make you prefer one over the other.

‍NodeJS Architecture

‍Node.js is a combination of Google’s V8 JavaScript engine, an event loop, and a low-level I/O API. While discussing this topic it worth to talk about single-threaded event loop model architecture; event-driven nature of NodeJS.

Events (Emitting, handling)
Node.js allows us to create and handle custom events easily by using events module. Event module includes EventEmitter class which can be used to raise and handle custom events.
Process Object
The process object in Node.js is a global object that can be accessed inside any module without requiring it. There are very few global objects or properties provided in Node.js and process is one of them. It is an essential component in the Node.js ecosystem as it provides various information sets about the runtime of a program.
Error Handling Skills
Error handling is a way to find bugs and solve them as quickly as humanly possible.
Buffers
The Buffer class in Node.js is designed to handle raw binary data. Each buffer corresponds to some raw memory allocated outside V8. Buffers act somewhat like arrays of integers, but aren't resizable and have a whole bunch of methods specifically for binary data.
Request validation (express-validation, joi, etc)
Go to the server/routes directory and create there a new directory called validation.

Caching

Expand/colapse
Caching is a technique used for improving the performance of servers and a lot of devices used in day-to-day life.

node-cache

‍Node-cache is an in-memory caching package similar to memcached.

‍Distributed Cache (Redis, Memcached)

‍Distributed cache is an extension of the traditional concept of cache used in a single locale. A distributed cache may span multiple servers so that it can grow in size and in transactional capacity. Redis and Memcached are popular, open-source, in-memory data stores. Although they are both easy to use and offer high performance, there are important differences to consider when choosing an engine.

node-cache
Node-cache is an in-memory caching package similar to memcached.
Distributed Cache (Redis, Memcached)
Distributed cache is an extension of the traditional concept of cache used in a single locale. A distributed cache may span multiple servers so that it can grow in size and in transactional capacity. Redis and Memcached are popular, open-source, in-memory data stores. Although they are both easy to use and offer high performance, there are important differences to consider when choosing an engine.

Real-Time Communication

Expand/colapse
We can define it as the ability to get resources when they are available and add new ones when we want to.

WebSocket

‍WebSockets API is a technology providing a bidirectional communication channel between a client and a server. That means that the client no longer needs to be an initiator of a transaction while requesting data from the server.

‍Socket.io

‍Socket.IO is a library that enables real-time, bidirectional and event-based communication between the browser and the server.

‍WebRTC

‍WebRTC (Web Real-Time Communication) is a technology which enables Web applications and sites to capture and optionally stream audio and/or video media, as well as to exchange arbitrary data between browsers without requiring an intermediary. The set of standards that comprise WebRTC makes it possible to share data and perform teleconferencing peer-to-peer, without requiring that the user install plug-ins or any other third-party software.

WebSocket
WebSockets API is a technology providing a bidirectional communication channel between a client and a server. That means that the client no longer needs to be an initiator of a transaction while requesting data from the server.
Socket.io
Socket.IO is a library that enables real-time, bidirectional and event-based communication between the browser and the server.
WebRTC
WebRTC (Web Real-Time Communication) is a technology which enables Web applications and sites to capture and optionally stream audio and/or video media, as well as to exchange arbitrary data between browsers without requiring an intermediary. The set of standards that comprise WebRTC makes it possible to share data and perform teleconferencing peer-to-peer, without requiring that the user install plug-ins or any other third-party software.
we are loading comments...
Join discussion
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.