TethysDash
This app was created using an experimental Tethys + React app scaffold. It uses React for the frontend of the app and Tethys as the backend. For more detailed information, check the official TethysDash documentation
Quick Installation
- If creating a new python environment, create and activate it
python3 -m venv test_env
source test_env/bin/activate
- Install TethysDash
pip install tethysdash
- Setup Tethys and TethysDash Databases and Services
tethysdash setup
- Start Tethys Portal
tethysdash start
Development Installation
You need to install both the Tethys dependencies and the node dependencies:
- If creating a new python environment, create and activate it
python3 -m venv test_env
source test_env/bin/activate
- Clone the Repo
git clone https://github.com/tethysplatform/tethysapp-tethys_dash
- Install the app in Tethys Platform
cd tethysapp-tethys_dash/
pip install -e .
- Setup Tethys and TethysDash Databases and Services
tethysdash setup
- Install Plugin Examples (not necessary but recommended)
cd ..
git clone https://github.com/FIRO-Tethys/tethysdash_examples
cd tethysdash_examples
pip install -e .
- Start Tethys Portal
tethysdash start
Frontend Development
The webpack dev server is configured to proxy the Tethys development server (see webpack.config.js). The app endpoint will be handled by the webpack development server and all other endpoints will be handled by the Tethys (Django) development server. As such, you will need to start both in separate terminals.
- Install the node and dependencies
cd tethysapp-tethys_dash/
npm install --dev
- Start Tethys development server
tethys manage start
- Start webpack development server (in separate terminal)
npm start
Frontend Build
Webpack is configured to bundle and build the React app into the tethysapp/<app_package>/public/frontend directory. Before building a Python distribution for release, you should build using this command:
npm run build
Note: The compiled frontend in
tethysapp/tethysdash/public/frontend/is not committed to the repository — CI builds it when publishing a release. When running the app from a clone, you must build it yourself first: either runnpm run buildbeforetethysdash start, or use the webpack dev server (npm start) which serves the bundle from memory. Without one of these, Django has no frontend bundle to serve.
Serving the built frontend in development
The production build emits content-hashed filenames (e.g. main.<hash>.js) and a manifest.json mapping logical names to the hashed files. Mode detection is automatic:
- Hit Django directly (e.g.
localhost:8000/apps/tethysdash/) → the page loads the hashed bundle named inmanifest.json, served straight from the app'spublic/frontend/directory. - Hit the webpack dev server (e.g.
localhost:8080) → the dev server proxies the page request to Django with anX-Webpack-Dev-Serverheader. Django detects it and renders the unhashedmain.jsURL, which the dev server serves from memory.
No environment variable or DEBUG toggle is required to switch between the two.
Frontend Test
Use the following commands to lint and test the React portion of the app.
npm run lint
npm run test
The linting capability is powered by eslint and a number of plugins for React. The testing capabilities include jest, jsdom, testing-framework, user-event, and a few other JavaScript testing utilties to make it easy to test the frontend of the React-Tethys app.
Backend Lint and Test
The Python backend is linted with ruff and tested with pytest:
ruff check .
python -m pytest --reuse-db
Continuous Integration and Releasing
CI runs in GitHub Actions (.github/workflows/):
- On every pull request to
main(ci.yml): the frontend (eslint, prettier, jest) and backend (ruff, pytest) suites must pass. - On a version tag (
release.yml): the suite re-runs, then the package is built and published to PyPI.
The package version is dynamic — it is derived from the git tag at build time by setuptools_scm, not stored in pyproject.toml. To cut a release, push a v-prefixed semantic-version tag from main:
git tag v0.19.17
git push origin v0.19.17
This triggers the release workflow, which publishes tethysdash 0.19.17 to PyPI (via PyPI Trusted Publishing) and creates a GitHub Release. Tags must use the v prefix for the workflow to fire.
Metadata
Release files for tethysdash 0.19.27
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tethysdash-0.19.27.tar.gz | 9.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tethysdash-0.19.27-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.9 MB
Release files / tethysdash-0.19.27.tar.gz
| Download URL | tethysdash-0.19.27.tar.gz |
|---|---|
| Size | 9.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
efa79d0a4242e59c0c12ab76283dfcb0e249dd5ea98628872a107f0eab5fbdd8
|
|
BLAKE2b-256 checksum How to use checksums |
c45b3b4ab3075e56387019d0aff105f8dd899d3e85f96aed4891eed399f7c51b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency logRelease files / tethysdash-0.19.27-py3-none-any.whl
| Download URL | tethysdash-0.19.27-py3-none-any.whl |
|---|---|
| Size | 9.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3beaf6c621a0880de368e86179923e50833ac657554e1f15d8258f7ee87e39ea
|
|
BLAKE2b-256 checksum How to use checksums |
f74a9618ad0e518245bc9406fca960d5d2d1796710a170c80961e9dd29113a96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency log