Flask后台

finance-dashboard-template — Flask 后台模板

作者 barnabys-drew

基于 Flask 的自托管个人财务仪表盘模板,通过 Plaid 与自建抓取器汇总银行、券商和股权计划数据,所有个人数据保存在本地。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

1 个预览视图
作者提供的预览
作者提供的预览首屏预览

来自项目 README 的原始预览。

目前有 1 张原始预览,可打开完整图片查看设计细节。

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-13查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

通过 Plaid 同步银行与券商数据,并用 Playwright + Chrome 抓取器补充 Plaid 覆盖不到的股权计划与药房处方信息

02

所有个人数据、令牌与配置存放在 ~/.finance-viz/ 目录,仓库代码不含余额、交易或密钥

03

提供 --demo 模式,无需任何凭据即可生成示例数据并启动完整仪表盘

04

包含支出下钻、分类环形图、净资产与资产类别敞口、集中度提醒、股权归属计划、订阅识别与异常扫描等分析视图

05

分类规则、商户关键词、账户标签、雇主代码与预算均通过 config.json 配置,与代码分离

模板详细介绍

这是一个用 Flask 构建的自托管个人财务仪表盘模板,目标是把分散在银行、券商和股权计划中的财务数据集中到一个本地网页界面中查看。数据来源包括 Plaid API、基于 Playwright 与 Chrome 的股权计划抓取器、药房处方抓取器,以及手动录入的条目;refresh.py 负责编排这些来源,app.py 以只读方式提供页面与 API。

仪表盘包含 Spending、Net Worth、Cash Flow & Trends 等标签页,提供月度支出下钻、分类环形图、头部商户、每日图表、关键词洞察卡片与可选预算,账户余额与资产类别敞口、集中度提醒、已归属与未归属雇主股权及分批归属计划,以及收入与支出对比、环比变化、订阅识别和异常发现。另有周期性扣费扫描与持仓相关的 Yahoo Finance 新闻。

模板强调数据隔离:所有个人数据、令牌和配置存放在 ~/.finance-viz/ 目录,被 gitignore 并设为 chmod-600,代码仓库本身不含余额、交易或密钥;分类规则、商户关键词、账户标签、雇主代码和预算均来自 config.json。仓库提供 --demo 模式,无需 Plaid 账号或任何凭据即可生成示例数据并在本地启动完整仪表盘,适合先查看界面与功能再决定是否接入真实账户。

限制方面,接入真实账户需要按照 SETUP.md 完成 Plaid 开户与账户关联,并为 Plaid 覆盖不到的机构自行配置抓取器;抓取器依赖 Chrome 远程调试流程,运行细节记录在 RUN.md。该模板为 MIT 许可的代码版本,第三方素材与外部服务需另行核对许可与费用。

Flask后台

适合你的项目吗?

适用场景

  • 在本地集中查看多个银行与券商账户的余额、支出和现金流趋势
  • 跟踪雇主股权计划的已归属与未归属份额及分批归属时间表
  • 识别周期性扣费、订阅价格变化和异常交易
  • 在接入真实账户前用 --demo 模式预览仪表盘界面与功能
  • 为 Plaid 无法覆盖的机构编写或接入自定义抓取器

适合人群

  • 希望财务数据完全留在本机、不接受上传到第三方云服务的个人用户
  • 具备 Python 环境与基本命令行操作能力,愿意按 SETUP.md 配置 Plaid 和抓取器的开发者
  • 需要把支出、净资产、现金流和股权归属放在同一个界面中查看的用户
  • 希望基于现有 Flask 代码二次开发或扩展数据来源的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    克隆仓库后创建 Python 虚拟环境并安装 requirements.txt,运行 ./start.sh --demo 可在无凭据情况下生成示例数据并打开 http://localhost:5000

  2. 2

    接入真实账户需参考 SETUP.md 完成 Plaid 开户与账户关联,并按 config.example.json 编写 config.json

  3. 3

    个人数据、令牌与配置存放在 ~/.finance-viz/,该目录被 gitignore 且权限为 chmod-600

  4. 4

    密钥来自本地文件或 1Password CLI,在运行时读取,不硬编码也不写入日志

  5. 5

    抓取器依赖 Chrome 远程调试流程,Tailwind 构建与 WSL 相关细节记录在 RUN.md

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 接入真实银行与券商数据依赖第三方 Plaid 服务,需自行注册 Plaid 账号并完成账户关联,可能产生外部服务费用。
  • 密钥读取依赖本地文件或 1Password CLI,使用 1Password 方式需要相应的 1Password 账号与订阅。
  • 持仓新闻功能依赖 Yahoo Finance 外部服务,其可用性与条款由第三方决定。
  • 股权计划抓取器依赖 Playwright 与 Chrome 远程调试流程,需本地安装并配置 Chrome 环境。
  • Plaid 覆盖不到的机构需要用户自行编写或配置抓取器,模板不提供现成支持。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

live bank/brokerage data via **Plaid**

README 原文

Secrets come from a local file or the 1Password CLI at runtime

