1.0.0 • Published 3 years ago

constate-rn-firebase v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

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

  1. 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
  1. Depois do projeto criado você pode deletar o arquivo App.js da raiz, pois o arquivo index.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.

  • React Native - O React Native é um framework que permite o desenvolvimento de aplicações mobile usando JavaScript e React;
  • Redux - O Redux é um contêiner de estado previsível para aplicativos JavaScript. Ele ajuda você a escrever aplicativos que se comportam consistentemente, executados em diferentes ambientes (cliente, servidor e nativo) e são fáceis de testar;
    • Redux Saga - O redux-saga é uma biblioteca que tem como objetivo tornar os efeitos colaterais dos aplicativos mais fáceis de gerenciar, mais eficientes de executar, fáceis de testar e melhores em lidar com falhas;
  • React Navigation - O React Navigation surgiu da necessidade comunidade do React Native de uma navegação de forma fácil de se usar, e escrita toda em JavaScript;
  • React Native Gesture Handler - API declarativa que permite a manipulação de toques e gestos no React Native;
  • Axios - O Axios é um cliente HTTP baseado em Promises para Browser e NodeJS;
  • i18n - O i18n é uma biblioteca auxiliar para criação de aplicativos multi-idiomas;
  • Prop Types - Verificação de tipo em tempo de execução para propriedades (props) React e objetos semelhantes;
  • Babel - O Babel é um compilador JavaScript gratuito e de código aberto e transpiler configurável usado no desenvolvimento de aplicações JavaScript;
  • ESLint - O ESLint é uma ferramenta de lint plugável para JavaScript e JSX;
  • Prettier - O Prettier atualiza seu código automaticamente seguindo os padrões que você quiser toda vez salva o arquivo;
  • EditorConfig - O EditorConfig é um formatador de arquivos e coleções em forma de Plugin para Editores de código/texto com o objetivo de manter um padrão de código consistente entre diferentes editores, IDE's ou ambientes;
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 - Diretório contendo todos os arquivos da aplicação, é criado um diretório 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.