Views
Views are self-contained directories that produce dashboards, reports, or visualizations from your metrics data. Each view has a render.sh script as the contract — velocirepo handles discovery and orchestration, while rendering is delegated to whatever tools the view needs.
Structure
A view is any directory under views/ that contains a render.sh file:
views/
weekly-stars/
render.sh # the render contract (executable)
pyproject.toml # Python dependencies (managed by uv)
view.qmd # the actual view file
monthly-report/
render.sh
pyproject.toml
app.py # marimo notebook
r-summary/
render.sh
view.R
Quick start
# Scaffold a Quarto view (creates directory with render.sh, view.qmd, pyproject.toml)
velocirepo add-view weekly-stars --framework quarto-python
# Install dependencies
velocirepo setup-views
# Render the view (rebuilds DuckDB, then runs render.sh)
velocirepo render-view weekly-stars
# Or start a live dev server (requires serve.sh in the view)
velocirepo serve-view weekly-starsSupported frameworks
| Framework | Flag | View file | render.sh runs |
|---|---|---|---|
| Quarto (Python) | -f quarto-python |
view.qmd |
uv run quarto render view.qmd |
| Quarto (R) | -f quarto-r |
view.qmd |
ir render view.qmd |
| Jupyter | -f jupyter |
view.ipynb |
uv run jupyter nbconvert ... |
| Marimo | -f marimo |
app.py |
uv run marimo export html app.py |
| R | -f r |
view.R |
ir run view.R |
| ggsql | -f sql |
view.sql |
ggsql run view.sql |
R views (-f r and -f quarto-r) render through ir, which resolves the packages declared in the view’s frontmatter into a cached, reproducible library. Install ir once; it bootstraps renv/pak on first render, so R views need no separate setup step.
Data access
Views connect to velocirepo.duckdb by default (via a relative path embedded at scaffold time). The DB is rebuilt before every render, so views always see fresh data.
For views that need Parquet files instead, use --source parquet when scaffolding and call velocirepo export in the view’s own render.sh.
Flags for add-view
| Flag | Description |
|---|---|
-f, --framework |
Framework: quarto-python, quarto-r, jupyter, marimo, r, sql (required) |
-s, --source |
Data source: duckdb (default) or parquet |
--no-uv |
Skip pyproject.toml generation |
Rendering
velocirepo render-view weekly-stars # render one view
velocirepo render-views # render all views
velocirepo render-views reports # render views matching a prefixSetup and CI
# Install dependencies for all views (runs uv sync for Python views;
# R views bootstrap automatically on first render via ir)
velocirepo setup-viewsIn GitHub Actions:
- name: Setup views
run: velocirepo setup-views
- name: Render views
run: velocirepo render-views