Skip to content

Matheus153/flask-financas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Insight Finance

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.

Banner


Pré-requisitos

Instalação

Instale flask-financas com pip (gerenciador de pacotes do Python)

Clonando repositório

  git clone https://github.com/Matheus153/flask-financas.git

Acesse a pasta

  cd flask-financas

Instale requisitos

  pip install -r requirements.txt

Variáveis de ambiente

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

Onde conseguir essas informações?

1. Para as variáveis de e-mail:

🔐 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)

2. Para as variáveis Firebase

🔑 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)

3. SDK Admin Firebase

🔧 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

4. Configurando Firestore

🏦 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

5. Banco de dados PostgreSQL

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

Start Server

Para iniciar o teste, execute o seguinte comando

  python run.py

🚀 Tech Stack

🧠 Backend

  • 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.

🖥️ Frontend (Provisório)

  • HTML5, CSS3, JavaScript
  • Jinja2 – template engine integrada ao Flask.

🗄️ Banco de Dados

  • PostgreSQL – recomendado para produção.
  • SQLite – opção leve para desenvolvimento e testes locais.

📁 Estrutura do diretório do projeto

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

Diagramas

Fluxo controle de acesso

Boas práticas

Autor

Matheus Santos Lima

About

Projeto pessoal que visa construir um sistema de gerenciamento financeiro.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published