Skip to content

Repository files navigation

FinancApp 💰

Aplicativo Android de controle financeiro pessoal offline, desenvolvido com Kotlin, Jetpack Compose, MVVM e Clean Architecture.

KotlinJetpack ComposeMaterial 3

📋 Sobre o projeto

O FinancApp é um aplicativo de controle financeiro pessoal desenvolvido como parte de um desafio técnico proposto pela Nova Era Tech.

O aplicativo permite registrar receitas e despesas, acompanhar o saldo disponível e visualizar relatórios financeiros organizados por categoria. Todas as informações são armazenadas localmente, permitindo que as principais funcionalidades sejam utilizadas sem conexão com a internet.

O projeto foi construído com foco em organização de código, separação de responsabilidades, escalabilidade e gerenciamento reativo do estado da interface.


📸 Demonstração

Splash ScreenDashboardLista de transaçõesNova transação
Splash ScreenDashboardLista de transaçõesNova transação

✨ Funcionalidades

  • Fluxo de boas-vindas: Splash Screen animada com identidade visual própria.
  • Dashboard reativo: Exibição do saldo total, das receitas e das despesas, com atualização automática dos valores.
  • Gerenciamento de transações: Cadastro, consulta, edição e exclusão de receitas e despesas.
  • Filtros por tipo: Visualização de todas as transações, somente receitas ou somente despesas.
  • Busca em tempo real: Pesquisa de transações por descrição.
  • Relatórios por categoria: Agrupamento de receitas e despesas para facilitar a análise financeira.
  • Persistência offline: Armazenamento local das informações com Room Database.
  • Exportação em JSON: Exportação do histórico de transações para compartilhamento.
  • Identidade visual personalizada: Tema próprio, Material Design 3 e ícone adaptativo.

🏗️ Arquitetura

O projeto utiliza o padrão de apresentação MVVM — Model-View-ViewModel, combinado com princípios da Clean Architecture.

A aplicação está organizada em camadas com responsabilidades bem definidas:

Domain Layer

Contém os modelos e regras de negócio da aplicação, como:

  • Conta
  • Categoria
  • Transacao

Essa camada permanece independente dos detalhes de interface e persistência.

Data Layer

Responsável pelo acesso e armazenamento dos dados, incluindo:

  • Room Database;
  • entidades do banco de dados;
  • DAOs;
  • implementações dos repositórios;
  • conversão entre entidades e modelos de domínio por meio de Mappers.

UI Layer

Desenvolvida com Jetpack Compose, contém:

  • telas;
  • componentes reutilizáveis;
  • ViewModels;
  • estados da interface;
  • navegação entre as funcionalidades.

Os dados da interface são observados por meio de StateFlow, permitindo atualizações reativas e previsíveis.


🛠️ Tecnologias utilizadas

TecnologiaAplicação no projeto
Kotlin 2.1.0Linguagem principal utilizada no desenvolvimento do aplicativo.
Jetpack Compose — BOM 2024.12.01Construção declarativa das telas e componentes da interface.
Material Design 3Componentes visuais, tema e padrões de interface.
Room Database 2.7.0-alpha11Persistência local de contas, categorias e transações.
Navigation Compose 2.8.5Gerenciamento das rotas e da navegação entre telas.
Kotlin Coroutines e FlowExecução assíncrona e observação reativa dos dados.
StateFlowRepresentação e atualização dos estados da interface.
Kotlinx Serialization 1.7.3Conversão dos dados para o formato JSON durante a exportação.
KSP 2.1.0-1.0.29Processamento das anotações utilizadas pelo Room.
Gradle 9.3.1Automação de build e gerenciamento do projeto.

🧠 Conceitos aplicados

  • MVVM;
  • Clean Architecture;
  • Repository Pattern;
  • separação de responsabilidades;
  • gerenciamento reativo de estado;
  • persistência local;
  • programação assíncrona;
  • mapeamento entre entidades e modelos de domínio;
  • injeção manual de dependências;
  • Single Source of Truth;
  • TypeConverters;
  • migrações de banco de dados;
  • componentes reutilizáveis com Jetpack Compose;
  • princípios de Clean Code e SOLID.

🚧 Desafios e aprendizados

Durante o desenvolvimento do FinancApp, alguns dos principais desafios foram:

  • Modelar os dados financeiros: estruturar contas, categorias e transações de maneira que as entidades do banco de dados não ficassem diretamente acopladas aos modelos de domínio.
  • Manter o dashboard sincronizado: garantir que saldo, receitas, despesas e relatórios fossem atualizados automaticamente após cada alteração realizada pelo usuário.
  • Gerenciar estados da interface: utilizar StateFlow para representar os dados e manter a interface consistente durante as operações.
  • Implementar filtros e busca reativos: combinar o termo pesquisado e o tipo de transação selecionado sem duplicar regras de negócio.
  • Evoluir o banco de dados: aplicar migrações para preservar os dados existentes após alterações no esquema, como a inclusão de novos campos.
  • Exportar informações em JSON: transformar os modelos da aplicação em dados serializáveis e preparar o conteúdo para compartilhamento.
  • Organizar as dependências: utilizar uma implementação manual de injeção de dependências, mantendo o controle sobre a criação do banco de dados e dos repositórios.

O projeto permitiu aprofundar conhecimentos em arquitetura Android, persistência local, fluxo reativo de dados, gerenciamento de estado e construção de interfaces modernas com Jetpack Compose.


🚀 Como executar o projeto

Pré-requisitos

  • Android Studio compatível com o Android Gradle Plugin utilizado pelo projeto;
  • Android SDK instalado;
  • JDK configurado no Android Studio;
  • emulador Android ou dispositivo físico;
  • conexão com a internet para baixar as dependências do Gradle.

O aplicativo possui suporte mínimo ao Android 7.0 — API 24.

Passo a passo

  1. Clone o repositório:
git clone https://github.com/dierlisson/FinancApp.git
  1. Acesse a pasta do projeto:
cd FinancApp
  1. Abra a pasta no Android Studio.

  2. Aguarde a sincronização das dependências do Gradle.

  3. Selecione um emulador ou dispositivo físico com API 24 ou superior.

  4. Execute o aplicativo pelo botão Run do Android Studio.


👤 Autor

Desenvolvido por Dierlisson Justiniano.

About

Aplicativo Android de controle financeiro offline com Jetpack Compose, Clean Architecture, Room e StateFlow.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages