-
Notifications
You must be signed in to change notification settings - Fork 2
03_Architecture
Sonny edited this page Jul 30, 2023
·
4 revisions
├── @types
├── apis
│ └── domain name (ex. mypage)
│ ├── types.ts
│ ├── api.ts
│ └── query.ts
├── pages
│ ├── HomePage.tsx
│ ├── NotFoundPage.tsx
│ └── PostDetailPage.tsx
├── components
│ └── common
│ │ └── component name (ex. Button)
│ │ │ ├── styled.ts
│ │ │ ├── stories.tsx
│ │ │ ├── types.ts
│ │ │ └── index.tsx
│ └── domain name (ex. mypage)
│ └── component name
│ ├── styled.ts
│ ├── types.ts
│ └── index.ts
├── constants
└── types
-
@types
: 패키지 및 전역에서 사용되는 declare 타입- declare npm package types
- declare global types
-
apis
: api 및 query dto(서버 타입), query 훅, fetch 함수- types.ts
- api 및 query 훅 dto
- api.ts
- api fetch 함수
- query.ts
- jotai-tanstack-query
- types.ts
-
constants
: 타입을 제외한 정적인 상수 (types 디렉토리와 구조 1:1 매칭)- app.ts
- 상품 상태
- 거래 방식
- ...
- app.ts
-
types
: constants를 기반으로 한 정적인 클라이언트 타입 (constants 디렉토리와 구조 1:1 매칭)- app.ts
- components
- storybook v6
- utils/hooks
- React Testing Library
- Jest
- pages
- E2E
- 디렉토리명은
Camel Case
로 생성한다.
구분 | 컨벤션 | 예시 |
---|---|---|
Components | camelCase | - components |
Storybook | camelCase | - components |
- 파일명은
Pascal Case
로 생성한다. - Page외 Component는
디렉토리 & index.tsx
로 생성한다. (이 경우, 디렉토리가 파일 생성 규칙에 따름) - 컴포넌트와 스토리 파일은 반드시 1:1 구조를 가져야한다.
구분 | 컨벤션 | 예시 |
---|---|---|
Components | PascalCase | - Button/index.tsx |
Stories | PascalCase | - Button/Button.stories.tsx |
-
e2e
: .spec.ts -
unit
: .test.ts