EXDA Dashboard is a full-stack research application for hydrogen explosion experiments, CFD validation, and literature-assisted analysis. It combines a React frontend, a Flask backend, scientific data-processing modules, and optional AI-assisted workflows in a single workspace.
The goal of the app is to make it easier to move from project setup, to experiment planning, to signal analysis, to reporting without bouncing between separate tools.
- Project creation and recovery for a standard research folder structure
- Experiment planning and workspace persistence
- Import of experimental and simulation data
- Pressure analysis, CFD validation, flame speed analysis, and EWT workflows
- AiRA, an optional AI research assistant for literature and project context
- Smoke, frontend, and backend tests for day-to-day validation
- Node.js 18+
- npm
- Python 3.10+
- Ollama, optional, for local AiRA model support
Users can prepare EXDA from a repository checkout with a one-time setup file for their operating system, then use the launcher normally afterwards.
Setup once:
Linux: Setup-EXDA-LINUX.sh
macOS: Setup-EXDA-MAC.command
Windows: Setup-EXDA-WIN.bat
Then run EXDA with the launcher:
Linux: Run-EXDA-LINUX.sh
macOS: Run-EXDA-MAC.command
Windows: Run-EXDA-WIN.bat
The setup script will:
- create or repair
.venv - install npm dependencies
- install backend Python requirements
- install optional feature requirements
- verify the installation
The launcher will then:
- check for required tools and packages
- report anything missing
- start the backend
- start the frontend
- open EXDA in the browser
Full launcher notes are in RUN_EXDA.md.
If you do not want to use the setup scripts, you can still install everything manually.
From the repository root:
npm install
python3 -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
# Optional extras:
# pip install -r backend/requirements-optional.txtThe simplest way in this repo is:
./run exdaOn Windows Command Prompt, use:
run exdaOn Windows PowerShell, use:
.\run.cmd exdaThat wrapper runs the app's browser-first launcher for you.
If you want to start the services manually instead, use the two-terminal flow below.
Start the backend:
source .venv/bin/activate
python backend/app.pyIn a second terminal, start the frontend:
npm run devOpen the app at http://localhost:5173.
# Simplest local startup (Linux/macOS)
./run exda
# Simplest local startup (Windows cmd.exe)
run exda
# Browser-first launcher docs
# See RUN_EXDA.md
# Frontend dev server + backend helper scripts
npm run dev
# Production frontend build
npm run build
# Lint frontend code
npm run lint
# Backend calculation tests
npm run test:backend
# Frontend unit tests
npm run test:frontend
# End-to-end tests
npm run test:e2e
# Main smoke test
npm run smoke
# Full test suite
npm run test:all
# Open Playwright HTML report
npm run test:reportEXDA Dashboard uses a decoupled client-server setup.
- React SPA powered by Vite
- React Router-based workspace and page navigation
- Recharts and custom plotting components for research visualisation
- Tailwind-based styling and app shell UI
- Keyboard shortcuts overlay, opened with
? - Playwright-based smoke and end-to-end coverage
Key entry points:
frontend/src/main.jsxfrontend/src/app/AppShell.jsxfrontend/src/features/workspace/WorkspacePage.jsx
- Flask REST API for project operations and analysis endpoints
- NumPy-based scientific calculations for pressure and related metrics
- Project-state loading, rehydration, and folder management
- Optional AiRA routes for model-backed research workflows
Key backend files:
backend/app.pybackend/routes/calculation_api_routes.pybackend/routes/projects.pybackend/routes/state.pybackend/routes/ai.py
Core analysis modules:
backend/modules/pressure_analysis.pybackend/modules/flame_analysis.pybackend/modules/ewt_analysis.pybackend/modules/plot_interpolation.py
Each research project follows a predictable structure so the app can recover state and route files consistently:
Plan/Raw_Data/Clean_Data/Literature/aiChat/
Inside Literature/, the app expects:
Books/Papers/Standards/
The repository also keeps appsTestEnviroment/ as a recoverable skeleton for expected folder structure.
- Unified navigation across Home, Projects, Verification, AiRA, and workspace tabs
- Experiment planning with saved JSON state and recovery
- Explicit import paths for experiment and simulation datasets
- Pressure analysis and CFD comparison workflows
- EWT and flame speed analysis views
- Literature and report pages tied to project context
- AiRA context awareness from both project state and repository context
- Recent projects and quick resume workflow
This repository has three main test layers:
- Backend calculations:
backend/tests/test_calculations_reference.py - Frontend unit tests:
frontend/tests/*.test.js - Playwright end-to-end tests:
tests/e2e/*.spec.ts
npm run test:backend
npm run test:frontend
npm run test:e2e
npm run smoke
npm run test:all- Playwright output is written to
test-report-results/ playwright.config.tsstarts both the frontend and backend smoke servers automatically- Open the HTML report with:
npm run test:reportFor more test details, see tests/README.md.
AiRA is the app's research assistant workflow. It can use:
- Project overview and current app context from the frontend
- Repository context from backend endpoints such as
/app_repo_context - Optional local model access through Ollama
Relevant files:
frontend/src/pages/AiRA.jsxbackend/routes/ai.py
If Ollama is not installed, the rest of the app can still run, but AI features will be limited.
This project uses git tags for releases instead of versioned folders.
See VERSIONING.md for the exact workflow, examples, and tag naming guidance.
- If backend startup fails, make sure the virtual environment is activated and
backend/requirements.txtis installed. - If AiRA features are unavailable, check whether Ollama and any optional backend dependencies are installed.
- If PDF-related AI features are limited, install the optional backend requirements.
- If frontend tooling behaves strangely on shared or synced folders, check for macOS sidecar files such as
._*and.DS_Store, which can interfere with JS tooling. - If you need a packaged desktop build rather than the normal browser-first workflow, see PACKAGING.md.