Browser front door

Unified shell for auth and operations.

One route model, one visual language, and one explicit session state. This screen starts with browser authentication, then hands off into the same shell for portfolio, strategies, data, backtest, paper trading, and live trading.

Auth status
Signed in / locked / expired
Access level
Read / admin
Session source
API key / saved session
Last authenticated
2026-06-21 09:34 UTC
Unlock

Authenticate the browser.

Read-only access should be obvious, admin access should be deliberate, and the browser must never confuse a locked session with a live one.

Enter your UI password to start a 30-day browser session.

Legacy routes are still reachable, but they redirect into this shell after auth.

Authentication error

The session did not unlock.

The browser should say what failed without exposing secrets. Keep the message short, safe, and recoverable. This state is for bad credentials, missing session material, or a denied access level.

Failure mode
Invalid credentials
Recoverable
Yes
Auth failed

Could not verify the session.

The browser could not confirm the supplied credentials. Try again or switch to a saved session if one exists for this device.

Session lock

The browser session expired.

Expired should feel distinct from failed. The browser is still intact, but the session state needs to be refreshed before protected routes can be shown again.

Current state
Locked
Last authenticated
2026-06-21 09:34 UTC
Expired

Session refresh required.

Sign in again or clear local auth state to continue. The product should make it clear that the browser is locked, not broken.

Unified shell
loading / session handshake
Auth: Checking Access: Read Source: API key Last authenticated: 2026-06-21 09:34 UTC
Balance
Active Strategy
Open Positions
Daily PnL
Cumulative PnL
Loading state

The dashboard shell is present.

Avoid a blank page. The summary grid, section chrome, and the positions surface should load before live data arrives so the browser never looks dead.

Unified shell
overview / portfolio
Auth: Signed in Access: Read Source: API key Last authenticated: 2026-06-21 09:34 UTC
Session / saved profile Portfolio / healthy Last updated / 2026-06-21 09:34 UTC
Balance
1,250.00 USDC
Live snapshot from the portfolio ledger.
Active Strategy
SolTrend
Read-only while the browser is in read access.
Open Positions
2
Rows below include entry, current price, amount, and opened time.
Daily PnL
+40.00 USDC
Positive values are green and retain the sign.
Cumulative PnL
+184.50 USDC
Cumulative performance across the active session.

Open positions

Operational rows with enough spacing to scan quickly.

Two positions shown. Rows can expand for extra detail.

Filter
Last Updated 2026-06-21 09:34:45 UTC
Symbol Entry Price Current Price Amount Unrealized PnL Opened At
145.20 148.10 12.500000 +36.25 USDC 2026-06-14 17:52:10 UTC
Stop context
Managed by strategy, not the UI.
Marking
Unrealized gain / +2.00%
Condition
Held through a trend continuation window.
Opened by
SolTrend / production
Stop context
Managed by strategy, not the UI.
Marking
Unrealized loss / -2.36%
Condition
Retracement after momentum break.
Opened by
SolTrend / production
Unified shell
strategies / lifecycle
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Lifecycle / production, staging, retired Default action / view only in read access
Strategy Count
4
Active, staging, shadow, retired.
Production
1
Only one live production strategy is visible.
Editable Weight
0.60
Editable when access is admin; read access shows the field disabled.
Retired
1
Retired rows remain collapsed in archive view.
Last Refresh
on entry
Strategies refresh on entry and after explicit actions.

Lifecycle table

Promote / retire / view YAML, with access-sensitive controls.

Read access keeps the action cluster visible but disabled.

Stage
Scope Unified route / management
Strategy Name Lifecycle Stage Allocation Weight Created At Actions
SolTrend production 0.60 2026-06-14
MeanRevert staging 2026-06-15
BreakoutShadow shadow 2026-06-17
MeanRevert Legacy retired 0.00 2026-05-28

Access-sensitive actions

Visible, readable, but not misleading when the browser is in read access.

