- OpenTofu (1.6+) or Terraform (1.6+)
- kubectl (1.28+)
- helm (3.0+)
- minikube (1.30+)
- Docker or Podman
- Ansible (2.9+)
If you have Nix installed, all dependencies are provided via nix develop.
Links for the requirements
https://www.python.org/downloads
Pyenv allows developers to install multiple versions of Python distribution and easy switching between the installed versions.
Website: https://github.com/pyenv/pyenv?tab=readme-ov-file#installation
Poetry is used for dependency management of the Python packages.
https://python-poetry.org/docs/#installation
https://podman.io/docs/installation
https://docs.docker.com/engine/install
The deployment settings for both local (testing) and production environments can be found in terraform/environments folder.
- Start minikube
Note: If you already have a kubernetes cluster, you can skip this step.
minikube start --cpus='4' --memory='4g'-
Deploy
make deploy ENV=local
-
Verify pods are running
make status
-
Access services
On a separate terminal do port forwarding to be able to access the service
make port-forward-
Deploy preconfigured dashboards
make setup-dashboards ENV=local
Then open:
- Superset: http://localhost:8088
- PostgREST API: http://localhost:3000
- PostgREST API Docs: http://localhost:3001
- Auth Service: http://localhost:8000
- Auth Service API Docs: http://localhost:8001
- Demo Portal: http://localhost:8080
Service credentials are auto-generated during deployment and stored securely in Kubernetes secrets. To retrieve them:
./scripts/show-access.shThis displays:
- PostgreSQL connection details
- Superset admin login
- JWT secret for token signing
You can also retrieve individual credentials with kubectl:
# PostgreSQL password
kubectl get secret dashverse-secrets -n dashverse -o jsonpath='{.data.postgres-password}' | base64 -d
# Superset admin password
kubectl get secret dashverse-secrets -n dashverse -o jsonpath='{.data.superset-admin-password}' | base64 -d| Target | Description |
|---|---|
make deploy |
Build images and deploy all services |
make destroy |
Remove all services |
make status |
Show deployment status |
make port-forward |
Forward ports to localhost |
make logs |
Tail all service logs |
make logs-auth |
Tail auth service logs |
make sync |
Download EVERSE indicators/dimensions |
make sync-apply |
Download and import to database |
make sync-trigger |
Trigger sync cronjob manually |
make jwt |
Generate JWT token (CLI) |
make build-auth |
Build auth-service image |
make setup-dashboards |
Configure Superset dashboards via Ansible |
make seed-data |
Import sample software and assessments |
cd terraform
tofu init
tofu apply -var-file="environments/local.tfvars"# Deploy all services (builds images and applies Terraform)
make deploy ENV=production
# Populate data
make sync-apply
make seed-data
# Configure Superset dashboards
make setup-dashboards ENV=productionThe production configuration (terraform/environments/production.tfvars) includes settings for external URLs used in iframe embedding.
Indicators and dimensions are synced from the EVERSE repository: https://github.com/EVERSE-ResearchSoftware/indicators
The sync runs automatically daily at 2am via a CronJob. To trigger manually:
make sync-triggerOr to sync outside the cluster:
make sync-applyThe Auth Service provides a web interface for user registration and JWT token generation.
- Open http://localhost:8000 (after port-forward)
- Register a new account
- Login and generate an API token
- Use the token for PostgREST write access
Alternatively, generate a token via CLI:
make jwtInteractive API documentation is provided using Scalar:
- PostgREST API Docs: http://localhost:3001 - Database REST interface with all available endpoints
- Auth Service API Docs: http://localhost:8001 - Authentication endpoints for user management and JWT tokens
The documentation is automatically generated from OpenAPI specifications and includes an interactive request builder.
After deployment, configure Superset with pre-built dashboards using Ansible:
make setup-dashboardsThis creates five role-based dashboards based on RSQKit roles:
- Policy Maker - High-level adoption and compliance overview
- Principal Investigator - Project-level metrics and action items
- Research Software Engineer - Technical metrics and detailed check results
- Researcher Who Codes - Practical guidance and quick improvements
- Trainer - Training insights and best practices
Prerequisites:
- Ansible (2.9+)
- Port forwarding running (
make port-forward) - Superset accessible at localhost:8088
The Superset admin password is automatically retrieved from Kubernetes secrets during setup.
To populate the system with sample software and assessments for testing:
make seed-dataThis fetches software metadata from the EVERSE TechRadar repository and generates sample assessments. The data will appear in the Superset dashboards.
docs/README.dev.md– Developer Notes: Instructions on configuration and deploymentdocs/architecture/README.md– System Architecture: Detailed diagrams of the system, data flow, and security model.docs/Deployment.md– deployment checklist and prerequisites.docs/Kubernetes.md– operational commands for managing the Minikube deployment.docs/Database.md– details of the PostgreSQL schema, assessment mapping, and populate script usage.docs/API_examples.md– practical PostgREST calls, including the multi-step workflow for creating assessments.
Remove all deployed resources:
make destroyDelete the minikube cluster:
minikube stop
minikube delete