Skip to content

This project utilizes Kotlin, DataBinding, Clean Architecture, MVVM, Koin, LiveData, FirebaseAuth, Firestore, Firestore UI, Firebase Cloud Storage, Glide, RecyclerView, among others.

Notifications You must be signed in to change notification settings

jsouza678/BillsApp

Repository files navigation

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

About

This project utilizes Kotlin, DataBinding, Clean Architecture, MVVM, Koin, LiveData, FirebaseAuth, Firestore, Firestore UI, Firebase Cloud Storage, Glide, RecyclerView, among others.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages