Desenvolvimento de Software: Gestor de Finanças Pessoais
Autor: Lucas Ribeiro Lima
Local: Belo Horizonte
Data: Abril/2024
O gerenciamento eficiente das finanças pessoais é um desafio constante para muitas pessoas, especialmente em um cenário de constante variação de renda e despesas. A falta de uma ferramenta adequada pode resultar em dificuldades na organização financeira, controle de gastos e no alcance de objetivos financeiros.
Desenvolver um software denominado Gestor de Finanças Pessoais (GFP) que auxilie os usuários no controle e gestão de suas finanças pessoais de forma eficiente e intuitiva.
- Desenvolver um sistema de cadastro de renda que permita aos usuários registrar, editar e excluir suas entradas financeiras de maneira simples e rápida.
- Implementar um módulo de cadastro de despesas fixas que sejam automaticamente propagadas para os próximos períodos, simplificando a gestão financeira recorrente.
- Criar uma funcionalidade de cadastro de despesas variáveis e imprevistas para contemplar gastos não planejados.
- Possibilitar aos usuários estabelecer metas de gastos em diferentes categorias de despesas, incentivando o planejamento financeiro.
- Desenvolver relatórios gráficos que permitam aos usuários visualizar de forma clara e objetiva suas receitas e despesas ao longo do tempo.
A criação do Gestor de Finanças Pessoais (GFP) se justifica pela necessidade de uma solução prática e eficaz para o gerenciamento das finanças pessoais. Diante da crescente complexidade do cenário financeiro individual e a carência de ferramentas adequadas, torna-se essencial desenvolver uma plataforma que proporcione maior controle e organização financeira, contribuindo assim para o bem-estar e a estabilidade financeira dos usuários.
O GFP visa oferecer uma plataforma completa para o gerenciamento de recursos financeiros, incluindo funcionalidades de cadastro de rendas, despesas fixas, despesas variáveis, estipulação de metas e dashboards para acompanhamento.
- Cadastro de renda: Permite que o usuário cadastre, edite e exclua entradas de recursos financeiros.
- Cadastro de despesas fixas: Possibilita o cadastro, edição e exclusão de despesas fixas, que serão automaticamente propagadas para as próximas competências.
- Cadastro de despesas variáveis: Permite o cadastro de despesas variáveis e imprevistas.
- Gerenciamento de metas: Permite que o usuário estipule metas de gastos para determinadas categorias de despesas.
- Relatórios: Gera relatórios gráficos que facilitam a visualização das receitas e despesas ao longo dos períodos.
- Autenticação Social: O sistema permitirá o login com contas de provedores OpenIdConnect (como Google), garantindo facilidade de acesso.
- Gerenciamento de Sessões: O sistema permitirá que o usuário se mantenha logado por um tempo estipulado sem necessidade de novo login.
- Plataforma: Web
- Frontend: Desenvolvido com Next.js, utilizando Server-Side Rendering (SSR).
- Backend: Desenvolvido com Node.js e Express para a criação de uma API REST.
- Containers: Utilização de Docker para a implementação e deployment.
- Banco de Dados: MySQL para persistência relacional dos dados.
- Armazenamento de Sessões: Redis para armazenamento de sessões e cache de dados.
- Sistema Operacional: Ambiente Linux.
- Banco de Dados MySQL: O sistema deve ser implantado em um banco de dados MySQL na versão 9.0.1, garantindo a compatibilidade com as funcionalidades utilizadas, exposto na porta 3306.
- Redis: Um banco de dados NoSQL do tipo chave-valor será utilizado para o cache de sessões. O Redis será implantado na versão 7.4, exposto na porta 6379.
- Variáveis de Ambiente:
As variáveis de ambiente devem ser configuradas no servidor de implantação ou em um arquivo.env
localizado no diretório raiz do projeto:
ROOTPWD
Senha do usuárioroot
do banco de dados.GFPUSER
Nome do usuário dedicado à aplicação no banco de dados.GPFPWD
Senha do usuário GFPUSER.
REDIS_URL
URL para o servidor Redis, usada para armazenamento de sessões ou cache.DATABASE_URL
URL de conexão ao banco de dados
EXPRESS_HOST
Host no qual o servidor Express será executado (exemplo:localhost
ou IP do servidor).EXPRESS_PORT
Porta na qual o servidor Express estará disponível (exemplo:3000
).
SESSION_SECRET
Chave secreta usada para assinar as sessões. Deve ser única e segura.
CALLBACK_DOMAIN
Domínio para os callbacks de autenticação (exemplo:https://seu-dominio.com
).GOOGLE_CLIENT_ID
ID do cliente da API do Google usado para autenticação.GOOGLE_CLIENT_SECRET
Segredo do cliente da API do Google usado para autenticação.
REDIRECT_FRONTEND_URL
URL para redirecionamento ao frontend após autenticação (exemplo:https://seu-frontend.com
).
GFP_COOKIE_DOMAIN
Domínio usado para configurar cookies (exemplo:.seu-dominio.com
).CORS_ALLOWED_DOMAIN
Domínio permitido para requisições Cross-Origin (exemplo:https://seu-dominio.com
).
- [RF001] O sistema deve permitir o gerenciamento de rendas fixas.
- [RF002] O sistema deve permitir o gerenciamento de rendas esporádicas.
- [RF003] O sistema deve permitir o gerenciamento de despesas variáveis.
- [RF004] O sistema deve permitir o gerenciamento de despesas fixas.
- [RF005] O sistema deve permitir o cadastro/entrada de novos usuários.
- [RF006] O sistema deve permitir a utilização de login social.
- [RF007] O sistema não deve permitir acesso sem autenticação à carteira financeira.
- [RF008] O sistema deve permitir realizar personalizações de tema na interface.
- [RF009] O sistema deve permitir que o usuário se mantenha logado por um tempo estipulado sem necessitar realizar login novamente.
- [RF010] O sistema deve exibir uma barra de progresso em relação à meta de gastos entre rendas e despesas mensais.
- [RF011] O sistema deve exibir os dados de rendas e despesas de forma mensal, trimestral ou anual.
- [RF012] O sistema deve permitir ao usuário filtrar e selecionar o período desejado.
- [RF013] O sistema deve permitir a extração de relatórios com os dados do período solicitado.
- [NF001] Confiabilidade: O sistema deve representar informações corretas e precisas sobre o estado financeiro, sem erros de cálculos.
- [NF002] Confidencialidade: O sistema deve manter os dados dos usuários seguros e confidenciais.
- [NF003] Segurança: O sistema não deve expor dados dos usuários em nível de banco de dados.
Será utilizada a metodologia Kanban para o desenvolvimento do software, realizando entregas de pequenos pacotes de software de forma incremental, facilitando o acompanhamento do progresso e a realização de testes.
- Anderson, D. J. (2010). Kanban: Successful Evolutionary Change for Your Technology Business. Blue Hole Press.
- CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a Distância; PERSEGUINE, Vanessa Ravazzi. Engenharia de Requisitos. Maringá-Pr.: UniCesumar, 2017. Reimpressão, 2021.158 p.
- Centro Universitário de Maringá. Núcleo de Educação a Distância et al. (2019). Engenharia de Software. Maringá-Pr.: Unicesumar.
- Centro Universitário de Maringá. Núcleo de Educação a Distância; Pelissari, William Roberto; Luz, Carlos Danilo; Kaiser, Jeferson. (2021). Banco de Dados II. Maringá-Pr.: UniCesumar.
- Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall.
- PISANI DA ARCH. Diagrama de Componentes na Prática | UML. Jan. 2024. Disponível em: https://www.youtube.com/watch?v=yjFpwFZHGtw. Acesso em: 24 set. 2024.
- UNIVERSIDADE FEDERAL DE JUIZ DE FORA. Documento de requisitos do sistema. Juiz de Fora: UFJF, 2016. Disponível em: https://www2.ufjf.br/diavi//files/2016/07/DocumentosdeRequisitosdoSistema.pdf. Acesso em: 24 set. 2024.