FAIRS is a research web application for roulette training and inference experiments. It includes:
- A FastAPI backend for dataset ingestion, training orchestration, checkpoint management, inference sessions, and persistence.
- A React + Vite frontend for training and inference workflows.
- An optional Tauri desktop shell for packaged Windows distribution.
Run from repository root:
start_on_windows.batThe launcher prepares local runtimes/dependencies and starts backend + frontend.
Prerequisites:
- Rust installed with default toolchain configured (
rustup default stable). - Local runtimes already prepared at least once:
start_on_windows.batBuild desktop artifacts:
release\tauri\build_with_tauri.batBuild output:
release/windows/installersrelease/windows/portable
Versioned desktop source/configuration lives under app/src-tauri and should contain only Tauri source code, configuration, icons, capabilities, and required build metadata such as Cargo.toml, Cargo.lock, build.rs, and tauri.conf.json.
Generated desktop outputs under app/src-tauri/target, app/src-tauri/bundle, app/src-tauri/gen, and release/windows are not committed to Git. Windows .exe installers and portable binaries are published through release artifacts, not tracked in the repository.
Runtime profile files:
- Template:
settings/.env.example - Active profile:
settings/.env - Non-database backend settings:
settings/configurations.json
Initialize .env once:
copy /Y settings\.env.example settings\.envUse .env for runtime variables and all database settings; use configurations.json only for non-database backend settings such as job polling and device defaults. A database block in configurations.json is invalid and rejected at startup.
Database backend selection is defined in settings/.env (EMBEDDED_DATABASE).
SQLite(EMBEDDED_DATABASE=true):- The application initializes the database automatically on startup only when
app/resources/database.dbis missing. - Initialization creates schema objects and seeds required data.
- If
database.dbalready exists, startup skips initialization.
- The application initializes the database automatically on startup only when
PostgreSQL(EMBEDDED_DATABASE=false):- The application does not initialize PostgreSQL automatically during startup.
- Initialization is manual via:
setup_and_maintenance.batSelect Initialize database to run app/scripts/initialize_database.py.
app/scripts/initialize_database.py can also initialize SQLite when SQLite mode is selected, but this is normally unnecessary because SQLite initialization is already handled automatically by app startup.
- Start the app:
start_on_windows.bat - Open the UI and upload or generate dataset data.
- Run training and manage checkpoints.
- Start inference sessions using a selected checkpoint.
- Optionally package a desktop build with Tauri when needed.
Run full automated tests:
app\tests\run_tests.batOptional direct pytest commands:
uv run pytest -q app/tests/unit
uv run pytest -q app/tests/e2eUse:
setup_and_maintenance.batAvailable maintenance actions include log cleanup, local uninstall/runtime cleanup, desktop build artifact cleanup, and database initialization.
Desktop build cleanup removes generated output directories only; it does not delete app/src-tauri source/config files.
- Application data and artifacts:
app/resources - Launcher-managed runtimes and environment:
runtimes
Detailed operational guidance is available in:
assets/docs/project_index.mdassets/docs/operations/quick_start.mdassets/docs/operations/workflows.mdassets/docs/operations/troubleshooting.mdassets/docs/runtime/startup.mdassets/docs/runtime/deployment.mdassets/docs/architecture/system_overview.md
Desktop view of dataset upload, dataset selection, checkpoint panels, and the live training monitor.
Mobile rendering of the same training workspace with the controls stacked for a narrow viewport.
Inference controls for checkpoint and dataset pairing with session history.
This project is licensed under the MIT License. See LICENSE for details.


