Follow me on LinkedIn
Follow me on Github.com
Creating a well-structured file and folder architecture is crucial for maintaining, scaling, and collaborating on React projects. Here is a comprehensive guide to setting up a professional file and folder structure for your React applications, suitable for sharing with the dev community in a blog post.
Introduction
When working on React projects, having a consistent and logical file structure can make a significant difference in code readability and maintainability. This guide will cover a modular approach to organizing your files and folders, promoting best practices that can be scaled for larger projects.
Top-Level Folder Structure
A typical React project setup includes the following top-level directories and files:
my-react-app/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── hooks/
│ ├── pages/
│ ├── services/
│ ├── store/
│ ├── styles/
│ ├── utils/
│ ├── App.js
│ ├── index.js
│ └── routes.js
├── .env
├── .gitignore
├── package.json
├── README.md
└── node_modules/
Folder Descriptions
1. public/
This folder contains static assets that you want to be served directly by the server.
- index.html: The main HTML file.
- favicon.ico: The favicon for your app.
2. src/
This is where all the source code for your application lives.
a. assets/
This folder is for images, fonts, and other static assets.
src/
└── assets/
├── images/
├── fonts/
└── icons/
b. components/
Reusable UI components should be placed here. Each component gets its own folder.
src/
└── components/
├── Button/
│ ├── Button.js
│ ├── Button.test.js
│ └── Button.css
├── Header/
│ ├── Header.js
│ ├── Header.test.js
│ └── Header.css
└── ...
c. hooks/
Custom hooks are placed here.
src/
└── hooks/
├── useAuth.js
├── useFetch.js
└── ...
d. pages/
Each page or route in your application has its own folder. Pages can also contain sub-components that are specific to that page.
src/
└── pages/
├── Home/
│ ├── Home.js
│ ├── Home.css
│ └── components/
│ └── HomeFeature.js
├── About/
│ ├── About.js
│ ├── About.css
│ └── components/
│ └── Team.js
└── ...
e. services/
This folder is for API calls and other external services.
src/
└── services/
├── api.js
└── auth.js
f. store/
If you are using Redux or any state management library, put your store configuration and slices/reducers here.
src/
└── store/
├── index.js
├── userSlice.js
└── productSlice.js
g. styles/
Global CSS, SASS, or styled-components can be placed here.
src/
└── styles/
├── variables.scss
├── mixins.scss
└── global.css
h. utils/
Utility functions and helpers.
src/
└── utils/
├── formatDate.js
├── calculateDiscount.js
└── ...
3. Core Files
App.js
The root component that wraps all other components.
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import Routes from './routes';
function App() {
return (
<Router>
<Routes />
</Router>
);
}
export default App;
index.js
The entry point of the application.
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './styles/global.css';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
routes.js
Defines the routes for the application.
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import Home from './pages/Home/Home';
import About from './pages/About/About';
function Routes() {
return (
<Switch>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
</Switch>
);
}
export default Routes;
Conclusion
Organizing your React project with a clear, modular file structure can make your codebase more maintainable and scalable. This structure helps in keeping related files together, promoting reusability and separation of concerns.
Alway do this like file & folder structuring in any tech
Happy Coding!
Top comments (0)