← All languages
Node.js
Server-side JS: indexers, relayers and RPC tooling.
Theory — 50 written topics
Prefer to read first? The written Node.js topics and their multiple-choice questions now live under the Learn tab.
Open Node.js theory →Easy
Lessons 1-20 — fundamentals
- 1. Basic Env ParsingExtract and cast environment variables.
- 2. Simple Queue: PushManage a FIFO queue.
- 3. Basic Retry LogicRetry a synchronous operation N times.
- 4. Basic Event EmitterSimulate Node's EventEmitter.
- 5. Merging ConfigsShallow merge of default and user config.
- 6. Simple URL Param ExtractorParse query strings manually.
- 7. Chunking DataSplit an array into smaller chunks.
- 8. Message FormatterTemplate string based formatting.
- 9. Filtering Log LevelsFilter an array of logs by severity.
- 10. Basic Throttle LogicCheck if enough time has passed.
- 11. Health Check AggregatorCheck if all services are UP.
- 12. Transaction Status MapperMap raw codes to human-friendly strings.
- 13. Hex to Number ConverterConvert 0x strings to integers.
- 14. Auth Header BuilderCreate a Bearer token header.
- 15. Simple Path JoiningJoin two paths with a single slash.
- 16. Query String BuilderConvert an object to `?a=1&b=2`.
- 17. Error WrapperCreate a custom error class with a code.
- 18. Timeout Logic checkCheck if a request timed out.
- 19. Array BatchingAlternative name for chunking.
- 20. Simple Cache MapA Map with a `getOrSet` helper.
Medium
Lessons 21-37 — patterns and real code
- 21. RPC Request BatcherGroup individual calls into a batch.
- 22. Exponential Backoff CalcCalculate wait time for retries.
- 23. Circuit Breaker LogicTrack failures to open the circuit.
- 24. Priority Queue (2 levels)Process 'high' priority items before 'low'.
- 25. Middleware PipelineRun a value through a sequence of functions.
- 26. Debounce LogicDetermine if a function should execute yet.
- 27. Data AggregatorCollect chunks until a terminator is found.
- 28. JSON-RPC ValidatorCheck for `jsonrpc: '2.0'` and `method` fields.
- 29. Weighted Random PickSelect an item based on weight.
- 30. SemVer ComparerCompare 'major.minor.patch' strings.
- 31. Paged AggregatorCombine arrays from multiple page results.
- 32. Object FlattenerFlatten nested objects for logging.
- 33. Simple MemoizerCache function results based on arguments.
- 34. Task Pool Limit LogicCheck if we can start a new task.
- 35. Pub-Sub BrokerBasic message broker.
- 36. Simple Schema ValidatorCheck if an object matches a simple schema `{ key: 'type' }`.
- 37. Dependency InjectorBasic container to store and retrieve services.
Hard
Lessons 38-50 — advanced and capstone
- 38. Relayer Nonce ManagerTrack and increment sequential nonces.
- 39. Indexer Gap DetectionFind missing block numbers in a list.
- 40. Multi-RPC AggregatorPick the result with the most occurrences (consensus).
- 41. Token Bucket Rate LimiterControl rate by consuming tokens.
- 42. Distributed Lock SimulationLogic to check if a lock can be acquired.
- 43. Simplified Merkle LogicPairwise concatenation logic.
- 44. LRU Cache ImplementationEvict the least recently used item.
- 45. Dependency ResolverTopological sort logic (simplified).
- 46. Complex Stream FilterFilter objects by multiple predicates.
- 47. Binary Search BlocksFind a target timestamp in a sorted block list.
- 48. Simple Bloom FilterCheck if an item might be in a set using a bitmask.
- 49. Transaction LifecycleTrack valid transitions: PENDING -> SUCCESS/FAILED.
- 50. Simple Checksum ValidationSum characters and compare.