While building out the MERN stack applications, we followed a common folder structure across each application, which divided and grouped the code based on relevance and common functionality. The idea behind creating these smaller and distinct sections in the code is to make sure each section addresses a separate concern, so individual sections can be reused, as well as developed and updated independently.
More specifically, in the application folder structure, we kept the client-side and server-side code separate with further subdivisions within these two sections. This gave us some freedom to design and build the frontend and backend of the application independently:
| mern_application/ | -- client/ | -- server/
In the client
and server
sections, we divided the code further into subfolders that mapped to unique functionalities, such as models, controllers, and routes in the server to a specific feature, such...