That’s the ultimate developer’s question
And there are so many answers to each and every part of it. I think it’s very much developer dependent, but i will be happy to express my opinion on this one
Unless you are embedding babylon in a web application (for example - showing a 3D model of a product in a weebshop) I don’t see a reason to use an external framework. If you do need it, choose what works best for you! Babylon has a wonderful react binding (built by @brianzinn), but we saw babylon projects using vue and angular as well!
I have created a getting-started project - RaananW/babylonjs-webpack-es6: Babylon.js basic scene with typescript, webpack, es6 modules, editorconfig, eslint, hot loading and more. (github.com) , but it is more to show how to use different elements of the framework with es modules, and doesn’t concentrate about structure. As @sebavan mentioned we actually discussed this topic internally, and I think we will soon produce something to show what we think is a nice project structure. This does not mean that it is the only structure, or fits every project.
Me personally - i like using stateless modules, and like to join those functions to one module if they depend on a certain object that can be considered global. The idea is to prevent unneeded imports inside the project as much as possible. So it is less lights, cameras and meshes, and more - the things that relate to this specific topic should be in this directory. It’s hard to explain without showing some code. And of course since babylon is object oriented I don’t avoid extending certain classes if needed. The best example is a shader material - I always like extending the shader material rather than create an instance of it. It keeps everything related to this material inside this single class and keeps the project’s structure cleaner. IMHO