What can you do with Node.js?
Tags: node, codenewbie, apps, programming
Published: 2021-03-03 03:49:44

You can use Node.js to build a wide variety of production-ready applications. These can range from traditional lightweight, high-traffic chat applications to command-line tools and web servers. Node.js was designed from the ground up to handle a high number of concurrent requests.

We can: 
- Manipulate files on the file system, shell scripts for file manipulation or network access
- Create interactive command-line interfaces, like eslint, and yeoman
- build web servers with HTTP and express
- create an Ad server
- create powerful APIs & backend interfaces - full-stack apps
- create a WebSocket Server like a Chat Server where you have your browser, lots of browsers connecting to the server and there's chat going on, you're sending messages back and forth between the client and the server, and this socket stays open. The best examples of real-time exchange of data are IM applications, whether for exchanging texts, voice calls, or video calls. The `asynchronous nature` of Node.js runtime makes it suitable for building communication apps
- do a file upload client, when you think about uploading big large files, you want to be able to do it in a way that's not blocking, so you can do more than one file at a time, and maybe even start processing the file, as you get the first few pieces of it.
- create Desktop applications, with subsets of Node Electron. 
Electron, the Node.js-based wrapper around the Chrome engine, lets Node.js developers create desktop GUI applications and is the foundation on which many popular applications have been built, including the Atom and Visual Studio Code editors, GitKraken, Postman, Etcher, and the desktop Slack client. 
- create CDNs(a network of computers)
- create shareable libraries/open source. 
The Node.js environment also offers an `npm` registry that you can use to share your own Node.js library.
- query databases (MongoDB, MYSQL, Postgres, Redis)
- use for Serverless Cloud Functions, AWS lambda, Azure, Google Cloud
- use for Tooling (Webpack, Gulp, Grunt, Build, Automation, etc)
- create Machine learning libraries and models

Node.js is popular on `the Internet of Things(IoT)` devices. Its architecture is especially well suited to microservice development and often helps form the server-side of full-stack applications. Many IoT and real-time applications that are written in JavaScript and rely on Node.js to run, either on the server or through microcontrollers and system on a chip (SoC) platforms such as Puck.js or Tessel.

`Microservices` fit the Node.js model of event programming efficiently. At their core, both feature a system for building highly scalable apps.

The following applications are built with Node.js:
- CLI tools such as [hexa.run](https://www.hexa.run/) and [Azure Functions CLI](https://github.com/Azure/azure-functions-core-tools)
- Back-end servers and API services such as [Express.js](https://expressjs.com/) and [NestJS](https://nestjs.com/)
- Desktop apps such as [Slack](https://slack.com/) (using Electron)
- IoT libraries such as [Johnny-Five](http://johnny-five.io/), [Puck-js](https://www.puck-js.com/), and [Tessel](https://tessel.io/)
- Plug-ins for [SketchApp](https://www.sketch.com/) and [Adobe XD](https://www.adobe.com/products/xd.html)
- Code editors such as [Visual Studio Code](https://code.visualstudio.com/) and [Atom](https://atom.io/)
- Native mobile development with [NativeScript](https://nativescript.org/)

Thanks for reading and you can follow me on [Twitter](https://twitter.com/hulyakarkya).