Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 3.99 KB

README.md

File metadata and controls

75 lines (48 loc) · 3.99 KB

Bills App

O aplicativo é um assistente pessoal onde o usuário pode colocar suas despesas e receita do mês para acompanhamento.

Ao abrir o aplicativo o usuário pode inserir uma nova despesa ou entrada, verificar as existentes, editá-las, exclui-las e verificar o balanço mensal que dispõe de um gráfico que pode ser atualizado apenas puxando a tela para baixo (Swipe Layout).

A tela de Despesas da aplicação disponibiliza uma lista com todas as despesas existentes com seu valor, descrição, data, se possui anexo ou não, e o status (pago ou não) simbolizado por um switch).

A tela de Receita da aplicação disponibiliza uma lista com todas as entradas existentes com seu valor, descrição, data, se possui anexo ou não, e o status (recebido ou não) simbolizado por um switch).

As duas telas acima podem ser filtradas pelo status (pago ou não / recebido ou não) por meio do menu superior.

Para realizar deslogar da aplicação, basta selecionar os três pontinhos no menu superior e clicar em "Sair".

Para inserir algum item, basta clicar no botão com ícone "+" e preencher os dados. É possível também anexar uma foto de comprovante ao item.

Para editar algum item, basta fazer um toque longo no item, e a tela de edição será aberta.

Para excluir algum item, basta arrastá-lo para a esquerda ou direita.

Ao clicar em um item que possui anexo, ele será aberto na tela em uma pequena janela.

Algumas screenshots

expense income edit_insert details_other_types

Ambiente de instalação

  • 1: Instale o Android Studio;
  • 2: Abra a aplicação;
  • 3: Sincronize o projeto;
  • 4: Rode o aplicativo em um simulador ou em um device externo.
  • 5: Crie uma conta e efetue o login.

Automação

Ktlint - a task valida se o padrão do código está de acordo com o lint. O ./gradlew ktlint realiza a verificação de todos os componentes do projeto, e retorna o resultado.

KtlintFormat - esta tarefa modifica o código para que ele siga o padrão do lint. O ./gradlew ktlintFormat roda uma rotina que formata o código de acordo com o máximo que o lint pode fazer de modificações para que o código esteja no seu padrão.

Arquitetura

A aplicação busca o desacoplamento e a escalabilidade em sua arquitetura, fazendo uso do Clean Architecture e do MVVM com Modularização.

Principais dependências

Coroutines - lidando com threads e assincronismo

Abordagem sugerida pela Google e com um bom funcionamento com o Live Data, faz bom uso das threads e da Thread Pool do dispositivo, melhorando a performance da aplicação.

Material Design - layout intuitivo e clean

O aplicativo segue os padrões do MaterialDesign para uma melhor experiência do usuário em sua utilização.

Koin injeção de dependência

Escolhida por sua simples implementação comparada ao Dagger (E recentemente com o Koin 2.0, o desempenho não é muito diferente).

Firebase Storage

Com o Cloud Storage, o upload dos arquivos é feito com segurança e facilidade diretamente de dispositivos móveis e navegadores da Web, mesmo em redes intermitentes.

Firestore

Banco de dados de nuvem NoSQL flexível e escalonável para armazenar e sincronizar dados no desenvolvimento do cliente e do servidor.

Firestore UI

Escolhida por sua simples implementação comparada ao Dagger (E recentemente com o Koin 2.0, o desempenho não é muito diferente).

Firebase Auth

Para manter a segurança do aplicativo, foi utilizada a autenticação por meio do Firebase Auth, que foi implementado utilizando a autenticação por e-mail, ou pela Google.

O que eu gostaria de ter feito

  • criado testes unitários;

  • criado testes de ui;

  • CI