Get Started

Up and running in minutes

Perdura runs as a FastAPI backend serving a React frontend. Install it on your own machine, or host a single stateless container for the team.

Prerequisites

  • Python 3.10+
  • Node.js 20+ and npm (CI and the Docker image build on Node 24 LTS)

Local installation

Clone the repository, then run the three steps below from the project root:

bash
# 1. Backend Python environment
python3 -m venv .venv
source .venv/bin/activate            # Windows: .venv\Scripts\activate
pip install -r gui/backend/requirements.txt

# 2. Front-end dependencies
cd gui/frontend && npm install && cd ../..

# 3. Launch app — API on :8000, UI on :5173
bash gui/start.sh

Then open http://localhost:5173 in your browser. That’s it — no database to provision, no accounts to create.

Self-host for a team

Perdura’s backend is stateless, so one container behind a TLS-terminating, authenticating reverse proxy can serve an entire team — no per-user installs.

bash
cp .env.example .env      # set domain + reverse-proxy password hash
docker compose up -d --build
Heads up: the app has no built-in authentication. A central deployment must sit behind the provided reverse proxy, a VPN, or a network allowlist. See docs/DEPLOYMENT.md in the repo for TLS, SSO, scaling and an nginx alternative.

Importing data

Life-data import uses a simple CSV format:

data.csv
value,type
100,F
150,F
200,S

type is F for a failure or S for a suspension (right-censored). Omit the column and every row is treated as a failure. Statistical Modeling, MSA and Hypothesis Tests also accept CSV/TSV import with auto-detected delimiters, plus manual entry and spreadsheet paste.

A note on licensing

Perdura is free for personal, academic and other non-commercial use under the PolyForm Noncommercial License 1.0.0. Commercial use requires a separate paid license — see the license page or email djtroyal@gmail.com.