This project was bootstrapped with Create React App.
Install mui
- npm install @mui/icons-material
- npm install @fontsource/roboto
Redux toolkit
- npm install @reduxjs/toolkit
- npm install --save @types/react-redux
React router dom
- npm install react-router-dom@6
Axios
- npm install axios
Lodash
- npm i --save lodash
- npm i --save-dev @types/lodash
Prettier
- npm i prettier
Code Linter
- npm install eslint --save-dev
- npx eslint --init and write y
- npm i -D eslint-plugin-import @typescript-eslint/parser eslint-import-resolver-typescript
- npm i -D prettier eslint-config-prettier eslint-plugin-prettier eslint-plugin-react-hooks
Husky
- npm install husky --save-dev
- npm run husky-install after setup this line en package.json as "husky-install": "husky install"
- npx husky add .husky/pre-commit "npm run test" to create hook
Notistack
- npm i notistack
For unit tests Mockery
- npm i ts-mockery
https://google.github.io/styleguide/jsguide.html#features-objects-enums
-Components Directory components/Navbar/Navbar.tsx components/Navbar/Navbar.test.tsx
- Components State components/Navbar/hooks/use-navbar.tsx components/Navbar/hooks/use-navbar.test.tsx
- Other files src/shared/enums/routes-enum.ts src/shared/constants/app-routes.ts src/shared/interfaces/global-interface.ts
for folders from entire project use only kebab-case for folders in components use UpperCase
constans from component should go in route src/shared/constants/components/test.ts
all other constants should go in route src/shared/constants/api-routes.ts
- Global constants /document constants const API_PATH= "some/path" export const PATHS ={ One="one" Two="two" Three= (hi:string)=>hi }
- in function constants const merchantID="hola" // o es constant merchant_id="hola" const merchantID=getMerchantID()
Component Enums to use like labels or other enum values from component should go in route like src/shared/enums/header-enum.ts
other enums should be like src/shared/enums/countries-enum.ts or just countries
enum convention
export enum Countries { Brazil = "Brazil", Chile ="Chile", UnitedStates = "Estados unidos" }
export enum LogLevel { ERROR, WARN, INFO, DEBUG, }
function getMerchantID(){} const getMerchanID=()=>{}
Interfaces for components from Props and hooks should go in route src/shared/interfaces/components/tab-panel.interface.ts
Other interfaces should go in src/shared/interfaces/test-test.interface.ts