Skip to content

[v0.3] Create pulseengine/local/ surface with full-feature Streamlit dashboard #33

@Codex-Crusader

Description

@Codex-Crusader

Parent Issue

Part of #31 — v0.3 Repo Restructure

Depends on #32core/ 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:

  • All 24 current tracked assets
  • Signal score + explanation
  • Price chart
  • News sentiment feed
  • Market heatmap
  • Category overview
  • Arbitrary ticker lookup (tracked in the separate arbitrary ticker issue)
  • Backtesting
  • Historical snapshots
  • Export to CSV / PDF (tracked in v0.5 — placeholder OK for now)
  • Offline mode (tracked in v0.5 — placeholder OK for now)

Acceptance Criteria

  • pulseengine/local/dashboard.py launches correctly with streamlit run pulseengine/local/dashboard.py
  • Dashboard renders all existing asset categories and signal views without regression
  • pulseengine/local/scan.py runs full 24-asset scan and writes snapshots correctly
  • pulseengine/local/__init__.py present
  • No direct imports from dashboard/ old path remain
  • All existing tests pass

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions