Skip to content

[v0.3] Create pulseengine/web/ surface with restricted Streamlit demo build #34

@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 web demo currently runs off the same dashboard/main.py as the local app. Under the v0.3 restructure, pulseengine/web/ becomes its own dedicated surface — a deliberately stripped-down Streamlit app that imports from core/ but enforces the constraints required for Streamlit Community Cloud deployment.

The web demo's only job is to give visitors a taste of the tool and send them to the local download.

Hard Constraints for web/

These are non-negotiable — violations break the Streamlit Community Cloud deployment model:

  • No local model inference — no FinBERT, no heavy ML models
  • No file I/O — cannot write to disk, no snapshot persistence
  • No state between requests — each session is stateless
  • No backtesting — compute is too heavy for free tier
  • No arbitrary ticker lookup — local-only feature

Locked Feature UX

Every feature that exists in local/ but not web/ must display a clear prompt to download the local app. The ROADMAP specifies: "Locked features in the web demo display a prompt to download the local app."

Files to Create

File Purpose
pulseengine/web/dashboard.py Restricted Streamlit demo — imports from core/, no heavy ops
pulseengine/web/__init__.py Package init

Feature Matrix for web/

Feature Include in web/?
All 24 tracked assets Yes
Signal score + explanation Yes
Price chart Yes
News sentiment feed Yes
Market heatmap Yes
Category overview Yes
Arbitrary ticker lookup No — show download prompt
Backtesting No — show download prompt
Historical snapshots No — show download prompt
Export to CSV / PDF No — show download prompt
FinBERT local model No — show download prompt
Custom RSS feeds No — show download prompt
Offline mode No — show download prompt

Acceptance Criteria

  • pulseengine/web/dashboard.py deploys on Streamlit Community Cloud without errors
  • All 24 tracked assets display correctly with live signal scores
  • Locked features show a clear "Download the local app" call-to-action
  • No file system writes occur at any point in the web session
  • No imports from local/ (only from core/)
  • pulseengine/web/__init__.py present
  • No user data is stored or persisted anywhere (privacy commitment per ROADMAP)

Privacy Note

From the ROADMAP: "We store nothing. Ever. The web demo is architecturally incapable of retaining user data." This constraint must be maintained in the implementation.

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