Um sistema que realiza seu controle financeiro através de acompanhamentos diários e mensais dos seus lançamentos, aponta melhorias que poderiam ser realizadas e gera gráficos automaticamente com suas informações.
- Git (https://git-scm.com/)
- Python (https://www.python.org/)
Instale flask-financas com pip (gerenciador de pacotes do Python)
git clone https://github.com/Matheus153/flask-financas.git
cd flask-financas
pip install -r requirements.txt
Para que o app funcione corretamente é necessário que existam variáveis de ambiente contendo informações sigilosas para execução do projeto. Estas variáveis se encontram contidas em arquivos (.env).
Portanto, ao clonar o projeto crie um arquivo chamado ".env" na raiz do projeto e preenchar com os seguintes dados:
SECRET_KEY=chave_flask_pode_adicionar_a_que_quiser
CSRF_SECRET_KEY=crie_sua_chave_propria
SERVER_NAME=url_da_sua_aplicacao_em_producao_ou_escreva_localhost
PREFERRED_URL_SCHEME=https_para_url_ou_http_para_localhost
MAIL_USERNAME=seu_email
MAIL_PASSWORD=senha_email
API_KEY=chave_api_firebase
TYPE=vem_do_arquivo_json_firebase
PROJECT_ID=vem_do_arquivo_json_firebase
PRIVATE_KEY_ID=vem_do_arquivo_json_firebase
PRIVATE_KEY=vem_do_arquivo_json_firebase
CLIENT_EMAIL=vem_do_arquivo_json_firebase
CLIENT_ID=vem_do_arquivo_json_firebase
AUTH_URI=vem_do_arquivo_json_firebase
TOKEN_URI=vem_do_arquivo_json_firebase
AUTH_PROVIDER_X509_CERT_URL=vem_do_arquivo_json_firebase
CLIENT_X509_CERT_URL=vem_do_arquivo_json_firebase
UNIVERSE_DOMAIN=vem_do_arquivo_json_firebase
MESSAGING_SENDER_ID=disponivel_nas_configuracoes_projeto_firebase
APP_ID=disponivel_nas_configuracoes_projeto_firebase
SQLALCHEMY_DATABASE_URI=url_banco_de_dados
🔐 Passo: Criar uma Senha de Aplicativo no Gmail
Obs: Primeiramente você deve criar ou já ter um e-mail disponível
O Gmail não permite mais o uso de senhas normais para aplicativos de terceiros. Você precisa gerar uma senha de aplicativo:
Acesse: Conta Google
-
Ative a Verificação em duas etapas (se ainda não tiver)
-
Em Senhas de aplicativos, clique em "Selecionar aplicativo" → "Outro (Nome personalizado)"
-
Digite um nome (ex: "Flask App") e clique em "Gerar"
-
Copie a senha de 16 caracteres gerada (use-a no MAIL_PASSWORD)
🔑 Passo: Obter a API Key do Firebase
Obs: Primeiramente você deve criar ou já ter um projeto no firebase console
-
Acesse o Firebase Console
-
No projeto, clique em ⚙️ > Configurações do projeto
-
Em Seus aplicativos, selecione o aplicativo web
-
Copie a Chave da API (aparece como apiKey no config)
-
Cole na variável ("API_KEY" do arquivo .env)
🔧 Como Gerar Corretamente SDK Admin Firebase: Acesse o Firebase Console
-
Selecione seu projeto
-
Vá em ⚙️ > Configurações do projeto > Contas de serviço
-
Role para baixo e clique em Gerar nova chave privada
-
Baixe o arquivo .json e preencha as variáveis de ambiente no arquivo .env
🏦 Para utilizar completamente a funcionalidade da aplicação configure o banco de dados Firebase chamado Firestore: Acesse o Firebase Console
Obs: para utilizar este recurso habilite a opção de faturamento da sua conta google.
-
Acesse a guia "Firestore Database"
-
Habilite o Cloud Firestore
-
Crie seu banco de dados
-
Ao criar seu banco de dados vá em "Regras" e substitua o código atual pelo seguinte:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /usuarios/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
allow write: if false;
}
}
}
- Publique suas alterações
Obs: Primeiramente você deve ter um banco de dados criado no Supabase ou qualquer outra que disponibilize gratuitamente como (Heroku ou Railway)
🏦 Configurando banco de dados:
-
Adicione uma tabela chamada "categoria" no banco de dados com as seguintes colunas:
- nome (tipo: text)
- tipo (tipo: text)
Você pode preenche-las com o seguinte padrão:
{'nome': 'Salário', 'tipo': 'receita'},
{'nome': 'Investimentos', 'tipo': 'receita'},
{'nome': 'Alimentação', 'tipo': 'despesa'},
{'nome': 'Moradia', 'tipo': 'despesa'},
{'nome': 'Transporte', 'tipo': 'despesa'},
{'nome': 'Lazer', 'tipo': 'despesa'},
{'nome': 'Saúde', 'tipo': 'despesa'},
{'nome': 'Educação', 'tipo': 'despesa'},
{'nome': 'Impostos', 'tipo': 'despesa'},
{'nome': 'Animais de estimação', 'tipo': 'despesa'},
{'nome': 'Cartão de crédito', 'tipo': 'despesa'},
{'nome': 'Vale-alimentação', 'tipo': 'receita'},
{'nome': 'Vale-refeição', 'tipo': 'receita'},
-
Adicione uma tabela chamada "transacao" no banco de dados com as seguintes colunas:
- descricao (tipo: text)
- valor (tipo: float8)
- data (tipo: timestamp)
- tipo (tipo: text)
- user_id (tipo: text)
- categoria_id (tipo: int8, foreign-key: categoria.id)
- recorrente (tipo: bool)
- meses_repeticao (tipo: int8)
- data_original (tipo: timestamp)
-
Clique em "Connect" e copie o link da url "transaction pooler" e cole na variável de ambiente (SQLALCHEMY_DATABASE_URI)
Exemplo de url:
postgresql+psycopg2://financas_app:NovaSenhaSuperSegura@localhost:5432/financas
Para iniciar o teste, execute o seguinte comando
python run.py
- Python – linguagem principal do projeto.
- Flask – microframework para criação da aplicação web e API.
- Flask-RESTful – estruturação de rotas RESTful.
- SQLAlchemy – ORM para manipulação do banco de dados.
- HTML5, CSS3, JavaScript
- Jinja2 – template engine integrada ao Flask.
- PostgreSQL – recomendado para produção.
- SQLite – opção leve para desenvolvimento e testes locais.
flask-financas/
├── app/
│ ├── __init__.py
│ ├── models.py
│ └── routes.py
├── templates/
│ ├── adicionar.html
│ ├── admin.html
│ ├── base.html
│ ├── cadastrar.html
│ ├── editar.html
│ ├── email_alerta.html
│ ├── email_recuperacao_senha.html
│ ├── index.html
│ ├── login.html
│ ├── perfil.html
│ ├── politica_privacidade.html
│ ├── recorrentes.html
│ ├── recuperar_senha.html
│ ├── redefinir_senha.html
│ ├── resumo.html
│ ├── termos_condicoes.html
│ ├── transacoes.html
│ └── tutorial.html
├── static/
│ ├── images/
│ │ └── favicon.ico
│ └── style.css
└── run.py