← Theory library
Node.js theory
Server-side JS: indexers, relayers and RPC tooling.
Practise in the Code Lab →Easy
- 1. What Node.js isA JavaScript runtime built on V8 for running JS outside the browser.
- 2. The event loopHow Node decides what to run next, and why callbacks fire when they do.
- 3. CommonJS modulesrequire, module.exports and how Node resolves files.
- 4. ECMAScript modules (ESM)import/export syntax and how Node tells the two systems apart.
- 5. npm and package.jsonThe manifest that describes your project and its dependencies.
- 6. Semantic versioningMAJOR.MINOR.PATCH and the ^ / ~ ranges npm uses.
- 7. process and environmentReading configuration and exiting cleanly.
- 8. Buffers and binary dataWorking with raw bytes — hashes, signatures and hex strings.
- 9. The fs moduleReading and writing files, sync vs async vs promises.
- 10. The path moduleBuilding filesystem paths safely across operating systems.
- 11. StreamsProcessing data piece by piece instead of loading it all in memory.
- 13. EventEmitterThe pub/sub pattern underlying most of Node's core APIs.
- 14. TimerssetTimeout, setInterval, setImmediate and their ordering.
- 15. Error handling patternsError-first callbacks, promise rejections and process-level safety nets.
- 16. Creating an HTTP serverThe built-in http module, no framework required.
- 17. Query strings and URLsParsing request URLs safely with the URL API.
- 18. Global objects and scopeglobalThis, __dirname/__filename, and module-level scope.
- 19. Child processesRunning external programs and other Node scripts from Node.
- 20. Worker threadsTrue parallelism for CPU-bound work within one process.
Medium
- 12. Stream backpressureWhy write() can return false, and why that matters.
- 21. Debugging Node applicationsconsole methods, the inspector protocol, and node --inspect.
- 22. Testing with node:testNode's built-in test runner — no extra dependency required.
- 23. util.promisify and callback interopBridging older callback-based APIs into the Promise world.
- 24. Environment-based configurationTwelve-factor config: same code, different environments.
- 25. Structuring an Express-style APIRoutes, middleware and the request/response pipeline.
- 26. REST API design basicsResources, status codes and predictable shapes.
- 27. Validating inputNever trust data from the network.
- 28. Logging and observabilityStructured logs, log levels and why they matter in production.
- 29. Working with databasesConnection pools, parameterized queries and async access patterns.
- 30. Interacting with blockchain nodes over JSON-RPCHow a Node backend talks to an Ethereum-style node.
- 31. WebSockets for live dataSubscribing to new blocks, pending transactions and logs.
- 32. Rate limiting and retriesBeing a good citizen against RPC providers and external APIs.
- 33. Caching strategiesIn-memory caches, TTLs and cache invalidation.
- 34. Security basicsSecrets, injection, and dependency risk in a Node service.
- 35. Graceful shutdownFinishing in-flight work before the process exits.
- 36. Streams for hashing large dataThe crypto module and incremental hashing.
- 37. Building a CLI toolShebang lines, argument parsing and npm bin entries.
Hard
- 38. Cluster mode and scalingUsing multiple CPU cores from one Node application.
- 39. Memory management and leaksHow V8's garbage collector works and common leak patterns.
- 40. Async iterators and for-await-ofConsuming streams and paginated APIs elegantly.
- 41. AbortController and cancellationCancelling fetch requests and long-running operations.
- 42. Signing and verifying data with cryptoHMACs, key pairs and message authentication.
- 43. Building an indexer: polling new blocksTurning a blockchain into a queryable local dataset.
- 44. Serving multiple environments (testnets/mainnet)Config-driven chain selection instead of hard-coded values.
- 45. Performance profilingFinding the actual bottleneck instead of guessing.
- 46. Deploying a Node serviceProcess managers, health checks and zero-downtime patterns.
- 47. TypeScript with NodeType safety on top of the same runtime.
- 48. Monorepos and workspacesManaging multiple related packages together.
- 49. Building a relayer/signer serviceA backend that submits transactions on behalf of users.
- 50. Capstone: designing a Node backend for a dAppPutting the pieces together into one coherent service.