Parent Issue
Part of #31 — v0.3 Repo Restructure
Depends on #32 — core/ must be in place before this work begins.
Context
The current dashboard/ directory contains the full Streamlit dashboard (main.py, components.py, styles.py, data.py), and app/scan.py handles the full-market batch scan. Under the v0.3 restructure these all move into pulseengine/local/.
local/ is the full-power surface — it can be heavy. FinBERT, backtesting, snapshot storage, large file I/O — all fine here. No size or compute apologies.
Files to Move / Create
| Current Path |
Target Path |
dashboard/main.py |
pulseengine/local/dashboard.py |
dashboard/components.py |
pulseengine/local/components.py |
dashboard/styles.py |
pulseengine/local/styles.py |
dashboard/data.py |
pulseengine/local/data.py |
app/scan.py |
pulseengine/local/scan.py |
All imports from core/ are used via pulseengine.core.*.
Feature Completeness
local/ must expose every feature listed as "Yes" in the Local App column of the ROADMAP feature table:
Acceptance Criteria
Notes
Locked features (arbitrary ticker, FinBERT, export, offline) should display a "coming soon" or greyed-out placeholder in the UI where the roadmap calls for them — do not silently omit them.
Parent Issue
Part of #31 — v0.3 Repo Restructure
Context
The current
dashboard/directory contains the full Streamlit dashboard (main.py,components.py,styles.py,data.py), andapp/scan.pyhandles the full-market batch scan. Under the v0.3 restructure these all move intopulseengine/local/.local/is the full-power surface — it can be heavy. FinBERT, backtesting, snapshot storage, large file I/O — all fine here. No size or compute apologies.Files to Move / Create
dashboard/main.pypulseengine/local/dashboard.pydashboard/components.pypulseengine/local/components.pydashboard/styles.pypulseengine/local/styles.pydashboard/data.pypulseengine/local/data.pyapp/scan.pypulseengine/local/scan.pyAll imports from
core/are used viapulseengine.core.*.Feature Completeness
local/must expose every feature listed as "Yes" in the Local App column of the ROADMAP feature table:Acceptance Criteria
pulseengine/local/dashboard.pylaunches correctly withstreamlit run pulseengine/local/dashboard.pypulseengine/local/scan.pyruns full 24-asset scan and writes snapshots correctlypulseengine/local/__init__.pypresentdashboard/old path remainNotes
Locked features (arbitrary ticker, FinBERT, export, offline) should display a "coming soon" or greyed-out placeholder in the UI where the roadmap calls for them — do not silently omit them.