Some things n8n just does not do out of the box. When you hit that wall often enough, you stop writing one-off Code nodes and build a real, reusable one. This video shows how, end to end, and ships it to production with Kamal.
What the video covers
I build a Random Number Generator node from scratch, then deploy it:
- Scaffolding a custom node as a TypeScript class (
INodeType) - Defining operations and parameters that show up in the n8n UI
- Local development with Docker and hot reload
- Adding a custom credential type
- Deploying the custom n8n image to production with Kamal, zero-downtime
When to build a custom node
You do not always need one. A Code node is fine for one-off logic.
Build a real node when you want reusable, shareable functionality across many workflows, a proper UI with typed parameters, versioning, and team-wide consistency. The moment you are pasting the same Code node into a third workflow, it is time.
Get the code
The starter repo has everything: the Docker setup, TypeScript config, build scripts, and the example node.
Grab it on GitHub: github.com/letItCurl/n8n-custom-node. Clone it, swap in your own node, and deploy to your own infrastructure.
Want it built for you?
If you need a custom n8n node, or a deployment that does not fall over, book a free Gap Assessment and I will build and ship it for you.