---
# System prepended metadata

title: OniMine

---

# OniMine

Esse documento sevirá como guia para melhorias/correções e novas implementações do aplicativo `OniMine`.

# 1. Ajustes no layout

## 1.1 Substituição e adição de Icones

- [ ] Corrigir icones do aplicativo que estão com qualidade baixa. 
- [ ] Inserir icones no menu lateral como na imagem abaixo.
![](https://i.imgur.com/EYQrsiH.png)

Ja foi disponibilizado pelo designer os icones do app em formato `svg` que garante alta qualidade de imagem.

## 1.2 Substituição dos Botões e correções de cores

Alguns dos botões do app são imagens, o que não garante qualidade de imagem e dificulta a edição.

Exemplo de botões que estão como imagens:

![](https://i.imgur.com/AcdCb3y.jpg)
![](https://i.imgur.com/wVuSisE.jpg)

Solução: 
- [ ] Trocar todos os botões por emelentos nativos e utilizar `LinearGradient` para o efeito de gradiente.


## 1.3 Menu Pop-up

Alterações necessária no menu pop-up. (Descrito na legenda abaixo da imagem)

![](https://i.imgur.com/YUWr10I.jpg)

Em Vermelho: 
- Área clicável do botão está limitada à parte mais "cinza". Se o usuário clicar fora do limite a ação não é executada.

Em Verde: 
 - Os botões estão sobrepondo o botão `Nova Página` e parte do menu inferior.

Geral: 
- Os icones estão com qualidade baixa.




## 1.3 Responsividade

- [ ] Analisar telas/modals/botões/icones/imagens que não estão devidamente posicionadas ou dimencionadas.


# 2. Organização do código

## 2.1 Requisições para API
Todos os links para API estão declarados explicitamente dentro do codigo de cada componente, o que dificulta a manutenção do código. (Exemplo na imagem abaixo) 
![](https://i.imgur.com/ImUXKvU.png)

- [ ] Alterar todos os link para utilizar uma variável global.

## 2.2 In-line Style
Todos os componentes são estilizados explicitamente na declaração do componente. Além de ser utilizado o componente nativo que possui nomeclatura genérica.
Isso dificulta a legibilidade e a manutenibilidade do código, tendo em vista que todos os componentes possuem o mesmo nome.

Exemplo:

O seguinte componente se trata do titulo da página de `Atividades`.

![](https://i.imgur.com/w8oCaZR.png)

Todos os componentes de `texto` são componentes `<Text>` nativos, fica dificil visualizar qual componente é resposável por cada texto.

Solução/Sugestão:

Utilizar a biblioteca `styled-component` que facilita a estilização dos componentes nativos em um arquivo separado do código (style.js) e possibilita a renomeclatura dos componentes, assim deixando mais explicito a responsabilidade do componente.


Exemplo:

O componente `<Text></Text>` responsável pelo título da página seria reescrito como `<Title></Title>`.

E a estilização que antes era feita como mostra a imagem imediatamente anterior seria escrita em um arquivo separado desta forma:

![](https://i.imgur.com/JHEJv2o.png)

E no componente ficaria escrito da seguinte forma:

![](https://i.imgur.com/gtG87Iz.png)

Perceba a diferença na legibilidade desse código com o da primeira imagem do exemplo.

> Como todo o código do aplicativo está escrito desta forma e levaria muito tempo para mudar todo o projeto, essa abordagem será implementada aos poucos de acordo com a necessidade de alteração das funcionalidades.




# 3. Offline-fist (assíncrono)


## Redux

### O que é Redux?
> Redux é um container de estado previsível para aplicações JavaScript.
> 
> Ele ajuda a escrever aplicações que se comportam de maneira consistente, rodando em diferentes ambientes e fáceis de testar.
> Fonte: https://rafaelfragoso.com/redux-thunk-vs-redux-saga-what-to-choose-when-starting-a-new-reactjs-project/

O redux ja é utilizado no projeto, so necessita de uma pequena organização.

## Redux-Saga

O redux-saga é um middleware desenvolvido para tratar ações assíncronas.

Atualmente no projeto está implementado o `redux-thunk` que faz praticamente o mesmo trabalho do redux-saga, porém o redux-saga é mais robusto e melhor escalável.

Além disso é a biblioteca que possuo mais familiaridade.

> Se o seu aplicativo já foi projetado para escala média ou grande, ou se você tem planos ambiciosos para escalá-lo, o saga é a escolha certa.
> Fonte: https://rafaelfragoso.com/redux-thunk-vs-redux-saga-what-to-choose-when-starting-a-new-reactjs-project/

Será necessário refazer o código implementado com `redux-thunk`.

## Redux-Persist

Biblioteca utilizada para facilitar o armazenamento dos dados localmente no dispositivo, essa é uma das ferramentas cruciais que irá possibilitar a utilização das funcionalidades Offline.

## Checklist de atividades


- [ ] Reorganizar todo o codigo do redux
- [ ] Substituir redux-thunk por redux-saga
- [ ] Implementar redux-persist
- [ ] Definir funcionalidades que poderão ser utilizadas Offline.
- [ ] Averiguar se é necessário alguma alteração no back-end. (Para cada funcionalidade).

