Sobre o projeto
Este modelo foi pensado para muitos desenvolvedores que desejam eficiência e conforto ao iniciar um novo projeto.
Nós da Constate buscamos cada vez mais eficiência na hora de programar, e com isso em mente juntamos várias tecnologias úteis para você iniciar seu projeto avançado da forma mais rápida possível!
Começando
Para conseguir utilizar o template, seja através do React Native CLI ou com uma cópia local dos arquivos, siga os passos abaixo.
Pré-requisitos
Antes de seguirmos para as configurações e uso do template, é ideal que você tenha o ambiente configurado para criar e testar aplicativos em React Native, para isso você pode seguir o guia do link abaixo:
Ambiente React Native (Android/iOS)
Instalação
- Para instalar e utilizar esse template o processo é bem simples, basta criar um projeto novo utilizando o comando:
npx react-native init [app_name] --template constate-rn-firebase
- Depois do projeto criado você pode deletar o arquivo
App.js
da raiz, pois o arquivoindex.js
agora aponta para a pasta src.
Com isso o projeto será criado com todas as dependências do template devidamente instaladas e linkadas, tal como os arquivos de configuração que são copiados para o projeto.
bash
YourApp
├── src/
│ ├── @types/
│ │ └── env.d.ts
│ ├── assets/
│ │ ├── fonts/
│ │ │ ├── Product Sans Bold Italic.ttf
│ │ │ ├── Product Sans Bold.ttf
│ │ │ ├── Product Sans Italic.ttf
│ │ │ └── Product Sans Regular.ttf
│ │ ├── img/
│ │ │ ├── .gitkeep
│ │ │ ├── axios.png
│ │ │ ├── constate.png
│ │ │ ├── i18n.png
│ │ │ ├── navigation.png
│ │ │ ├── redux-sagas.png
│ │ │ ├── redux.png
│ │ │ └── typescript.png
│ │ └── svg/
│ │ └── .gitkeep
│ ├── config/
│ │ └── i18n.tsx
│ ├── fonts/
│ │ ├── en-us.json
│ │ ├── es-es.json
│ │ └── pt-br.json
│ ├── pages/
│ │ └── Main/
│ │ └── index.js
│ ├── routes/
│ │ ├── index.tsx
│ │ └── stack.tsx
│ ├── services/
│ │ └── api.js
│ ├── store/
│ │ ├── ducks/
│ │ │ ├── technologies/
│ │ │ │ └── index.tsx
│ │ │ └── user/
│ │ │ └── rootReducer.tsx
│ │ │ └── rootSaga.tsx
│ │ └── index.js
│ ├── theme/
│ │ ├── index.ts
│ │ └── light.ts
│ ├── utils/
│ │ ├── formatters.ts
│ │ └── validators.ts
│ │ └── types.ts
│ ├── index.js
│ └── routes.js
├── .buckconfig
├── .editorconfig
├── .env
├── .eslintrc.js
├── .flowconfig
├── .gitattributes
├── .gitignore
├── .prettierrc.js
├── .watchmanconfig
├── app.json
├── babel.config.js
├── index.js
├── metro.config.js
├── package.json
├── react-native-config.js
└── tsconfig.json
src
para que o código da aplicação possa ser isolado em um diretório e facilmente portado para outros projetos, se necessário;
- config - Diretório para guardar os arquivos de configuração da aplicação, por exemplo, a configuração de uso do i18n;
- i18n.tsx - Arquivo contendo a configuração do i18n, com os Plugins i18next
, para ser usado na aplicação;
- assets - Diretório para armazenar arquivos de mídia em geral que possam ser utilizadas na aplicação;
- pages - Diretório onde ficam as páginas (telas) da aplicação, como forma de padronização e boas práticas toda página fica dentro de um diretório com seu nome;
- Main - Diretório exemplo de uma página cujo nome é Main, por padrão foi adotado usar sempre como nome do diretório o nome da página em camelCase, dentro desse diretório é necessária a criação ao menos do arquivo index.js
;
- index.ts - Arquivo com toda a lógica da página, com os componentes visuais a serem renderizados e também o código para conectar o componente ao Redux para acessar o State global e as Actions criadas nos Ducks;
- services - Diretório onde serão criados os arquivos relacionados a serviços utilizados na aplicação, por exemplo, requisições HTTP, autenticação com Firebase ou qualquer outro serviço que for utilizado;
- api.ts - Arquivo com a configuração da biblioteca Axios para envio de requisições HTTP, o endereço que vem configurado por padrão é para a API do Github;
- utils - Diretório onde serão criados os métodos que deixam o desenvolvimento mais prático e menos repetitivo;
- formatters.ts - Arquivo com vários métodos que formatam as string para que sejam melhor interpretadas pelos usuários;
- uuidValidator.ts - Arquivo com um método capaz de validar um uuid;
- hooks - Diretório onde serão criados os hooks personalizados do projeto;
- useInput.ts - Método que abrevia a forma que os inputs agregam valor as variáveis;
- lang - Diretório onde serão criados os arquivos de linguagem;
- themes - Diretório onde serão criados os arquivos de temas para a aplicação;
- store - Diretório onde será criada toda a estrutura do Redux para a aplicação, como os Ducks (Reducers + Action Types + Action Creators), os Sagas e um arquivo para centralizar toda essa configuração e disponibilizar para o restante da aplicação;
- ducks - Diretório destinado a centralizar os Ducks da aplicação para padronização na estrutura relacionada ao Redux;
- index.ts - Arquivo responsável por importar cada Duck criado e combiná-los em um só para serem usados no Redux através da função combineReducers()
;
- sagas - Diretório destinado a centralizar os Sagas da aplicação para padronização na estrutura relacionada ao Redux;
- index.ts - Arquivo responsável por relacionar as Actions disparadas pela aplicação às funções do Saga, que são Funções Generator, nele é definido os Action Types a serem "escutados" e qual função executar quando um Action Creator for executado;
- index.ts - Arquivo responsável por executar a configuração para o funcinamento do Redux + Redux Saga, dentre suas funções estão: criar um Middleware para monitorar as Actions disparadas na aplicação, aplicar o middleware criado juntamente com um Enhancer que monitora o fluxo de uma função do Saga, criar o store global da aplicação combinando os reducers existentes e exportar o state criado;
- index.tsx - Arquivo responsável por centralizar o código do diretório src
, nele é inserido o HOC Provider do react-redux
que é o responsável por disponilizar o state global para a aplicação, e dentro do Provider são chamadas as rotas tal como qualquer outra configuração que precise ser executada na inicialização da aplicação, ele é como um Entry Point do diretório src
;
- routes - Diretório onde fica os arquivos com as configurações de navegação da aplicação, nele são criados os Navigators disponibilizados na biblioteca React Navigation;
- .editorconfig - Arquivo destinado à configuração do plugin Editor Config, que padroniza algumas configurações para o editor em diferentes ambientes;
- .eslintrc.json - Arquivo de configuração do ESLint, é nele que são inseridas as regras e configurações de Linting do projeto, tal como a configuração do Resolver para o Babel Plugin Root Import e configuração da variável global __DEV__
;
- babel.config.js - Arquivo de configuração do Babel, é nele que é configurado o Babel Plugin Root Import para aceitar imports absolutos na aplicação usando o diretório src
como raiz;
- index.js - Arquivo raiz da aplicação, também chamado de Entry Point, é o primeiro arquivo chamado no momento do build e execução da aplicação, nele é chamado o arquivo src/index.js
que por sua vez chama as rotas da aplicação;
- tsconfig.json - Arquivo de configuração do TypeScript no Editor, ele é o responsável por ativar o Auto Complete de códigos TypeScript na aplicação;
- package.json - Diferente dos projetos comuns, esse arquivo tem as configurações necessárias para a publicação do Template no NPM, para saber mais sobre isso veja a seção abaixo.
Licença
Distribuído sob a licença MIT. Veja LICENSE
para mais informações.