# morgan-jo/end2end-da-project architecture

> Architecture diagram of the GitHub repository morgan-jo/end2end-da-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/morgan-jo/end2end-da-project
- Repository: https://github.com/morgan-jo/end2end-da-project

## Overview

This repository is a portfolio of three finance projects: an expense-tracking web app, an FX rates insight hub, and a stock-price analysis pipeline. The principal workflows run from user input or market-data retrieval through persistence and analysis to web views or dashboard-ready exports. The root README describes a broader analytics lifecycle; the map reflects the capabilities supported by the available tree and sampled source. The stock and FX app internals are only partially sampled, so uncertain connections are omitted.

Main entry points: [`Finance & Banking/pennywise/app.py`](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py) (Expense Web Routes), [`Finance & Banking/stock-market-price-explore/app.py`](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/app.py) (Price Analysis Pipeline), [`Finance & Banking/real-time-fx-insight-hub/fetch_fx.py`](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fetch_fx.py) (Rate Fetcher), [`Finance & Banking/real-time-fx-insight-hub/fx_database.py`](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fx_database.py) (FX Database Access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pennywise["Expense Tracker"]
  node_expense_web["Expense Web Routes<br/>[app.py]"]
  node_expense_auth["Account Auth<br/>[app.py]"]
  node_expense_records["Expense Records<br/>[app.py]"]
  node_expense_dashboard["Monthly Dashboard<br/>[app.py]"]
  node_expense_db[("Expense Database<br/>[pennywise.db]")]
  node_expense_views["Expense Views"]
end

subgraph group_fx["FX Insights"]
  node_fx_fetch["Rate Fetcher<br/>[fetch_fx.py]"]
  node_fx_store["FX Database Access<br/>[fx_database.py]"]
  node_fx_db[("FX Rates Database<br/>[fx_rates.db]")]
  node_fx_eda["Daily FX Analysis<br/>[eda_fx.py]"]
  node_fx_exports["FX Analysis Exports<br/>[fx_rates_daily.csv]"]
  node_fx_web["Converter Web App<br/>[app.py]"]
  node_fx_view["Converter View<br/>[index.html]"]
  node_fx_dashboard["FX Tableau Workbook"]
end

subgraph group_stocks["Stock Analysis"]
  node_stock_pipeline["Price Analysis Pipeline<br/>[app.py]"]
  node_stock_config["Analysis Settings<br/>[config.py]"]
  node_stock_db[("Market Data Database<br/>[market_data.db]")]
  node_stock_exports["Tableau Data Exports"]
  node_stock_dashboard["Stock Tableau Workbook"]
end

node_expense_user(("Expense User"))
node_fx_operator(("Pipeline Operator"))
node_fx_api{{"Open Exchange Rates"}}
node_stock_operator(("Pipeline Operator"))
node_yahoo{{"Yahoo Finance"}}

node_expense_user -->|"submits requests"| node_expense_web
node_expense_web -->|"routes auth"| node_expense_auth
node_expense_web -->|"routes expenses"| node_expense_records
node_expense_web -->|"routes dashboard"| node_expense_dashboard
node_expense_auth -->|"reads and writes"| node_expense_db
node_expense_records -->|"reads and writes"| node_expense_db
node_expense_dashboard -->|"reads records"| node_expense_db
node_expense_web -->|"renders pages"| node_expense_views
node_fx_operator -->|"runs pipeline"| node_fx_fetch
node_fx_fetch -->|"fetches rates"| node_fx_api
node_fx_fetch -->|"stores rates"| node_fx_store
node_fx_fetch -->|"exports history"| node_fx_store
node_fx_store -->|"reads and writes"| node_fx_db
node_fx_eda -->|"reads rates"| node_fx_store
node_fx_eda -->|"writes daily data"| node_fx_exports
node_fx_web -->|"reads latest rates"| node_fx_db
node_fx_web -->|"renders converter"| node_fx_view
node_fx_dashboard -.->|"uses analysis data"| node_fx_exports
node_stock_operator -->|"runs pipeline"| node_stock_pipeline
node_stock_pipeline -->|"downloads prices"| node_yahoo
node_stock_pipeline -->|"loads settings"| node_stock_config
node_stock_pipeline -->|"writes price data"| node_stock_db
node_stock_pipeline -->|"exports curated data"| node_stock_exports
node_stock_dashboard -.->|"uses analysis data"| node_stock_exports

click node_expense_web "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py"
click node_expense_auth "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py"
click node_expense_records "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py"
click node_expense_dashboard "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py"
click node_expense_db "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/instance/pennywise.db"
click node_expense_views "https://github.com/morgan-jo/end2end-da-project/tree/main/Finance%20%26%20Banking/pennywise/templates"
click node_fx_fetch "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fetch_fx.py"
click node_fx_store "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fx_database.py"
click node_fx_db "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/data/fx_rates.db"
click node_fx_eda "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/eda_fx.py"
click node_fx_exports "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/data/fx_rates_daily.csv"
click node_fx_web "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/app.py"
click node_fx_view "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/templates/index.html"
click node_fx_dashboard "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/tableau/FX%20Volatility%20Overview.twb"
click node_stock_pipeline "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/app.py"
click node_stock_config "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/config.py"
click node_stock_db "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/market_data.db"
click node_stock_exports "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/data/price_data_for_tableau.csv"
click node_stock_dashboard "https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/stock_market_insights.twb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_expense_web,node_expense_auth,node_expense_records,node_expense_dashboard,node_expense_db,node_expense_views,node_expense_user toneBlue
class node_fx_fetch,node_fx_store,node_fx_db,node_fx_eda,node_fx_exports,node_fx_web,node_fx_view,node_fx_dashboard toneAmber
class node_stock_pipeline,node_stock_config,node_stock_db,node_stock_exports,node_stock_dashboard toneMint
class node_fx_operator,node_fx_api,node_stock_operator,node_yahoo toneIndigo
```

## Components

### Expense Tracker

- [Expense Web Routes](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py): `Finance & Banking/pennywise/app.py`
- [Account Auth](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py): `Finance & Banking/pennywise/app.py`
- [Expense Records](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py): `Finance & Banking/pennywise/app.py`
- [Monthly Dashboard](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/app.py): `Finance & Banking/pennywise/app.py`
- [Expense Database](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/pennywise/instance/pennywise.db): `Finance & Banking/pennywise/instance/pennywise.db`
- [Expense Views](https://github.com/morgan-jo/end2end-da-project/tree/main/Finance%20%26%20Banking/pennywise/templates): `Finance & Banking/pennywise/templates`

### FX Insights

- [Rate Fetcher](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fetch_fx.py): `Finance & Banking/real-time-fx-insight-hub/fetch_fx.py`
- [FX Database Access](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/fx_database.py): `Finance & Banking/real-time-fx-insight-hub/fx_database.py`
- [FX Rates Database](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/data/fx_rates.db): `Finance & Banking/real-time-fx-insight-hub/data/fx_rates.db`
- [Daily FX Analysis](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/eda_fx.py): `Finance & Banking/real-time-fx-insight-hub/eda_fx.py`
- [FX Analysis Exports](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/data/fx_rates_daily.csv): `Finance & Banking/real-time-fx-insight-hub/data/fx_rates_daily.csv`
- [Converter Web App](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/app.py): `Finance & Banking/real-time-fx-insight-hub/app.py`
- [Converter View](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/templates/index.html): `Finance & Banking/real-time-fx-insight-hub/templates/index.html`
- [FX Tableau Workbook](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/real-time-fx-insight-hub/tableau/FX%20Volatility%20Overview.twb): `Finance & Banking/real-time-fx-insight-hub/tableau/FX Volatility Overview.twb`

### Stock Analysis

- [Price Analysis Pipeline](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/app.py): `Finance & Banking/stock-market-price-explore/app.py`
- [Analysis Settings](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/config.py): `Finance & Banking/stock-market-price-explore/config.py`
- [Market Data Database](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/market_data.db): `Finance & Banking/stock-market-price-explore/market_data.db`
- [Tableau Data Exports](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/data/price_data_for_tableau.csv): `Finance & Banking/stock-market-price-explore/data/price_data_for_tableau.csv`
- [Stock Tableau Workbook](https://github.com/morgan-jo/end2end-da-project/blob/main/Finance%20%26%20Banking/stock-market-price-explore/stock_market_insights.twb): `Finance & Banking/stock-market-price-explore/stock_market_insights.twb`

### Other components

- **Expense User**
- **Pipeline Operator**
- **Open Exchange Rates**
- **Pipeline Operator**
- **Yahoo Finance**

## Connections

- Expense User → Expense Web Routes: submits requests
- Expense Web Routes → Account Auth: routes auth
- Expense Web Routes → Expense Records: routes expenses
- Expense Web Routes → Monthly Dashboard: routes dashboard
- Account Auth → Expense Database: reads and writes
- Expense Records → Expense Database: reads and writes
- Monthly Dashboard → Expense Database: reads records
- Expense Web Routes → Expense Views: renders pages
- Pipeline Operator → Rate Fetcher: runs pipeline
- Rate Fetcher → Open Exchange Rates: fetches rates
- Rate Fetcher → FX Database Access: stores rates
- Rate Fetcher → FX Database Access: exports history
- FX Database Access → FX Rates Database: reads and writes
- Daily FX Analysis → FX Database Access: reads rates
- Daily FX Analysis → FX Analysis Exports: writes daily data
- Converter Web App → FX Rates Database: reads latest rates
- Converter Web App → Converter View: renders converter
- FX Tableau Workbook → FX Analysis Exports: uses analysis data
- Pipeline Operator → Price Analysis Pipeline: runs pipeline
- Price Analysis Pipeline → Yahoo Finance: downloads prices
- Price Analysis Pipeline → Analysis Settings: loads settings
- Price Analysis Pipeline → Market Data Database: writes price data
- Price Analysis Pipeline → Tableau Data Exports: exports curated data
- Stock Tableau Workbook → Tableau Data Exports: uses analysis data
