The whole codebase should be written in similar style and using the same components/library.
Styled Component
Styled Component should be used mostly for base component like button, generic layout reused outside of one specific pages.
Grid
Material UI Grid should be used for most basic layout. Styled component should be used if the target design is not possible using Grid or if the overhead is much lower (in term of code complexity/readability & verbosity)
MaterialUI / MUI
Material UI should be used only for layout parts & low design / generic element like checkboxes. Button for exemple is specific for OpenFeedback thus MUI buttons shouldn't be used. Plus it's design are different for admin & feedback pages.
File architecture
Features should be regrouped together inside the same folder. So reducers, selectors, components used for a given feature should live inside the same folder.
Common action or selector from the admin and the feedback pages should live inside the src/core
Common components for admin or feedback should live inside the components
folder like src/admin/components/OFButton.js
.
Because the design of the admin and the feedback are different, they should mostly don't share components.
About this
This is just a dump of my mind regarding the organisation of the project. Everyone can contribute to those guidelines to improve them. They may probably also evolve with the time.