Skip to content

Evolving the Technology Stack

As Dendra matures into an enterprise SaaS platform, the demands on the system continue to grow in both scale and complexity. Release 2 was built primarily with Node.js on the backend and Vue.js on the frontend. While this stack supported rapid early development, operating it at increasing scale has highlighted practical limitations around memory usage, garbage collection behavior, and dependency management.

Release 3 introduces an optimized technology stack: Go on the backend and TypeScript + Vue.js on the frontend. This evolution favors simplicity, predictability, and long-term maintainability across the system.

The new stack reflects the following priorities:

  • Type safety — Go provides compile-time type checking on the backend, while TypeScript does the same on the frontend. Together they reduce runtime errors and enable safer, faster refactoring across the stack.

  • Efficient inter-service communication — Protocol Buffers define clear service contracts, with ConnectRPC carrying calls over standard HTTP (as JSON or binary). This keeps Go and TypeScript clients tightly aligned with the same schema.

  • Performance and resource efficiency — Go was chosen for the backend because of its compiled performance, lightweight goroutines, and significantly lower memory usage under load — especially important for query-heavy operations like aggregations, annotation evaluation, and cross-store reads.

  • Minimal dependencies by design — The team deliberately limits reliance on large external package ecosystems on both backend and frontend. This reduces version conflicts, security patches, and breaking changes, leading to faster and more stable iteration. Go’s strong standard library makes this approach particularly effective.

  • Deployment simplicity — Go compiles to static, single-file binaries. The entire Release 3 system is designed to be packaged into a small number of executables (targeting no more than 8). This simplifies deployment, versioning, and operations.

  • API-first manageability — Every major part of the system is exposed and manageable through well-defined APIs. This eliminates “untouchable” components that previously required direct backend engineer intervention, enabling better introspection, automation, and operational visibility for the team.

Below are first-party write-ups from teams that evaluated their stack and moved performance-critical paths to Go in production.