Aplicativo Android de controle financeiro pessoal offline, desenvolvido com Kotlin, Jetpack Compose, MVVM e Clean Architecture.
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.
| Splash Screen | Dashboard | Lista de transações | Nova transação |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
- 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.
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:
Contém os modelos e regras de negócio da aplicação, como:
ContaCategoriaTransacao
Essa camada permanece independente dos detalhes de interface e persistência.
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.
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.
| Tecnologia | Aplicação no projeto |
|---|---|
| Kotlin 2.1.0 | Linguagem principal utilizada no desenvolvimento do aplicativo. |
| Jetpack Compose — BOM 2024.12.01 | Construção declarativa das telas e componentes da interface. |
| Material Design 3 | Componentes visuais, tema e padrões de interface. |
| Room Database 2.7.0-alpha11 | Persistência local de contas, categorias e transações. |
| Navigation Compose 2.8.5 | Gerenciamento das rotas e da navegação entre telas. |
| Kotlin Coroutines e Flow | Execução assíncrona e observação reativa dos dados. |
| StateFlow | Representação e atualização dos estados da interface. |
| Kotlinx Serialization 1.7.3 | Conversão dos dados para o formato JSON durante a exportação. |
| KSP 2.1.0-1.0.29 | Processamento das anotações utilizadas pelo Room. |
| Gradle 9.3.1 | Automação de build e gerenciamento do projeto. |
- 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.
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.
- 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.
- Clone o repositório:
git clone https://github.com/dierlisson/FinancApp.git- Acesse a pasta do projeto:
cd FinancAppAbra a pasta no Android Studio.
Aguarde a sincronização das dependências do Gradle.
Selecione um emulador ou dispositivo físico com API 24 ou superior.
Execute o aplicativo pelo botão Run do Android Studio.
Desenvolvido por Dierlisson Justiniano.



