- Requisito de desenvolvimento
- Instalação de dependências
- Configurações de ambiente
- Iniciar projeto
- Arquitetura do Projeto
- Qualidade de código
- Estrutura do projeto
Requisitos obrigatórios para uso do projeto:
- Node 16.15.1 Node
- Yarn 1.23.0 Yarn
- React native 0.69.1 React Native
Pré-requisitos:
- Ter as dependências para instalação dos requisitos obrigatórios
- Abrir o diretório do projeto
Abrir o terminal do seu sistema operacional e executar o comando abaixo:
#Android:
yarn android:rebase
#Ios:
yarn ios:rebase
Pré-requisitos:
- Ter instalado as dependências do projeto
- Abrir o diretório do projeto
Editar o arquivo chamado .env
. Este arquivo deve conter as configurações das variáveis de ambiente do projeto.
As variáveis do arquivo .env
são:
#url do backend
WEATHER_BASE_URL_API=""
WEATHER_API_KEY=""
As variáveis do arquivo .env.staging
são variavéis no ambiente de homologação
As variáveis do arquivo .env.production
são variavéis no ambiente de produção
Pré-requisitos:
- Ter os executaveis para instalação dos Configurações de ambiente
- Abrir o diretório do projeto
Abrir o terminal do seu sistema operacional e executar o comando abaixo:
#Android:
yarn android
#Ios:
yarn ios
Ferramentas utilizadas para realizar padronização do código:
ESLint 7.32.0 ESLint
Usado para garantir que o código esteja no mesmo padrão entre a equipe de desenvolvimento.
Husky 8.0.1 Husky,
Lint-staged 13.0.3 Lint-staged e Commitizen 4.2.5 Commitizen
Usado para manter um gitflow em todos os commits do projeto garantindo que seja apenas realizados os commits quando passar por um lint para garantir o padrão do código e rodar os testes para conferir se o sistema está rodando perfeitamente.
Typescript 4.4.4 Typescript
Usado para garantir a tipagem do código e melhorar a manutenção do sistema com os testes estáticos.
Testing-library/react-native 10.1.1 Testing-library
React-test-renderer 18.0 React-test-renderer
Usado junto com o jest para realizar teste e garantir as entregas no sistema.
A base da arquitetura desse sistema foi tirada de duas arquiteturas, Atomic Design e MVVM, que visam facilitar os testes e reaproveitamento de código. Tendo isso em vista, essa arquitetura tem como objetivo separar a aplicacao em módulos, que por sua vez obedecem o Atomic Design tendo a hieraquia de paginas, e componentes do tipo páginas, ecossistema, organimsmo, molécula e atômico.
O projeto está estruturado em:
Pasta que tem todos os arquivos do sistema.
Guarda toda lógica que gerencia o sistema, e onde se concentra maior parte de componentes atômicos e moleculares que podem ser compartilhados nos módulos.
Guarda todos arquivos estáticos como por exemplo: imagens, icones, animações.
Componentes guardam componentes atomicos e moleculares que possuem estilização.
Guarda todos os hooks, funções que são atomicas e moleculares para serem compartilhados com os módulos do sistema.
Gerência as rotas de cada módulo e exporta para o index do projeto. Assim ajudando os desenvolvedores a mexer no json do seu módulo sem ocorrer merge durante os versionamentos, pois esse arquivo manipula rotas do módulo, e por sua vez as suas rotas internas são gerenciadas por ele mesmo de forma independente do core.
Guarda todos serviços do projeto com intuito de centralizar as regras de negócio referente ao módulo de api para conexão com o backend, sistema de notificação, validação entre outros.
Guarda todos styles e temas globais do projeto.
Guarda todos os módulos e componentes de ecosistema e páginas.
Esse padrão será ultilizado em casos onde a lógica precisa ser compartilhada em componentes do tipo organismo, ecossistema e páginas.
Onde se encontra todos os reducers do módulo
todos os componentes do tipo atômico e molecular como os providers do reducer
Guarda todos os hooks que externalizam e abstrai o acesso aos dados e funções do reducer
Guarda todos os contextos que armazena os dados e funções do reducer
É onde fica as actions que controlam o estado e as regras de negocio do reducer bem como a tipagem das entidades