Project: Folder Structure Guide
When working on a React Native project, maintaining a clean and organized folder structure is crucial for scalability and collaboration. Below is a best-practice folder structure to keep your project modular, maintainable, and easy to navigate.
Project Folder Structure Breakdown:
project-root/
│
├── src/ # Source code
│ ├── assets/ # Images, fonts, icons, etc.
│ │ ├── images/ # Application images
│ │ ├── fonts/ # Custom fonts
│ │ └── icons/ # Icon assets
│ │
│ ├── components/ # Reusable UI components
│ │ ├── Button/
│ │ │ ├── Button.tsx # Button component
│ │ │ └── styles.ts # Button styles
│ │ └── Header/
│ │ ├── Header.tsx # Header component
│ │ └── styles.ts # Header styles
│ │
│ ├── screens/ # Application screens
│ │ ├── Home/
│ │ │ ├── Home.tsx # Home screen component
│ │ │ └── styles.ts # Home screen styles
│ │ └── Profile/
│ │ ├── Profile.tsx # Profile screen component
│ │ └── styles.ts # Profile screen styles
│ │
│ ├── navigation/ # App navigation setup
│ │ ├── AppNavigator.tsx # Main app navigation
│ │ └── NavigationService.ts# Navigation utility functions
│ │
│ ├── services/ # API services and business logic
│ │ ├── ApiService.ts # Handles API calls
│ │ └── AuthService.ts # Authentication-related services
│ │
│ ├── store/ # State management (e.g., Redux)
│ │ ├── actions/ # Action creators
│ │ ├── reducers/ # Reducers
│ │ └── store.ts # Store configuration
│ │
│ ├── utils/ # Utility and helper functions
│ │ ├── helpers.ts # Common helper functions
│ │ └── constants.ts # Application-wide constants
│ │
│ ├── App.tsx # Main app component (entry point)
│ ├── index.tsx # Application bootstrap file
│ └── styles.ts # Global styles shared across the app
│
├── tests/ # Test cases
│ ├── components/ # Component tests
│ ├── screens/ # Screen tests
│ └── setupTests.ts # Test configuration and setup
│
├── .eslintrc.js # ESLint configuration (code linting)
├── .prettierrc.js # Prettier configuration (code formatting)
├── babel.config.js # Babel configuration (JavaScript transpiling)
├── tsconfig.json # TypeScript configuration
├── package.json # Project dependencies and scripts
└── README.md # Project documentation
Key Best Practices:
- Modularization: Each feature or component should be encapsulated in its own directory with relevant logic (e.g.,
Button.tsx
andstyles.ts
together). - Assets Separation: Keep images, fonts, and icons organized in the
assets
folder to avoid clutter. - Component Reusability: Store reusable components in the
components
directory for better code reuse and maintainability. - Screens: Place each screen component in its own folder to separate logic, styles, and UI elements.
- Navigation: Centralize all navigation logic in the
navigation
folder for easier updates and changes. - Services: Handle business logic, such as API calls or authentication, in the
services
folder to maintain a clear separation of concerns. - State Management: Centralize your state management setup (e.g., Redux) in the
store
directory for clarity. - Utility Functions: Store helper functions and constants in
utils
to promote code reusability. - Test Organization: Keep tests separate in the
tests
folder to maintain clean project structure. - Configuration Files: Keep all configuration files (e.g., ESLint, Prettier, Babel) at the root level to keep track of project-wide settings.
By following this structure, your React Native project will be organized, scalable, and easier to maintain as it grows.