How nathanblatter/finforge works
FinForge is a self-hosted personal-finance platform. Its main path is nightly Plaid/Schwab ingestion, privacy-conscious normalization into PostgreSQL, then API-backed dashboards and analysis; users also get AI coaching, alerts, reports, goals, watchlists and messaging. The UI’s API client, FastAPI routers and scheduled cron jobs are distinct access paths to shared data. Edges follow explicit README statements and the supplied import/call evidence; less-sampled feature wiring is left unasserted.
Main entry points: cron/main.py Scheduler · routers Finance endpoints · api/main.py FastAPI application · plaid_sync.py Plaid sync
Components 25
User interface
- React dashboard
ui/src/App.tsx - API client
ui/src/api/client.ts
API services
- FastAPI application
api/main.py - Authentication
api/auth.py - Finance endpoints
api/routers - Finance calculations
api/services
Scheduled data
- Scheduler
cron/main.py - Plaid sync
cron/integrations/plaid_sync.py - Schwab sync
cron/integrations/schwab_sync.py - Data normalization
cron/etl/deidentify.py
Shared finance data
- PostgreSQL
- API data models
api/models/db_models.py - Cron data access
cron/db.py
Finance features
- Spending & budgets
api/routers/spending.py - Portfolio analysis
ui/src/pages/PortfolioAnalysisPage.tsx - AI coach
api/services/agent - Goal tracking
cron/goal_engine.py - Alerts
cron/alerts_engine.py - PDF reports
api/routers/reports.py - Market & options
api/services/schwab.py - iMessage delivery
cron/imessage_delivery.py
Other components
- Finance user
- Plaid API
- Schwab Trader API
- Claude API
Connections 25
- Finance user → React dashboard: uses
README.md - React dashboard → API client: requests data
- API client → FastAPI application: calls HTTP API
README.md - FastAPI application → Finance endpoints: registers routes
api/main.py - Finance endpoints → Authentication: authenticates
api/routers/auth.py - Finance endpoints → API data models: queries data
api/routers/auth.py - FastAPI application → PostgreSQL: uses PostgreSQL
README.md - API data models → PostgreSQL: maps schema
- Scheduler → Plaid sync: runs sync
cron/main.py - Scheduler → Schwab sync: runs sync
cron/main.py - Plaid sync → Plaid API: fetches accounts
README.md - Schwab sync → Schwab Trader API: fetches portfolios
README.md - Plaid sync → Data normalization: normalizes records
cron/integrations/plaid_sync.py - Schwab sync → Data normalization: normalizes records
cron/integrations/schwab_sync.py - Data normalization → Cron data access: persists records
cron/integrations/plaid_sync.py - Cron data access → PostgreSQL: reads and writes
cron/db.py - Finance endpoints → Spending & budgets: serves spending
api/routers/__init__.py - Finance endpoints → Portfolio analysis: serves analysis
- Finance calculations → Market & options: provides market data
api/services/quant.py - Scheduler → Goal tracking: runs goal checks
cron/main.py - Scheduler → Alerts: runs alert checks
cron/main.py - Scheduler → PDF reports: schedules reports
- Scheduler → AI coach: generates insights
cron/main.py - AI coach → Claude API: requests completions
- Alerts → iMessage delivery: queues messages