Extending Functionality - helixml/apps-client

Extending Functionality for the Helix Client Library

The Helix Client Library (https://github.com/helixml/apps-client/) can be extended with custom features or integrations using various approaches. This document outlines the possible options and provides examples for each option, quoting the source of information to build confidence.

  1. Client-side use cases with OpenFeature spec:

OpenFeature supports client-side use cases (https://openfeature.dev/blog/tags/spec). By implementing the OpenFeature spec in your client-side application, you can enable feature flag functionality and integrate with various feature flag service providers.

  1. Client-side implementation with Vault:

When using HashiCorp’s Vault, the client can be implemented in various ways (https://developer.hashicorp.com/vault/docs/concepts/client-count/faq). You can write your own client or use existing libraries to interact with Vault’s API.

  1. UI Extensions with Grafana:

Grafana allows you to create UI extensions (https://grafana.com/developers/plugin-tools/ui-extensions), which can be used to extend the functionality of your application. This enables multiple plugins to contribute new functionality to your UI, with a clean separation of concerns and easy integration.

  1. Server-side SDK architectures with OpenFeature:

OpenFeature allows vendors to implement providers in their preferred way (https://openfeature.dev/blog/feature-flags-sdks-architectures). This means you can create custom server-side SDK architectures that fit your specific use case.

  1. Lift and Shift approach:

By using the Lift and Shift approach (https://developers.redhat.com/blog/2018/10/18/modernize-your-application-deployment-with-lift-and-shift), you can add new layers on top of legacy code without changing the existing application. This enables you to reuse existing code and create new UI that can be used by both Mac and Windows operating systems.

  1. Extending Envoy for custom use cases:

Envoy provides various extension types, including access loggers, clusters, listener filters, network filters, HTTP filters, and more (https://www.envoyproxy.io/docs/envoy/latest/extending/extending). By using these extension points, you can customize Envoy to fit your specific use case.

  1. Extend CE features with EE backend code:

GitLab provides guidelines for implementing Enterprise Edition features (https://docs.gitlab.com/ee/development/ee_features.html). By extending CE features with EE backend code, you can add custom functionality to your GitLab instance.

  1. Creating an extension point in your app plugin:

By providing an extension point within your UI, other plugins can contribute supplementary capabilities (https://grafana.com/developers/plugin-tools/ui-extensions/create-an-extension-point). This enables you to leverage the context within the current view to guide users to a potential next step.

  1. Building an API Client SDK:

When building an API Client SDK (https://sweetcode.io/build-api-client-sdk), it is essential to follow best practices to ensure your SDK is easy to use and maintain. This includes using a consistent naming convention, providing clear documentation, and handling errors gracefully.

These are some of the ways you can extend the functionality of the Helix Client Library. By using these approaches, you can add custom features and integrations that fit your specific use case.