- 💡 Motivation
- 📋 Requirements
- 🛠️ Installation and usage
- 🗂️ Component Structure (general)
- 🧑🏻💻 Contributing
The main objective of this repository is to be used as a template-like to your react projects with many technologies already setted up from scratch.
Fork this repository and start working over it...
- Language and framework:
- React (react.dev)
- TypeScript (typescriptlang.org)
- Node.js (nodejs.org)
- Styling:
- Styled components (styled-components.com)
- React styled guide (github.com/luizclr/react-styled-guide)
- Build and development:
- Webpack (webpack.js.org)
- Babel (babeljs.io)
- Docker (docker.com)
- Nginx (nginx.com)
- Linting:
- Eslint (eslint.org)
- Prettier (prettier.io)
- Testing:
- Jest (jestjs.io)
- React testing library (testing-library.com/react-testing-library)
- API consuming
- Axios (axios-http.com)
- CI/CD:
- Github Actions (github.com/features/actions)
- Netlify (netlify.com)
- Schema Validation:
- Zod (zod.dev)
- Other tools:
- Husky (typicode.github.io/husky)
- NodeJs
- yarn
- nvm
or
- docker
- docker-compose
Create a copy
.envfile from.env.exampleand populate the variables.
cp .env.example .envUsing nvm? change local node version to project's node version on .nvmrc.
nvm installInstall dependencies:
yarn installRun project on development mode:
yarn devOpen new browser window on localhost:4000.
Run unit tests:
yarn testRun linter:
yarn lintBuild for production:
yarn buildStart server with built code:
yarn startcreate a docker network:
docker network create react-basebuild image:
make buildRun project on development mode:
make upOpen new browser window on localhost:4000.
stop container:
make downRun unit tests:
make testRun linter:
make lint└─ component
├─ component.container.tsx
├─ component.schema.ts
├─ component.styles.tsx
├─ component.tsx
└─ types.ts
Follow the next steps to contribute
Name your branch with a meaningful name that represents the changes you have done.
Examples:
chore/updating-changelog
fix/user-authentication
feat/add-card
Use the format {type}({scope}): {message}.
Eg: feat(login): added remember me.