6.4 KiB
6.4 KiB
Project Folder Structure Maintenance
This document outlines the project’s folder structure, describing the purpose of each folder and file. It also includes guidelines for development, collaboration, and scalability.
Folder Hierarchy
📁 .github
📁 src
├── 📁 assets
├── 📁 components
├── 📁 functions
├── 📁 hooks
├── 📁 modules
│ ├── 📁 builder
│ ├── 📁 simulation
│ └── 📁 visualization
├── 📁 pages
├── 📁 services
├── 📁 store
├── 📁 styles
├── 📁 tests
├── 📁 types
├── 📁 utils
├── 📁 temp
├── App.css
├── App.tsx
├── index.css
├── main.tsx
├── Dockerfile
└── nginx.conf
Folder and File Descriptions
📁 src
The root directory for all application source code.
📁 assets
- Purpose: Static assets like images, fonts, and icons.
- Examples:
- Subfolders for
images
,icons
, andfonts
. - Use descriptive file names (e.g.,
logo.svg
,Roboto-Regular.ttf
).
- Subfolders for
📁 components
- Purpose: Reusable React components forming the building blocks of the UI.
- Examples:
- Buttons, modals, input fields, and headers.
- Organize larger components into folders (e.g.,
Button/
).
📁 functions
- Purpose: Pure functions and reusable logic.
- Examples:
formatDate.ts
: Format dates into readable strings.calculateTotal.ts
: Logic for cart total calculation.
📁 hooks
- Purpose: Custom React hooks encapsulating reusable logic.
- Examples:
useAuth.ts
: Manages authentication logic.useFetch.ts
: Fetches data from APIs.
📁 modules
- Purpose: Feature-specific code organized into subfolders.
- Subfolders:
builder
: For UI components and logic related to building features.simulation
: Code for running simulations.visualization
: Visualization components like charts and graphs.
📁 pages
- Purpose: Pages that represent routes in the application.
- Examples:
HomePage.tsx
: Home route.DashboardPage.tsx
: Dashboard route.
📁 services
- Purpose: External API interactions and third-party service logic.
- Examples:
apiClient.ts
: Wrapper for HTTP requests.authService.ts
: Authentication services.
📁 store
- Purpose: State management logic using tools like Redux or Context API.
- Examples:
authSlice.ts
: Authentication-related state management.cartSlice.ts
: Shopping cart state management.
📁 styles
- Purpose: Global and modular styles.
- Examples:
global.css
: Global styles.theme.scss
: Theme variables.
📁 tests
- Purpose: Test files for unit, integration, and E2E testing.
- Examples:
Button.test.tsx
: Tests for theButton
component.mockData.ts
: Mock API responses.
📁 types
- Purpose: Shared TypeScript type definitions and interfaces.
- Examples:
User.ts
: User-related type definitions.ApiResponse.ts
: API response types.
📁 utils
- Purpose: General-purpose utility functions and constants.
- Examples:
debounce.ts
: Debounce function.constants.ts
: Shared constants.
📁 temp
- Purpose: A temporary directory for experimental or work-in-progress code.
- Guidelines:
- This folder is included in
.gitignore
to prevent its contents from affecting the main project. - Move any experimental work here to isolate it from production-ready code.
- This folder is included in
Root-Level Files
App.tsx
: Root React component.main.tsx
: Entry point for the app.Dockerfile
: Docker configuration for containerizing the application.nginx.conf
: Configuration for the Nginx server.
Development Guidelines
Environment Management
.env.local
: Use this file for testing and development-specific variables..env
: Should only contain variables required for deployed services (e.g., API base URLs).
Collaboration Best Practices
-
Use the
temp
Folder for Experiments:
Any experimental work should be isolated in thetemp
folder. Avoid committing temporary code to the main repository. -
Documentation:
- Read the shared documentation in the
docify
and.github
folders before starting work. - Follow any guidelines or standards outlined in these documents.
- Read the shared documentation in the
-
Branching Rules:
- Do not merge other branches into your branch without proper code review or necessity.
- Use meaningful branch names (e.g.,
feature/auth-module
,fix/header-bug
).
-
Code Reviews:
- Ensure all code undergoes peer review before merging.
- Use PR templates provided in the
.github
folder to document changes.
Additional Instructions for Large-Scale Projects
-
Folder Depth:
- Avoid excessive nesting of folders to maintain simplicity.
- Refactor large folders into modules or domains as the project scales.
-
Dependency Management:
- Regularly review and update dependencies.
- Remove unused or deprecated libraries to reduce technical debt.
-
Automate Workflows:
- Use CI/CD pipelines to automate testing, building, and deployment processes.
- Integrate tools like Prettier, ESLint, and Husky to enforce code quality.
-
Versioning and Change Logs:
- Maintain a changelog to track major updates.
- Use semantic versioning (
x.y.z
) for releases.
-
Performance Monitoring:
- Regularly monitor and optimize app performance.
- Use tools like Lighthouse, React DevTools, and browser profilers.
-
Error Handling:
- Centralize error handling using utilities or middleware.
- Log errors in both the frontend and backend for debugging.
-
Documentation:
- Continuously update this document to reflect structural or procedural changes.
- Ensure all team members are familiar with the documentation.