README 原文

Position news** — Yahoo Finance headlines for your current holdings

README 原文

Equity plan scraper ────┤ ~/.finance-viz/*.json Flask (Playwright + Chrome)

README 原文

adding scrapers for institutions Plaid doesn't reach

README 原文
https://github.com/barnabys-drew/finance-dashboard-template/blob/main/LICENSEhttps://github.com/barnabys-drew/finance-dashboard-template/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料一般 · 68 / 100
技术栈
Flask
网站类型
后台
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-13
截图检查日期
2026-10-13

目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。

目录记录的主要技术栈是 Flask。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-13

查看当时使用的来源资料

SHA-256: fc703f090b85035669d56d3bdfd245f613cd01cade7934074c369545e3cec7f8

2026-10-13T01:04:57.451Z

来源文件 / 仓库
# Finance Dashboard

A self-hosted personal finance dashboard: live bank/brokerage data via **Plaid**,
equity-plan scraping for what Plaid can't reach, and a local **Flask** dashboard.
All financial data stays on your machine — the repo never contains balances,
transactions, or secrets.

[![CI](https://github.com/barnabys-drew/finance-dashboard-template/actions/workflows/ci.yml/badge.svg)](https://github.com/barnabys-drew/finance-dashboard-template/actions/workflows/ci.yml)
![Python](https://img.shields.io/badge/python-3.10%2B-blue)
![License](https://img.shields.io/badge/license-MIT-green)

| Spending | Net Worth |
|----------|-----------|
| ![Spending tab](docs/screenshots/spending.png) | ![Net Worth tab](docs/screenshots/networth.png) |

_All figures shown are generated sample data._

## Try it in 60 seconds

No Plaid account, credentials, or configuration needed:

```bash
git clone https://github.com/barnabys-drew/finance-dashboard-template.git
cd finance-dashboard-template
python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt
./start.sh --demo
```

That generates realistic sample data and opens the full dashboard at
`http://localhost:5000`.

## Features

- **Spending** — monthly drill-down, category donut, top merchants, daily chart,
  and keyword-driven insight tiles (Household, Baby, Pet, AI, Utilities, …) with
  optional per-tile budgets
- **Net Worth** — account balances, asset-class exposure, concentration alerts,
  vested vs. unvested employer equity with a per-tranche vesting schedule
- **Cash Flow & Trends** — income vs. spend, month-over-month deltas,
  subscription detection (price changes, lapsed, emerging), anomaly findings
- **Recurring-charge scan** — flags stable monthly/annual merchants, splits true
  subscriptions from bills
- **Position news** — Yahoo Finance headlines for your current holdings

## How it works

```
Plaid API ──────────────┐
Equity plan scraper ────┤            ~/.finance-viz/*.json           Flask
(Playwright + Chrome)   ├─ refresh.py ─────────────────────► app.py ───► localhost:5000
Pharmacy Rx scraper ────┤   (orchestrator)                  (read-only)
Manual entries ─────────┘
```

- **Everything personal lives in `~/.finance-viz/`** (data, tokens, config) —
  gitignored, chmod-600, never in the repo.
- **Code contains no personal data.** Category rules, merchant keywords, account
  labels, employer tickers, and budgets all come from `config.json`
  (see [`config.example.json`](config.example.json)).
- Secrets come from a local file or the 1Password CLI at runtime — never
  hardcoded, never logged.

## Setup with your real accounts

Follow **[SETUP.md](SETUP.md)** — it covers Plaid onboarding, linking accounts,
the full `config.json` reference, and adding scrapers for institutions Plaid
doesn't reach. It's written step-by-step, so you can also hand it to an AI
coding assistant and have it walk you through the process.

## Running it

| Command | What it does |
|---------|--------------|
| `./start.sh` | Refresh all sources, then open the dashboard |
| `./start.sh --fast` | Skip refresh — cached data, instant |
| `./start.sh --demo` | Generated sample data — no credentials at all |
| `./start.sh --no-shareworks` | Refresh Plaid only; don't touch Chrome |

`RUN.md` documents the runtime details (Chrome remote-debugging flow for
scrapers, Tailwind build, WSL specifics).

## Key files

| File | Purpose |
|------|---------|
| `app.py` | Flask app + API routes |
| `finance_config.py` | Paths, category rules, config loading, bucket classifier |
| `refresh.py` | Orchestrates all data sources |
| `plaid_setup.py` / `plaid_refresh.py` | One-time account linking / incremental sync |
| `providers/` | Pluggable balance providers (Shareworks scraper, manual entries) |
| `portfolio_analytics.py` | Asset-class exposure + concentration alerts |
| `detect_subscriptions.py` / `detect_anomalies.py` | Recurring-charge + anomaly scans |
| `scripts/gen_sample_data.py` | Demo data generator (powers `--demo` and CI) |
| `static/app.js`, `templates/` | Dashboard front-end (Chart.js + Tailwind) |

## Tests

```bash
pip install -r requirements-dev.txt
python3 -m pytest -q
```

## License

MIT
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。