Skip to content

pr0s4/racha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Racha a Conta (Streamlit)

App simples para dividir despesas de uma festa entre participantes e gerar um plano mínimo de “quem paga quem” (≤ N−1 transferências).
Feito com Python, pandas e Streamlit.

✨ Funcionalidades

  • Editor de despesas inline (tabela editável).
  • Formulário para inserir nova despesa (nome, valor e descrição opcional).
  • Botão para limpar toda a lista.
  • Cálculo da cota por pessoa e saldos (positivo = a receber, negativo = a pagar).
  • Plano mínimo de transferências (algoritmo guloso: maior devedor ↔ maior credor).
  • Exportação CSV em dois formatos:
    • UTF-8 com vírgula (Google Sheets / Excel moderno).
    • Excel pt-BR (ponto e vírgula como separador e vírgula decimal).

🧠 Como funciona (resumo)

  1. Soma todas as despesas e calcula cota = total / nº participantes.
  2. Para cada pessoa, saldo = pago − cota (positivo = credor; negativo = devedor).
  3. Ordena credores e devedores e casa maior devedor com maior credor até zerar (≤ N−1 transferências).
  4. Quem não pagou nada também entra na divisão (marcado como (sem_nome_i) se não houver lista explícita).

📦 Estrutura do projeto


.
├─ app.py               # App Streamlit (com main())
└─ requirements.txt     # Dependências (streamlit, pandas)

🚀 Rodando localmente

python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate

pip install -r requirements.txt
streamlit run app.py

☁️ Deploy (Streamlit Cloud)

  • Use o template do Streamlit e aponte o arquivo principal para app.py.

🧾 Formato dos dados

Colunas: pagador (obrigatório), valor (obrigatório), descricao (opcional).

Exemplo:

pagador,valor,descricao
Ana,180.00,mercado
Bruno,20.00,gelo
Ana,40.00,carvão
Carla,60.00,refri

💾 Exportação (Excel/Sheets)

  • CSV UTF-8 (vírgula) → Google Sheets / Excel recente.
  • CSV p/ Excel (pt-BR) → Excel configurado em pt-BR (usa ; e vírgula decimal).

🔧 Parametrizações úteis

  • Número de participantes inclui quem não pagou nada.
  • Para evitar (sem_nome_i), adapte para usar lista fixa de participantes.

⚠️ Observações

  • Arredondamento monetário com Decimal (2 casas, ROUND_HALF_UP).
  • Despesas com valor ≤ 0 são ignoradas.

🧩 Reuso

Função principal:

settle_min_transfers(num_participantes: int, despesas_df: pd.DataFrame) -> dict

🗂️ requirements.txt

streamlit>=1.36
pandas>=2.1

🤝 Contribuindo

PRs são bem-vindos.

📄 Licença

Este projeto é licenciado sob a MIT License. Consulte o arquivo LICENSE para detalhes.

About

Sempre precisei de algo pratico para dividir contas, ai vai minha ajuda

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages