Giter Club home page Giter Club logo

featurehub-io / featurehub Goto Github PK

View Code? Open in Web Editor NEW
292.0 9.0 32.0 20.12 MB

FeatureHub - cloud native feature flags, A/B testing and remote configuration service. Real-time streaming feature updates. Provided with Java, JavaScript, React, Python, Go, .Net, Ruby, Android, Swift and Flutter SDKs.

Home Page: https://www.featurehub.io

License: Other

Dart 34.66% HTML 0.04% Shell 0.43% Java 9.32% Groovy 17.39% Gherkin 3.31% Dockerfile 0.15% TypeScript 2.50% Kotlin 32.11% JavaScript 0.08% Ruby 0.02%
feature-flags feature-toggle feature-toggling-api features feature-toggles a-b-testing a-b-test remote-config cloud-native split-testing

featurehub's People

Contributors

alex-deng-featurehub avatar chrusty avatar cspalding avatar dependabot[bot] avatar igorgatis avatar irinasouth avatar nashjain avatar rvowles avatar techmaharaj avatar tiffanyyuliu avatar vidya-bhargav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

featurehub's Issues

Base javascript repository is too large

The basic JS repository is 80kb in size, which is even compressed, too large to include as it includes an amount of stuff that isn't really required. Consider moving to hand-crafted clients only.

It is perfect for node servers but not for mobile or web apps.

USER FEEDBACK: Tabs perhaps confusing

The tabs in Application are perhaps confused and there appears to be some bug as they are not aligning with the menu on the left.

The question at hand is whether to keep them at all (and fix the highlighth) or remove them.

update base images for containers

All of the containers need to have their versions updated so that the nginx config:

  • exposes on port 80
  • http/2 is enabled
  • the SSE config is sorted out for the buffering issue

Add OAuth2 support

To be more usable to larger companies, FH really needs OAuth2 support.

Always ensure new environments are inserted at beginning of promotion list

Description

Backend should ensure that new environments are always inserted at the beginning of the list of environments (unless the first one). This will mean that they are never out of order and the reordering code will work as expected.

Changes required.

  • admin-ui removal of indicator of incomplete ordering structure
  • backend: when environment is saved it must ensure there is a priorEnvironmentId set if one isn't already there.
  • backend: remove duplicate code around backend ordering support, stop with Rob's recommended API.

Prerequisites

  • Put an X between the brackets on this line if you have done all of the following:
    • Reproduced the problem in debug mode: https://
    • Followed all applicable steps in the debugging guide: https://
    • Checked the FAQs on the message board for common solutions: https://
    • Checked that your issue isn't already filed: https://

STRATEGY: Add % rollout support

Add % rollout support to enhance A/B testing.

  • Should sum up to 100%

  • Percentage field should not allow greater than 100% when adding new strategy

  • Do we need to display warning messages when something doesn't sum up?

  • If string, number, json strategy is not set - it should show as "not set" on collapsed view

  • Check different user permissions reflected correctly

  • Fix choice chips

  • Fix overflow issues when columns have multiple strategies

  • Rounding is broken when entering percentage value. E.g. 0.0005 defaults to 0

  • Can't go back to "not set" after value is set for strings, numbers, json

@rvowles

Enhance Assistant/Rocket to actually do action

The Assistant/Rocket (known internally as the Stepper) only takes you to the location to do the action. So if you click Create Application, it takes you to the Application screen, where you need to click Create Application again.

Ideally this would take you to the screen and click the action.

Environment ordering is immediate and should have deliberate save

When you are ordering environments it causes them to immediately update. This is not consistent with the other parts of the UI where the user is allowed to save their changes, and it can also create issues with the environment record being out of date, so saving the environment order creates a conflict error due to versions.

On first login after starting the app locally the user cannot create features

Describe the bug
A clear and concise description of what the bug is.

Which area does this issue belong to?

  • FeatureHub Admin Web app
  • SDK
  • SDK examples
  • Documentation
  • Other

To Reproduce
Steps to reproduce the behavior:

  1. Start the admin app in the IDE
  2. Login as a superuser
  3. Swap to any portfolio, leave yourself on 1st app
  4. create feature button is shown but you cannot edit the fields

Expected behavior
You can create an edit the fields.

Support GET API focused on Mobile

Mobile needs a GET API so it doesn't keep the radio open. Few Network operators have implemented the SSE handoff discussed in official documentation, so this periodic polling mechanism is worthwhile.

It needs to support multiple SDKURL requests in one, so it should be a simple GET /features

Ideally it should send something like: env=encoded-url,feature=version,feature=version&env=encoded-url,feature=version,feature=version so that the server can send back all the features it is missing (if any) and support multiple environments.

GET for caching.

Build Party Server for base use.

Description

Build base docker image as per documentation. Must include:

  • h2 driver, setup ready for mounting
  • admin-ui built and sitting under nginx, running on port 8085
  • full MR + dache + SSE layers ready for operation
  • NATs server configured and operation

Update typescript SDK docs

The typescript SDK docs should include information on:

  • Analytics adapters
  • Browser + Nodejs adapters for setting feature toggle values

Get registration url after user created

Description

Once a user is created, you cannot re-get their registration URL. Their account has to be deleted and created again.

Description

Steps to Reproduce

  1. Create a user
  2. Don't copy the url
  3. See they haven't confirmed. No way to find URL again.

Expected behavior:

Should be some mechanism to find URL again.

Preserve hidden environments list from feature page against user

A user should be able to set the list of hidden environments and have them persist across visits. This will require a new user data API in the backend and updates to the admin-ui to enable it to take advantage.

The user api could be structured or arbitrary, if arbitrary it could be abused.

expose locked status in SDK API

The locked status needs to be exposed in the SDK API, passing back from the Edge server so that the SDK can make intelligent decisions about FeatureValueOverrides.

Dacha not filling successfully on first environment created

Description

When the first environment gets created, the Dacha does not settle like it should. It should keep polling the MR until someone creates the first application and thus first environment, but once that happens it should settle and become master.

Currently it needs to restart.

Prerequisites

Requires NATs, MR Dacha and an e2e test that creates the basic data required to put it in the right mode. Have MR start with an in memory database, start Dacha so it keeps polling and fire the e2e test to create the organisation, portfolio and therefore application.

Expected behavior:

Dacha should setting after first environment even if there are no features.

Actual behavior:

Dacha never settles until restart.

Support OAuth2 providers of identity

FeatureHub only needs a name and email - so supporting OAuth2 should be fairly straight forward. It is not supported now as we didn't want it as a pre-requisite for people evaluating the platform.

FLUTTER UPGRADE: value saving no longer works

Describe the bug
We have upgraded to the latest Flutter Master, commit 4aed97681233a181ef8a135ed2809338473cbe11

A run through of the Admin-UI shows an issue with saving any values. Values (i.e. not flags) are delayed update in the UI because immediate update would make the text boxes lose state and prevent editing. I relied on the framework triggering editingComplete on the text boxes when they were removed from the rendering stack, which in hindsight was not the most reliable.

This changes tracks dirty state for each of the fields and their lock states, and keeps all of the fields managing their own state, calling back to the FeatureValueBloc to compare (and pass) their internal state against the original values. The only cross signal between cells is the locked state, which turns into its own stream of locked/unlock, which causes redraw of the cell as appropriate but the state is stored in each cell as a proper stateful component.

Which area does this issue belong to?

  • FeatureHub Admin Web app

** testing plan:

  • lock/unlock each type of value ensuring it locks and unlocks and saves - YES
  • lock/unlock on non existent value - YES
  • lock and ensure can’t change - YES
  • unlock and ensure can change - YES
  • change each value - YES
  • reset each type - YES
  • clear strings, numbers and config and they reset to not set - YES

Isolate all web functionality into one area

Ideally we want this to be removed into a single location so when it detects we are building for the web, it will use this code, otherwise it will use a Flutter Mobile style (such as copy to clipboard).

ADMIN-UI: how can user reset password?

The UI needs to provide feedback for a user on how they can reset their password. Because the Admin-UI doees not support email, this means it needs to be clear how this can be done.

ManageApp needs new API for getting groups

Add API to allow for getting the groups of an application, and have it fill in the environments with automatic ticks for all permissions for admin groups. Currently the Manage App Route bloc calls getPortfolios and asks for its groups and the members of those groups (which is the ACLs) which is an extremely heavy load.

Dacha requires health checks

Standard health and readyness checks are required, and so HTTP endpoints are required for them. Same as SSE and MR.

JSON Schema Validation

Allow an item of configuration, JSON or YAML to store a JSON Schema and have the JSON validated against it. This will prevent bad data from being able to be entered.

USER FEEDBACK: Cannot create a user in Groups page

It can be that a user doesn't exist and the current person wants to add them right there in the groups page. It should require you to search first and then add if they don't exist, or as you type a new email in it should indicate matches and prevent you creating a person a 2nd time.

Dacha needs Prometheus support

Dacha being a NATs only server has no web endpoint and thus no Prometheus support.

Ideally it would expose:

  • information on the topics,
  • how many incoming SDK requests it was dealing with
  • how many environments it has
  • how many service accounts it has
  • how many features it is processing

along with normal JVM metrics

Registration URL issue

If you follow the register link and it is an invalid token, and you are logged in, you cannot go anywhere on the menu anymore

Don't display service accounts for environment if none have access

If none of the service accounts have access to an environment, ideally they shouldn't be displayed otherwise the UI can become cluttered. Alternatively it could show it on one line and say "none have access" so you don't miss a service account and wonder where it is.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.