Skip to content

Commit

Permalink
docs(mobile): improve code style
Browse files Browse the repository at this point in the history
  • Loading branch information
compojoom committed Dec 24, 2024
1 parent b1f276a commit b1f6218
Showing 1 changed file with 39 additions and 10 deletions.
49 changes: 39 additions & 10 deletions apps/mobile/CONTRIBUTING.md → apps/mobile/docs/code-style.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# React Native Code Guidelines
# Code style guidelines

## Code Structure
## Code structure

### General Components
### General components

- Components that are used across multiple features should reside in the `src/components/` folder.
- Each component should have its own folder, structured as follows:
Expand All @@ -13,7 +13,8 @@
- Alert.stories.tsx
- index.tsx
```
- The main component implementation should be in a named file (e.g., `Alert.tsx`), and `index.tsx` should only be used for exporting the component.
- The main component implementation should be in a named file (e.g., `Alert.tsx`), and `index.tsx` should only be used
for exporting the component.
- **Reason**: Using `index.tsx` allows for cleaner imports, e.g.,
```
import { Alert } from 'src/components/Alert';
Expand All @@ -23,16 +24,16 @@
import { Alert } from 'src/components/Alert/Alert';
```

### Exporting Components
### Exporting components

- **Always prefer named exports over default exports.**
- Named exports make it easier to refactor and identify exports in a codebase.

### Features and Screens
### Features and screens

- Feature-specific components and screens should be implemented inside the `src/features/` folder.

#### Example: Feature File Structure
#### Example: feature file structure

For a feature called **Assets**, the file structure might look like this:

Expand All @@ -44,9 +45,10 @@ For a feature called **Assets**, the file structure might look like this:

- `index.tsx` should only export the **Assets** component/container.

#### Subcomponents for Features
#### Subcomponents for features

- If a feature depends on multiple subcomponents unique to that feature, place them in a `components` subfolder. For example:
- If a feature depends on multiple subcomponents unique to that feature, place them in a `components` subfolder. For
example:

```
// src/features/Assets/components/AssetHeader
Expand All @@ -55,7 +57,7 @@ For a feature called **Assets**, the file structure might look like this:
- index.tsx
```

### Presentation vs. Container Components
### Presentation vs. container components

- **Presentation Components**:

Expand All @@ -67,3 +69,30 @@ For a feature called **Assets**, the file structure might look like this:
- **Container Components**:
- Handle business logic (e.g., state management, API calls, etc.).
- Pass necessary data and callbacks to the corresponding Presentation component.

### Commit message guidelines

We follow the Semantic [https://www.conventionalcommits.org/en/v1.0.0/](Commit Messages convention).

#### Format

Each commit message should consist of a header, an optional body, and an optional footer. The header has a specific
format that includes a type, an optional scope, and a subject:

```
<type>(<scope>): <subject>
```

**Types**

- **feat**: A new feature
- **fix**: A bug fix
- **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature
- **perf**: A code change that improves performance
- **test**: Adding missing or correcting existing tests
- **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit

0 comments on commit b1f6218

Please sign in to comment.