Customizing and extending n8n to create inhouse version of the framework

Hi @Atul_Lohiya, welcome to the community!

As for your questions:

Remove most, if not all, nodes provided by n8n and provide only the new custom nodes that I create.

This can be done by setting the NODES_EXCLUDE environment variable.

For e.g., I want to create a node that always connects to user selected service to do something. The service is exposed via a REST API (which is a different setup). THe users don’t know the technical API details, they just select the service. The node should then behind the scenes use http request node to do its job.

You can create and package custom nodes as described here. This custom node could then be installed on your internal instances.

Not use the default UI but customize it to hide/show panels, change styling etc

This currently requires customizing the code and there is no documented path yet I am afraid. That said, a team was working on a PoC for this last week (Jan briefly mentioned this over here), so this hopefully changes soon.

Extend the canvas where nodes can be dropped to have some custom functionality

I am not sure I fully understand this one. This will most likely involve re-writing a part of n8n’s code. Perhaps you can explain in a bit more detail what you have in mind, just to make sure I understand you correctly here?