A Node.js curriculum for 100 days of code. A 100 Days of Code challenge, strictly focusing on Node and Node-adjacent code.
I created this repository to learn the breadth and depth of Node. It became a source to help other developers learn more about using Node. Spend 100 days learning all about the in and outs of Node; what it can do; and where it's the best (and worst) technology to solve any particular challenge.
Any suggestions for little programs, code challenges, or applications that can showcase different features and abilities of Node that could be added to this list would be greatly appreciated...
- "Hello World"
- Read environment variables from Node.js
- Write a script that adds two numbers
- Use the Node REPL
- Accept arguments from the command line
- Explore console commands
- Accept input on the command line
- Use node import/export modules
- Write an application that uses the Event Loop
- Write an application that uses Timers
- Write an application that uses Asynchronous Programming and Callbacks
- Write an application that uses Promises
- Write an application that uses Async and Await
- Write an application that uses the Node Event emitter
- Write a text-based Choose Your Own Adventure
- Write a text-based RPG combat module
- ? Errors: Error Handling in Node
- NPM: An introduction to npm
- NPM: Manage NPM Packages
- NPM: Update all the Node dependencies to their latest version
- NPM: Semantic Versioning
- NPM: Write an NPM Module
- NPM: Understanding package.json
- NPM: Understanding package-lock.json
- NPM: Work with global packages
- NPM: Link global packages
- NPM: Install npx: Node Package Runner
- CRUD: Writing Local Files
- CRUD: Reading Local Files
- CRUD: Delete Local Files
- CRUD: Accessing Directories
- CRUD: Find Local Files
- Server: Build a Web Server without Express?
- Server: Build a Webserver with Express
- HTTP Module: Make a GET request
- HTTP Module: Create a web server
- HTTP Module: Create a file server
- HTTP Module: Collect POST Data
- Socket: Create a Web Socket
- Socket: Broadcast messages with WebSocket
- Socket: Create a WebSocket with Socket.io
- Socket: Emit Socket.io Events
- Socket: Serve a static File
- Socket: Create your browser app
- Socket: Create a get message service
- Socket: Create a post message service
- Socket: Connect to Socket.io from the browser app
- Socket: Create a Socket.io event
- Streams: ?
- DB: Set up MongoDB
- DB: Mongo CRUD, Create
- DB: Mongo CRUD, Read
- DB: Mongo CRUD, Update
- DB: Mongo CRUD, Delete
- DB: SQL CRUD, Create
- DB: SQL CRUD, Read
- DB: SQL CRUD, Update
- DB: SQL CRUD, Delete
- Testing: Write Node tests with Jest
- Testing: Write Node tests with Jasmine
- Testing: Write Node tests (HTTP) with Supertest
- Microservice: Make a Catalog Service
- Microservice: Make a Promotions Service
- Microservice: Make an A/B Testing Service
- Microservice: Shopping Cart Service
- Microservice: Authentication Service
- Microservice: Using AWS/Serverless & Node.js Lambda
- Node Deployment: Set up Heroku
- Node Deployment: Set up AWS Beanstalk
- Node Deployment: Set up Azure
- Node Deployment: Set up Jenkins CI/CD
- Node Deployment: Set up Travis CI/CD
- Node Deployment: Set up Cirrcle CI/CD
- Node IoT: Real-Time Temperature Logging with Arduino, Node, and Plotly
- Node IoT: The Arduino Experimenter's Guide to Node.js
- Node IoT: Controlling a MotorBoat using Arduino and Node
- Node IoT: Cylon Arduino module?
- Node IoT: Arduino Node.js RC Car Driven the HTML5 Gamepad API
- Node IoT: How to Control Philips Hue Lights from an Arduino
- Node IoT: Easy Node.js and Web Sockets LED for Raspberry Pi
- Node IoT: Heimcontrol.js: Home Monitoring with Raspberry Pi and Node.js
- Node IoT: Build Your Own Smart TV usinf Node.js, Raspberry Pi, and Sockets.io
- Node IoT: Building a Garage Door Opener with Node and MQTT Using and Intel Edison
- Node IoT: Amazon's Guide to Make Your Own Raspberry Pi Alexa Device
- Node IoT: Interactive Smart Mirror
- Node Desktop: Use Electron
- ???
101. Profit!
- Install Node.js
- Write "Hello World"
Let's start with an easy win!
- Install Node.js
- Create a directory named
000
- Create a script named
hello-world.js
- Import
http
withrequire
- Serve a text respons of
Hello World
to port8124
- Console.log an message saying what port is running
- Create a directory named
001
- Create a script named
env.js
- Console.log the values of
process.version
andprocess.env
- Create a directory named
002
- Create a script named
add.js
- Write a function that adds two numbers
- Console.log the results of adding two numbers
REPL stands for Read Evaluate Print Loop
. The REPL session provides a way to quickly test simple JavaScript code.
- Create a directory named
003
- Create a script named
repl.js
- Write a script that enters a REPL session
- Have the script console.log a message on exiting the REPL session
- Run your REPL script
- Console.log the
global
variable - Add a variable to the
global
variable - Console.log your new variable
Adding arguments into your node command (node arguments.js env=dev
) will add them as strings to the process.argv
array.
- Create a directory named
004
- Create a script named
arguments.js
- Write a script to console.log all of the arguments passed in, but only the arguments that you pass in
- Run a command that passes in multiples arguments such as:
node 004/arguments.js name=nathan surname=lilly devMode=test singularArg
There is a built in console
command in Node, much like you'd find in the browser.
- Create a directory named
005
- Create a script named
console.js
- Write a script using the log method with variables passed in
console.log('My %s has %d ears', 'cat', 2)
- Use the count method several times
- Use the clear method
- Use the count method at least one more time
- Reset the count
- Print the stack trace
- Print an error message with an error code
- Print a table
- Measure the time from the first console event to the end of the console events
- Create a directory named
006
- Create a script named
input.js
- Ask three questions and print their input
- Use a conditional to check the answer for at least one of the questions
- Create a directory named
007
- Create a script named
import.js
- Create a script named
export.js
- Write an object into
export.js
- Import the contents of
export.js
into'import.js
and log it to the console - Add a function to the object
- Import and use the function
- Node Documentation
- Learn Node.js - Full Tutorial for Beginners (video), freeCodeCamp
- Learning Node, 2nd Edition, O'Reilly
- The Definitive Node.js Handbook, freeCodeCamp