Architecture, flow, development, deployment

I'm a professional programmer but new to Hubitat. Can someone point me to documentation regarding the architecture of Hubitat apps and drivers? Coming to the community site I can see the documentation for all of the API methods. But I don't see any basic developer explanation as to how it all fits together.

What are the entry/exit points for apps/drivers?
What events are generated and how are they triggered?
How does one generate/intercept/consume events in the system?
What are the options for testing/debugging?
What are the best practices/gotchas?

Whenever I search Google for information, I am lead back to

Any info would be appreciated.

Hubitat is very similar to Smartthings so have a read of API Documentation — SmartThings Classic Developer Documentation