powergamer you can have a script that adds the Module component on your object at runtime, and a box collider, for the joints you can probably guess the back edges of the box collider. Or you could skip the joints and just snap the objects on the floor without worrying about snapping to the walls.
For the json generation there are many ways to do that. if the user upload his models before he loads the application (different page basically) then you can generate the json on the server side at runtime including all the modules he uploaded.
If your user uploads his models in the same application, I would skip the json and just generate the ModuleList object and feed the application with it.