/radum

An app to help empower those who are minorities in our society

Primary LanguageJavaScript

Radum App

Descrição

O maior app de contribuição

Table of Contents

Table of contents generated with markdown-toc

Detalhes do projeto

Esse projeto foi estruturado utilizando react native como principal framework de desenvolvimento.

Modularização

A modularização de projeto nada mais é do que um padrão de software adotado para separar uma grande aplicação em pequenas aplicações conectadas através de dependências.

📈 Prós


  • Build time mais performático
  • Produtividade entre equipes de engenharia
  • Facilidade de testes
  • Reutilização de base de código
  • Eficiência

📉 Contras


  • Gerenciamento dos módulos
  • Curva de aprendizado
  • Padronização de bibliotecas core
  • Percepção

Arquitetura

Estruturado com base na arquitetura Clean e no padrão de design MVVM. Esta escolha permitiu uma maior facilidade no uso de interoperabilidade entre frameworks nativos e híbridos como também uma maior segurança nos processos de manutenção, refatoração e testabilidade.

Como a arquitetura limpa sugere, este projeto é construído em 3 pilares: As camadas de dados, domínio e apresentação.

Dados

A camada de dados foi projetada para lidar com todas as solicitações de fontes de dados (remotos ou locais). Então aqui é o local onde serão implementadas as chamadas de API, queries de GraphQl e estruturações dos modelos de dados.

Domínio

A Camada de Domínio foi projetada para gerenciar toda a lógica de negócios de um recurso específico como também servir de interface para decisão de onde deve vir os dados. É também aqui que o ResponseModel é convertido em uma Estrutura de Dados mais adequada conhecida como Entidade.

Apresentação

A camada de apresentação foi projetada para ter todos os arquivos necessários para construir a renderização das telas. É aqui que vão se encontrar os arquivos de construção de telas, estilização e criação de componentes como também recursos exclusívos de cada feature.

Instalando e rodando o projeto

Para inicializar o projeto basta ir até a raiz do mesmo e rodar comando:

yarn

Ele será responsável por baixar e instalar todas as dependências utilizadas pelo mesmo. Quando o comando for finalizado basta então rodar o comando:

 // Para rodar num emulador android
 yarn android

ou

// Para rodar num simulador ios 
yarn ios 

PS: Para rodar num simulador de iphone é necessário estar utilizando um mac.

Contribuição

Para contribuir com o projeto é necessário primeiramente fazer a criação de uma nova branch a partir da Dev.

Criando uma Feature Branch
Abrindo uma Pull request
Acompanhando o deploy da Branch

Publicação de Versões

O flashapp faz uso de um CI/CD que roda pipelines de publicação. De maneira trivial o fluxo a ser seguido é:

Leituras adicionais

Para informações mais detalhadas a respeito de alguns dos padrões e documentações a respeito do projeto, segue uma lista de acesso exclusivo para emails flash cadastrados no notion da empresa.

Modularização de Projeto Arquitetura Localização Injeção de dependência