Management actions

Inline editing is present, but access decides whether it is live.

The weight field stays visible so the layout still communicates the edit point, yet the browser can clearly show that the action is disabled until admin access is granted.

Unified shell
data / coverage and health
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Coverage %
83%
Per pool, from the live data snapshot.
Candle Count
523,411
Per pool. Updated on entry and after user actions.
Gap Count
3
Only suspect gaps are surfaced.
Provider Health
OK
Can also show rate limited or auth error.
Pool Enabled
On
Management control shown without implying buy/sell.

Coverage & download

Operational data panel with explicit download state.

Pool level

Coverage is visible before the data starts moving.

The page should communicate whether the pool is healthy, partially covered, or delayed. Download controls stay visible, but they are not trade actions.

Loading coverage…
Idle no background transfer running
Unified shell
backtest / job status
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Backtest Job
Running
Status card for job lifecycle.
ROI
+12.3%
Result metric, green when positive.
Win Rate
61.5%
Result metric with no extra decoration.
History
18
Expandable history rows live below.
Last Refresh
on entry
Refreshes on page entry and after explicit user actions.

Backtest history

Minimal, readable, and operational.

Job Status ROI Win Rate History
SolTrend June sweep running +12.3% 61.5% 2026-06-14 18:30
Mean reversion profile completed +8.4% 58.1% 2026-06-13 16:10
Momentum filter test failed -1.2% 42.0% 2026-06-11 11:22
Unified shell
paper trading / live session panel
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Session State
Running
Paper session is active and readable.
Strategy
SolTrend
Read-only while the session is running.
Balance
10,234.50 USDC
Live value refreshed every 5 seconds while active.
Open Position
SOL @ $148.20
May be none; this snapshot has one.
Trade Count
12
Simple live counter, not a chart.
Paper trading

Simulation should feel like the live shell, just without real funds.

Keep the running, stopped, starting, and error states explicit. The shell must feel like one product, not a separate demo tool.

Unified shell
live trading / warning banner
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Live trading

REAL FUNDS are always visible in the layout.

This screen should warn, not embellish. The banner stays on the page, the session state is explicit, and live values update without implying execution controls in the UI.

real funds running read access
Session State
Running
The banner remains visible in all live states.
Balance
10,234.50 USDC
Live value with no buy/sell controls.
Unrealized PnL
+34.50 USDC
Color plus sign and label make meaning redundant.
Trade Count
12
Simple live counter.
Open Position
SOL @ $148.20
May be none depending on session state.
Unified shell
empty / no active strategy
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Balance
Active Strategy
None
Open Positions
0
Daily PnL
Cumulative PnL
No active strategy is currently selected.

Portfolio data will appear after a strategy is activated. Keep this state calm and clear so users know the shell is working even when no portfolio snapshot is available.

inactive portfolio hidden until activation
Unified shell
overview / no open positions
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Balance
1,250.00 USDC
Active Strategy
SolTrend
Open Positions
0
Daily PnL
+40.00 USDC
Cumulative PnL
+184.50 USDC
There are no open positions right now.

The summary metrics remain visible, but the positions section explains that the portfolio is flat. Keep the state present and data-first instead of hiding the section.

strategy active positions empty
Unified shell
error / safe recovery
Auth: Signed in Access: Read Last authenticated: 2026-06-21 09:34 UTC
Temporary issue

We could not load the latest snapshot.

The browser should expose a short, safe error message and a visible retry action. Do not add stack traces, secrets, or operational detail that could confuse a read-only session.

Unified shell
legacy route redirect
Status: Redirecting Target: Unified shell
Legacy routes are compatibility aliases.

The browser should move immediately from the old split-surface URLs into the unified shell. Keep the routing path understandable, explicit, and short-lived.

/monitoring-dashboard/ legacy read-only route /app/overview
/management/ legacy control route /app/strategies
/auth/ legacy entry point /app/unlock