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:
# 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.
cp .env.example .env # set domain + reverse-proxy password hash
docker compose up -d --build docs/DEPLOYMENT.md in the repo for
TLS, SSO, scaling and an nginx alternative.
Importing data
Life-data import uses a simple CSV format:
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.