InvestEasy é uma aplicação web focada na simulação e no cálculo de investimentos em renda fixa, permitindo que os usuários entendam a rentabilidade de diferentes produtos de forma simples e direta.
- Autenticação de Usuários: Sistema completo de cadastro e login para uma experiência personalizada.
- Simulação de Investimentos:
- Cálculo detalhado para CDB/RDB com base no percentual do CDI.
- (Em desenvolvimento) Simulação para LCI/LCA (isentos de IR) e Títulos do Tesouro Direto.
- Indicadores em Tempo Real: Consulta automática das taxas CDI e SELIC através da API pública do Banco Central do Brasil, garantindo cálculos sempre atualizados.
- Interface Integrada: O back-end serve tanto a API de dados quanto a interface do usuário, criando uma aplicação web coesa e fácil de executar.
-
Backend:
- Python 3
- Flask: Microframework para a construção da API e o serviço das páginas.
- Flask-SQLAlchemy: ORM para interação com o banco de dados.
- Flask-JWT-Extended: Para autenticação baseada em tokens.
- MySQL: Banco de dados relacional para armazenamento dos usuários.
-
Frontend:
- HTML5
- CSS3
- JavaScript (Vanilla)
Este projeto utiliza uma estrutura de monorepo, onde o código do back-end e do front-end residem no mesmo repositório para facilitar o gerenciamento, mas mantendo uma separação lógica de pastas.
PROJETO_4/
|
|-- .vscode/
| └── settings.json # Configurações do VS Code para o projeto
|
|-- Backend/ # Contém toda a lógica do servidor Flask
| |-- app/
| |-- venv/
| |-- config.py
| |-- requirements.txt
| └── run.py
|
|-- frontend/ # Contém os arquivos da interface do usuário
| |-- static/
| └── templates/
|
└── .gitignore # Ignora arquivos desnecessários de ambos os projetos
Siga os passos abaixo para configurar e executar o projeto em seu ambiente local.
- Git
- Python 3.8+
- Um servidor MySQL em execução (ex: via MySQL Workbench)
-
Clone o repositório:
git clone <URL_DO_SEU_REPOSITORIO> cd PROJETO_4
-
Configure o Ambiente do Backend:
- Navegue até a pasta do backend:
cd Backend - Crie e ative o ambiente virtual:
# Criar o venv python -m venv venv # Ativar no Windows (PowerShell) .\venv\Scripts\activate
- Instale as dependências:
pip install -r requirements.txt
- Navegue até a pasta do backend:
-
Configure o Banco de Dados:
- Abra seu cliente MySQL (Workbench, etc.) e crie o banco de dados:
CREATE DATABASE investeasy_db;
- No arquivo
Backend/app/config.py, ajuste a linhaSQLALCHEMY_DATABASE_URIcom a sua senha do MySQL.
- Abra seu cliente MySQL (Workbench, etc.) e crie o banco de dados:
-
Crie as Tabelas no Banco:
- Certifique-se de que seu
venvestá ativo no terminal, dentro da pastaBackend. - Inicie o shell do Python:
python - Execute os seguintes comandos:
from app import create_app, db app = create_app() with app.app_context(): db.create_all() exit()
- Certifique-se de que seu
-
Navegue até a pasta do backend no terminal:
cd Backend -
Crie e configure o ambiente virtual (apenas na primeira vez):
# Criar o ambiente virtual python -m venv venv # Autorizar execução de scripts (necessário apenas uma vez no PowerShell) Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
-
Ative o ambiente virtual:
.\venv\Scripts\activate
-
(Opcional) Desative o ambiente virtual quando terminar:
deactivate
-
Inicie o servidor Flask:
python run.py
-
Acesse a aplicação no navegador:
http://127.0.0.1:5000
A aplicação expõe os seguintes endpoints de API (além de servir as páginas / e /resultados):
POST /api/registrar: Cria um novo usuário.POST /api/login: Autentica um usuário e retorna um token JWT.GET /api/indicadores: Retorna as taxas CDI e SELIC atuais.POST /api/simular/cdb: (Requer autenticação) Simula um investimento em CDB.
Uma branch é uma “linha do tempo” paralela do seu código.
main(oumaster): versão estável, pronta para produção.- Branches de feature/bugfix: onde a gente trabalha sem quebrar o que está em
main.
Crie uma branch nova a partir da main:
# 1) garanta que está na main e atualizada
git checkout main
git pull origin main
# 2) crie e mude para a nova branch
git checkout -b feature/nome-curto-da-tarefa
Voltar para outra branch existente:
git checkout main
Listar branches:
git branch # locais
git branch -r # remotas
git branch -a # todas
Enviar sua branch pro remoto:
git push -u origin feature/nome-curto-da-tarefa
> Dica: use nomes claros, ex.: `feature/login-google`, `fix/validação-email`.
## Glossário rápido
- **Repo**: repositório.
- **Branch**: linha de desenvolvimento.
- **Commit**: pacote de mudanças.
- **PR (Pull Request)**: pedido de fusão.
- **Merge**: combinar branches.
- **Rebase**: reaplicar commits por cima de outra base.
- **Conflict**: mudanças conflitantes no mesmo trecho.