Skip to content

Forach/shellhacks-crypto-saving-pot-2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FinSight: Money Savings Pot

A Streamlit demo for transparent group saving. FinSight tracks deposits and withdrawals in a hash-linked ledger, shows each participant's net contribution, and supports optional MetaMask signatures for crypto-style transaction attestation.

Built for ShellHacks 2025 as a hackathon prototype. This is not connected to real banks, real payment rails, or real funds.

Highlights

  • Track deposits and withdrawals for a shared savings goal.
  • Store each transaction in a hash-linked ledger for tamper-evident history.
  • Generate canonical transaction messages for optional MetaMask signing.
  • Verify wallet signatures before adding signed transactions to the ledger.
  • Visualize total deposits, withdrawals, current balance, goal progress, and participant contribution share.
  • Export the ledger as CSV for review or reset it back to the genesis block.
  • Generate a savings summary with either a deterministic local fallback or Google AI Studio.

Tech Stack

  • Python
  • Streamlit
  • Pandas
  • Altair
  • eth-account
  • Google AI Studio / Gemini, optional
  • MetaMask, optional signing flow

Project Structure

.
|-- app.py            # Streamlit UI and transaction workflow
|-- chain.py          # Block model, hashing, canonical messages, validation
|-- storage.py        # CSV-backed ledger persistence
|-- summarize.py      # Local and optional Gemini savings summaries
|-- utils.py          # Formatting and validation helpers
|-- signer.html       # Browser-based MetaMask signing helper
|-- data/ledger.csv   # Demo ledger data
`-- requirements.txt  # Python dependencies

Quick Start

git clone https://github.com/Forach/shellhacks-crypto-saving-pot-2025.git
cd shellhacks-crypto-saving-pot-2025

python -m venv .venv
.venv\Scripts\activate

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

For macOS or Linux:

source .venv/bin/activate

Optional AI Summary

The app works without an AI key. To enable Gemini summaries, create a .env file:

USE_AI_STUDIO=1
GOOGLE_API_KEY=your_google_ai_studio_key
GEMINI_MODEL=gemini-2.5-flash

If the key is missing or the request fails, the app falls back to a local rule-based summary.

Optional MetaMask Signing

  1. Start a local static server from the project root:

    python -m http.server 8000
  2. Open http://localhost:8000/signer.html.

  3. In the Streamlit app, generate the canonical message for a transaction.

  4. Sign that exact message in signer.html.

  5. Paste the wallet address and signature back into the app before adding the transaction.

Demo Links

Disclaimer

This project is a demo application for learning and presentation purposes only. It is not financial advice, does not custody funds, and should not be used to manage real money.

About

A Streamlit demo app for transparent group saving with a hash-linked ledger, optional MetaMask signatures, charts, and an AI coach summary.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors