Web application for visualizing WHOI Spray autonomous underwater glider deployments. Built with Dash, Plotly, and Flask. Displays real-time and archived glider tracks, sensor profiles, and research publications.
The app runs in Docker on racing at /opt/gliderapp.
ssh racing
cd /opt/gliderapp
git fetch && git pull
docker compose up --build --force-recreate -dThis builds a Python 3.12 image, installs dependencies, and starts gunicorn on port 8050. The container restarts automatically unless explicitly stopped.
If the codebase changes, these are also the steps needed to deploy the code changes.
- Port: 8050
- WSGI server: gunicorn
- Volumes:
./dataand./configare mounted read-only into the container - Environment:
PROD=1andDEBUG=0are set incompose.yml
Config files live in config/ and are mounted into the container at runtime.
Changes take effect after restarting the container (docker compose up --force-recreate -d).
| File | Purpose |
|---|---|
config/homepage.html |
Home page content (rendered as raw HTML) |
config/datapage.html |
Data page content (rendered as raw HTML) |
config/people.yml |
Team members — names, roles, emails, websites, and portrait image filenames |
config/people-imgs/ |
Portrait images referenced by people.yml |
config/map_regions.yml |
Map view presets (center coordinates, zoom level) |
config/publications.html |
Publications list (generated by the bibtex module — see below) |
Set in compose.yml for production; override in .env for local development.
| Variable | Default | Description |
|---|---|---|
PROD |
1 |
Enables production routing (/dashapp/ prefix) |
DEBUG |
0 |
Debug mode |
PORTRAITS_DEFAULT |
default.jpg |
Fallback portrait image |
PUBLICATIONS_HTML_PATH |
config/publications.html |
Path to publications HTML |
HOME_HTML_PATH |
config/homepage.html |
Path to home page HTML |
DATAPAGE_HTML_PATH |
config/datapage.html |
Path to data page HTML |
Run the app directly with Python (no Docker needed):
PROD=0 DEBUG=1 python src/app.pyThe app will be available at http://localhost:8050.
The bibtex/ directory contains a pipeline for converting a BibTeX bibliography into
formatted HTML for the publications page.
- pandoc — install with
sudo apt install pandoc pandoc-citeproc(Debian/Ubuntu) - Python 3 environment with
beautifulsoup4andlxml
./bibtex/bib2html.sh bibtex/input/refs.bibThis generates bibtex/output/publications.html. To write directly to config:
./bibtex/bib2html.sh bibtex/input/refs.bib config/publications.html- pandoc converts the
.bibfile to HTML using the AGU citation style (american-geophysical-union.csl). Thefrontmatter.mdfile includesnocite: '@*'so all entries are rendered. - reformat.py post-processes the HTML:
- Groups references under year headings (newest first)
- Cleans up DOI links (
https://doi.org/10.xxxx/yyy→doi: 10.xxxx/yyy) - Bolds author names listed in
bibtex/input/bold_authors.txt - Strips
<html>/<body>tags for embedding
bibtex/
├── input/
│ ├── refs.bib # Main bibliography
│ └── bold_authors.txt # Authors to bold (one per line, e.g. "Todd, R. E.")
├── output/
│ └── publications.html # Generated output
├── american-geophysical-union.csl # Citation style
├── frontmatter.md # Pandoc frontmatter
├── bib2html.sh # Conversion script
└── reformat.py # Post-processing script
- Edit
bibtex/input/refs.bib(add/remove BibTeX entries) - Run
./bibtex/bib2html.sh bibtex/input/refs.bib config/publications.html - Commit and deploy
docker compose up --force-recreate -d