Skip to content

App

app = FastAPI(title='OneSecondTrader Dashboard') module-attribute

_static_dir = Path(__file__).parent / 'static' module-attribute

_cleanup_stale_runs()

Mark any leftover 'running' rows as 'aborted' on startup.

Source code in src/onesecondtrader/dashboard/app.py
def _cleanup_stale_runs() -> None:
    """Mark any leftover 'running' rows as 'aborted' on startup."""
    try:
        conn_ctx = connect_runs()
    except FileNotFoundError:
        return
    with conn_ctx as conn:
        conn.execute(
            "UPDATE runs SET status = 'cancelled', ts_end = ts_start WHERE status = 'running'"
        )
        conn.commit()

startup() async

Source code in src/onesecondtrader/dashboard/app.py
@app.on_event("startup")
async def startup():
    ensure_presets_table()
    ensure_explore_presets_table()
    ensure_condition_presets_table()
    ensure_indicator_defaults_table()
    ensure_explorer_sessions_table()
    ensure_data_splits_table()
    _cleanup_stale_runs()

index() async

Source code in src/onesecondtrader/dashboard/app.py
@app.get("/", response_class=RedirectResponse)
async def index():
    return RedirectResponse(url="/explorer", status_code=302)

backtest() async

Source code in src/onesecondtrader/dashboard/app.py
@app.get("/backtest", response_class=HTMLResponse)
async def backtest():
    return backtest_page()

explorer() async

Source code in src/onesecondtrader/dashboard/app.py
@app.get("/explorer", response_class=HTMLResponse)
async def explorer():
    return explorer_page()

splits() async

Source code in src/onesecondtrader/dashboard/app.py
@app.get("/splits", response_class=HTMLResponse)
async def splits():
    return splits_page()

health() async

Source code in src/onesecondtrader/dashboard/app.py
@app.get("/health")
async def health():
    return {"status": "ok"}