High level
src
|----- assets
|----- components
|----- consumers
|----- context
|----- environments
|----- hooks
|----- layouts
|----- localization
|----- typings
|----- pages
|----- router
|----- services
|----- styles
|----- types
|----- util
|----- App.tsx
|----- index.html
|----- index.tsx
-
assetscontain images, icons, fonts and other static files... -
components- contain reusable and shared React components -
consumers- common pieces of separated, reusable pieces of code which are used for some cross-cutting, repeatable situations -
context- global contexts -
environments- configurations for different execution environments -
hooks- reusable hooks -
layouts- common layouts which are used throughout the app -
localization- translation and i18n related stuff -
typings- various TypeScript types (interfaces) used throughout the app -
pages- a collection of different application pages -
router- common pieces of logic and configurations used to configure routing throughout the app -
services- common api services used throughout the app -
styles- global styles, themes, responsiveness helpers, other utils... -
types- TypeScript configurations which enable TypeScript to recognize different file types - prone for discussion -
util- common utils -
App.tsx- main App component -
index.html- HTML file where the app is injected -
index.tsx- application entry point, the app is rendered into the HTML here -
another viable option for storing configurations, typings, constants and so on, for larger projects is within the
libfolder, like in this project structure example -
NOTE - regarding module bundlers such as Webpack - we'd like to avoid maintaining our own configuration if possible, especially for smaller projects, and use automatic builders such as Create React App or Next.js