Technology by Release
Dendra has refined its technology choices with each major release to better address growing demands around scale, reliability, and developer productivity. The table below shows how the stack has progressed from Release 1 through Release 3:
| Technology | Release 1 | Release 2 | Release 3 |
|---|---|---|---|
| Web applications | |||
| UI framework | Vue 2 | Vue 2 | Vue 3 |
| UI component library | Bootstrap | Vuetify 2 | Vuetify 3 |
| Frontend language | JavaScript | JavaScript | TypeScript |
| Build tool | Webpack | Nuxt 2 | Vite |
| API client | REST (Feathers) | REST (Feathers) | Connect |
| App delivery | Node.js SSR | Static SPA | Static SPA |
| Authentication | |||
| Identity provider | Auth0 or Keycloak | Auth0 or Keycloak | |
| Browser sign-in & session | Passport JWT | Auth0 / Keycloak → Passport JWT | OIDC, encrypted session cookie |
| API authorization | Passport JWT (Bearer) | Passport JWT (Bearer) | JWT (Bearer), API keys |
| Backend services | |||
| Platform runtime | Node.js | Node.js (all backend services) | Go |
| API framework | Feathers (Express) | Feathers (Express) | Connect |
| API style | REST | REST | RPC (over HTTP, gRPC) |
| API schema / contract | JSON Schema | JSON Schema | Protocol Buffers (Buf Schema Registry) |
| API service | Node.js process | Node.js process (+ in-process threads) | Dendra API Server |
| Additional services | Aggregate, Archive, NOAA NWS API | Archive API, NOAA NWS API, Generic Webhook, GitHub Webhook | |
| Job processing | |||
| Job processing framework | Moleculer | Dendra custom | |
| Job scheduler | Moleculer + Bull | Dendra Job Scheduler | |
| Background processing | Moleculer nodes | Dendra workers | |
| Event message broker | NATS | NATS | |
| Data pipeline processing | |||
| Worker processing | Nodes.js processes | Nodes.js processes | Dendra workers |
| Worker types | aggregate, annotation, archive, dpe, import | archive, csi, databot, goes, hobo, load, transform | backend, extract, transform, load |
| Durable message broker | NATS Streaming | NATS Streaming | NATS JetStream |
| Languages & libraries | |||
| Primary backend language | JavaScript | JavaScript | Go |
| Primary frontend language | JavaScript | JavaScript | TypeScript |
| Expression / transformation language | JavaScript (math.js, JSONata) | AssemblyScript (TypeScript-like syntax, compiles to WebAssembly) | |
| Units conversion | JavaScript (math.js) | The Units library | |
| Ops & migration tooling | JavaScript, den CLI | Python | |
| Data stores | |||
| Metadata database | MongoDB | MongoDB | MongoDB (replica set) |
| Time-series database | InfluxDB | InfluxDB (multiple instances) | InfluxDB (multiple instances) |
| Legacy time-series store | MySQL | MySQL | Possible with Data Layers |
| Key-value store | Redis | NATS JetStream KV | |
| Object / file storage | MinIO / S3-compatible | MinIO / S3-compatible, migrating to Google Cloud Storage | |
| Raw data archive | File system (JSON files) | File system (JSON files) | djafs (JSON files) |
| Search & ancillary | |||
| Search engine | Meilisearch (planned) | ||
| Maps | Google Maps | Google Maps | |
| Email delivery | Brevo | Resend | |
| Analytics | Plausible, PostHog | Plausible, PostHog | |
| Other sites | |||
| Public information site | Astro | ||
| Documentation site | Astro Starlight | ||
| Status page | cstate | cstate | |
| Infrastructure & deployment | |||
| Container orchestration | Docker Compose | Kubernetes (K8s) | Kubernetes (k0s) |
| Kubernetes cluster name | Shasta | Tahoe | |
| Container image registry | Docker Hub | Docker Hub | Docker Hub |
| Code repository | GitHub | GitHub | GitHub |
| Service hosting | Under-desk server | ACCESS Jetstream1 / 2, OpenStack | ACCESS Jetstream2, OpenStack |
| Site hosting | Under-desk server | Render | Render |
| Image processing | Cloudinary | Dendra custom + libvips | |
| Image & file hosting | Cloudinary | Dendra custom + MinIO / S3-compatible | |
| Offsite backups | bup + Google Cloud Storage | bup + Google Cloud Storage | |
| Status monitoring | Dendra Hummingbird Monitor | Dendra Hummingbird Monitor | |
| Uptime monitoring | Uptime Kuma, Uptime Robot | Uptime Kuma, Uptime Robot | |
| VPN access | WireGuard | WireGuard |
Hosting and Deployment
Section titled “Hosting and Deployment”Our production system is hosted on NSF’s ACCESS Jetstream2 where we manage our own Kubernetes clusters at the Indiana University Jetstream2 supercomputing center.
While Dendra is a SaaS platform (meaning we host the system for you and you don’t need to worry about the infrastructure), the core system and many third-party services can be scaled down to run on a home server for development and testing.