Banking App - Android Client
Aplicativo Android desenvolvido em Kotlin para consumir a Bank Transaction API, uma API REST bancária com autenticação JWT.
Sobre o Projeto
Integração com a API
Esta versão fecha o ciclo completo de autenticação do aplicativo:
desde o primeiro cadastro até o acesso autenticado à Home. Todo o
fluxo foi implementado, testado de ponta a ponta e está funcionando
com a API backend.
O que foi implementado
-
Cadastro de cliente: o usuário preenche seus dados (nome, CPF,
data de nascimento, e-mail e senha), que são enviados para a API e
validados no servidor.
-
Configuração de conta: logo após o login, o usuário escolhe o
tipo de conta (Corrente ou Poupança), que é então criada e
vinculada ao seu cadastro.
-
Login e autenticação: o usuário acessa o app com e-mail e senha.
A API retorna um token JWT, que o aplicativo passa a anexar
automaticamente em todas as requisições seguintes.
-
Autorização por permissões (Roles): cada requisição autenticada
é validada também quanto às permissões do usuário (Cliente ou
Admin), garantindo que cada rota da API só seja acessada por quem
tem autorização para isso.
-
Continuidade de sessão: o app reconhece automaticamente se o
usuário já está logado, ou se iniciou um cadastro mas não chegou a
configurar a conta — retomando o fluxo exatamente de onde parou,
mesmo que o aplicativo tenha sido fechado no meio do processo.
Como funciona por baixo dos panos
Toda a comunicação entre app e API acontece via HTTP, usando
DTOs (Data Transfer Objects) — estruturas que representam
exatamente os dados trocados em cada requisição e resposta, mantendo
o app e a API sempre alinhados quanto ao formato da informação. A
autenticação segue o padrão JWT (JSON Web Token) com controle de
acesso baseado em permissões (Role-Based Access Control),
seguindo as práticas recomendadas para APIs stateless.
Ciclo de autenticação — concluído
Com essa versão, o fluxo de entrada do usuário no aplicativo está
100% funcional:
Estado Atual do Projeto
│ ├── data/
│ │ ├── account/
│ │ │ ├── dto/
│ │ │ ├── AccountRequestDTO.kt
│ │ │ └── AccountResponseDTO.kt
│ │ │
│ │ ├── client/
│ │ │ ├── dto/
│ │ │ ├── AuthenticationRequestDTO.kt
│ │ │ ├── AuthenticationResponseDTO.kt
│ │ │ ├── ClientRequestDTO.kt
│ │ │ └── ClientResponseDTO.kt
│ │ │
│ │ ├── enums/
│ │ │ ├── AccountStatus.kt
│ │ │ ├── AccountType.kt
│ │ │ ├── ClientRoles.kt
│ │ │ └── ClientStatus.kt
│ │ └── network/
│ │ ├── AccountApiService.kt
│ │ ├── ClientApiService.kt
│ │ └── ClientLoginApiService.kt
| | └── OnboardingManager.kt
| | └── RetrofitClient.kt
| | └── TokenManager.kt
│ └── ui/
│ ├── home/
│ │ └── HomeActivity.kt
│ ├── login/
│ │ └── LoginActivity.kt
│ ├── register/
| | |__ AccountSetupManager.kt
| | |
│ │ └── RegisterActivity.kt
│ └── splash/
│ └── SplashActivity.kt
├── res/
│ ├── drawable/
│ ├── layout/
| | ├── activity_account_setup.xml
│ │ ├── activity_home.xml
│ │ ├── activity_login.xml
│ │ ├── activity_register.xml
│ │ ├── activity_splash.xml
│ │ └── nav_header.xml
│ ├── menu/
│ ├── mipmap-anydpi-v26/
│ ├── mipmap-hdpi/
│ ├── mipmap-mdpi/
│ ├── mipmap-xhdpi/
│ ├── mipmap-xxhdpi/
│ ├── mipmap-xxxhdpi/
│ ├── values/
│ ├── values-night/
│ └── xml/
Telas atuais
activity_splash
esta é apenas uma tela simples de carregamento na qual dura 2 segundos e meio para que tenha uma leve transição para o usuário do momento em que entra no aplicativo.
activity_login
esta é a tela de login na qual o usuário deverá entrar com seu e-mail e senha os dados inseridos devem ser enviados para a API já citada neste README e então ela dará a permissão para entrar caso o usuário não tenha um aconta ele poderá ser redirecionado para a tela de cadastro.
activity_register
já esta é a tela de cadastro para os usuário que ainda não passuem uma conta cadastrada no sistema do app no caso a API que segue com a mesma dinâmica da tela de login após esse momento o usuário é direcionado para as demais telas no momento a home.
activity_home
esta é uma tela onde todo usuário já logado ou momentos antes criado a conta chega, aqui ele terá todos os recursos para suas atividades financeiras.
activity_home
esta é uma tela de configuração da conta, é essencial para que o app possa carregar o id do usuário que é requisitado para gerar o relacionamento entre cliente e conta onde é aproveitado durante a criação do cliente
Tecnologias
- Kotlin — linguagem principal
- XML Layouts — construção de interfaces
- Retrofit — cliente HTTP para consumo da API
- OkHttp — interceptor para autenticação JWT automática
- Gson — serialização e deserialização de JSON
- Coroutines — requisições assíncronas sem bloqueio da UI
Funcionalidades
Status
A partir daqui, o desenvolvimento passa a se concentrar dentro do
aplicativo já autenticado — construindo as funcionalidades que o
usuário vai usar no dia a dia.
Próximos passos
Com a base de autenticação consolidada, as próximas versões vão focar
nas funcionalidades internas do app:
- Exibição de saldo e dados reais da conta na Home
- Menu lateral funcional (Perfil, Configurações, Suporte e Logout)
- Notificações
- Pix
- Transferências
- Otimização de performance e refinamento de experiência do usuário (UX)