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.
- 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.
- Python
- Streamlit
- Pandas
- Altair
- eth-account
- Google AI Studio / Gemini, optional
- MetaMask, optional signing flow
.
|-- 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
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.pyFor macOS or Linux:
source .venv/bin/activateThe 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-flashIf the key is missing or the request fails, the app falls back to a local rule-based summary.
-
Start a local static server from the project root:
python -m http.server 8000
-
Open
http://localhost:8000/signer.html. -
In the Streamlit app, generate the canonical message for a transaction.
-
Sign that exact message in
signer.html. -
Paste the wallet address and signature back into the app before adding the transaction.
- Repository: https://github.com/Forach/shellhacks-crypto-saving-pot-2025
- Video demo: https://www.youtube.com/watch?v=I1HkmmWg1as
- Devpost: https://devpost.com/software/aiconomy
- Live app: coming soon
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.