Flagr is a feature flagging, A/B testing and dynamic configuration microservice

Overview

Introduction

Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact. It provides feature flags, experimentation (A/B testing), and dynamic configuration. It has clear swagger REST APIs for flags management and flag evaluation.

Documentation

Quick demo

Try it with Docker.

# Start the docker container
docker pull checkr/flagr
docker run -it -p 18000:18000 checkr/flagr

# Open the Flagr UI
open localhost:18000

Or try it on https://try-flagr.herokuapp.com, it may take a while for a cold start.

curl --request POST \
     --url https://try-flagr.herokuapp.com/api/v1/evaluation \
     --header 'content-type: application/json' \
     --data '{
       "entityID": "127",
       "entityType": "user",
       "entityContext": {
         "state": "NY"
       },
       "flagID": 1,
       "enableDebug": true
     }'

Flagr Evaluation Performance

Tested with vegeta. For more details, see benchmarks.

Requests      [total, rate]            56521, 2000.04
Duration      [total, attack, wait]    28.2603654s, 28.259999871s, 365.529µs
Latencies     [mean, 50, 95, 99, max]  371.632µs, 327.991µs, 614.918µs, 1.385568ms, 12.50012ms
Bytes In      [total, mean]            23250552, 411.36
Bytes Out     [total, mean]            8308587, 147.00
Success       [ratio]                  100.00%
Status Codes  [code:count]             200:56521
Error Set:

Flagr UI

Client Libraries

Language Clients
Go goflagr
Javascript jsflagr
Python pyflagr
Ruby rbflagr
Issues
  • Added Google Cloud Pubsub support for data records

    Added Google Cloud Pubsub support for data records

    Description

    Adding Google Cloud Pubsub support for data records, currently just a minimal implementation

    Motivation and Context

    We are using Google Cloud Pubsub and needed something native for data records

    How Has This Been Tested?

    running make with all tasks, passed all tests and started flagr server

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [x] I have updated the documentation accordingly.
    • [x] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    opened by vic3lord 13
  • WebPrefix does not update API_URL

    WebPrefix does not update API_URL

    When we add a WebPrefix by defining FLAGR_WEB_PREFIX, we are expecting the entire app to use the prefix. We found that the APIs are not using the prefix, resulting in calls to /api/v1 instead of /webprefix/api/v1.

    Expected Behavior

    If we set up flagr locally, calls to the APIs should include the prefix. For example:

    The following should return a 200 OK:

    curl -v http://localhost:18000/WEBPREFIX/api/v1/health

    The following should return a 404 NOT FOUND:

    curl -v http://localhost:18000/api/v1/health

    Instead, we get the opposite behavior, ie. works without prefix, but does not work with a prefix.

    Current Behavior

    See Expected Behavior above.

    Possible Solution

    May be able to fix this by ensuring that API_URL is set based on the provided WebPrefix (ie. FLAGR_WEB_PREFIX).

    Steps to Reproduce (for bugs)

    Run up an instance of flagr locally and set FLAGR_WEB_PREFIX to /flags. Run the curl commands as per expected behavior.

    Context

    We are trying to run flagr with other applications and this issue prevents it from working as we are proxying only a particular webprefix to flagr.

    Your Environment

    • Flagr version used: 1.0.14
    • Running on docker
    opened by lawrenceong 12
  • Add unique label on flags

    Add unique label on flags

    Description

    For now we only have one way to find a Flag: the description.

    But description are not unique and very volatile and should not be used to find a precise Flag imo.

    ID aren't good enough too since they're linked to the database and they change accross Flagr instances (e.g staging/production). An unique label fixes all of these issues.

    I'm not good with the Vue frontend don't hesitate to push a commit on this PR to improve it.

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [x] I have updated the documentation accordingly.
    • [x] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    opened by vayan 12
  • [feat] Support variant-less rollouts

    [feat] Support variant-less rollouts

    In contrasting open source feature systems flagr is certainly one of the more mature options. The one caveat I found was its quite complex for a generic boolean feature flag. The scenarios that I think could be simpler are:

    • global on/off: could respect the default on/off state.
    • % of entity_id on/off: could respect the segment rollout with no distribution plan

    You could achieve the latter if the API returned some kind of information saying "segment is on with rollout plan and no variant".

    opened by dcramer 10
  • getting error when running make build

    getting error when running make build

    After getting latest code(doing dep ensure, make deps etc) and running make gen, make build throws following error:

    # github.com/checkr/flagr/swagger_gen/restapi
    swagger_gen/restapi/server.go:174:18: cannot use domainSocket (type *graceful.Server) as type *http.Server in argument to configureServer
    swagger_gen/restapi/server.go:206:18: cannot use httpServer (type *graceful.Server) as type *http.Server in argument to configureServer
    swagger_gen/restapi/server.go:292:18: cannot use httpsServer (type *graceful.Server) as type *http.Server in argument to configureServer
    make: *** [build] Error 2
    

    Expected Behavior

    Generated binary sucessfully

    Current Behavior

    Errors, can't compile

    Possible Solution

    Steps to Reproduce (for bugs)

    1. pull latest code
    2. do dep ensure
    3. do make deps
    4. do make gen
    5. do make build

    Context

    I am trying to add new query parameter for rest api but error prevents me from successfully compiling

    Your Environment

    • Version used (flagr version):
    • Server type and version:
    • Operating System and version (uname -a):
    • Link to your project:
    opened by amalfra 8
  • Push http metrics with statsd

    Push http metrics with statsd

    Push metrics, such as response time, response count ..., to a statsd server.

    First part of #102

    Description

    Besides the default configuration, there is a negroni middleware to push http metrics to statsd.

    Motivation and Context

    Have control metrics of individual parts of the architecture, e.g.: response times, individual processes breakdown, project health in general.

    How Has This Been Tested?

    An statsd server started locally, checked if the metrics are sent. Deployed to production on my cluster...

    Types of changes

    • [x] New feature (non-breaking change which adds functionality)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [x] I have updated the documentation accordingly.
    • [x] All new and existing tests passed.
    opened by marceloboeira 8
  • "fatal error" when calling Batch Eval with Tags at Volume

    We found an issue using the Tag Functionality for Batch Evaluations that only shows up when at high volumes. Related to #369

    Expected Behavior

    Calling postEvaluationBatch with valid flagTags should result in evaluations for every Flag with the provided Tags.

    Current Behavior

    At volume (we verified with 1 call every 10 milliseconds), we receive a fatal error: concurrent map writes error, resulting in Flagr crashing. We believe this is an issue of a race condition in the eval cache logic.

    Possible Solution

    We've identified an additional memory lock we can add to the GetByTags function in eval_cache.go that should resolve the problem. We are currently preparing some internal stress testing to validate that it resolves the issue.

    While working on this, we also discovered a similar issue with the rateLimitPerFlagConsoleLogging function in eval.go that we are updating as well.

    opened by fenriskiba 7
  • Strange characters coming through Kinesis stream

    Strange characters coming through Kinesis stream

    Screen Shot 2019-06-03 at 12 37 59 PM

    I just added the following flags to enable the Kinesis Recorder and I can see rows flowing over but when I hook up the stream to Kinesis Analytics I'm seeing a bunch of what looks like binary data flow over(per the screen shot above. { "name": "FLAGR_RECORDER_TYPE", "value" : "kinesis" }, { "name": "FLAGR_RECORDER_KINESIS_STREAM_NAME", "value": "test-flagr-stream" }, { "name": "FLAGR_RECORDER_FRAME_OUTPUT_MODE", "value" : "payload_raw_json" }

    I'm using the 1.1.3 release from docker hub running on AWS Fargate.

    opened by smithatlanta 7
  • Adding support for notifying other services via webhooks

    Adding support for notifying other services via webhooks

    Description

    Adding a webhook for notifying other services when a change happens in flagr.

    Pretty much a copy of #410 which seems to be stale. Simplified it a bit and removed the slack portion of it, since there seems to be some discussions on how to implement that in a sane way.

    After this is merged we can rebase #410 and get the slack notification going

    Motivation and Context

    Useful for keeping an audit style log in another system

    How Has This Been Tested?

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    opened by sorenmat 6
  • Higher contrast color scheme

    Higher contrast color scheme

    It'd be great if the color scheme could have better contrast. A light blue background with white text is quite difficult to read.

    Happy to @ some designers if thats valuable :)

    opened by dcramer 6
  • Setting created_by/updated_by via header

    Setting created_by/updated_by via header

    Description

    Provide two new configuration settings:

    • AuthProxyEnabled to enable retrieving a header to be used on created_by/updated_by
    • AuthProxyHeader header to use defaults to X-Email

    Motivation and Context

    Required at https://github.com/checkr/flagr/issues/297

    How Has This Been Tested?

    Added unit test to ensure this works as expected

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [ ] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I have added tests to cover my changes.
    • [ ] All new and existing tests passed.
    opened by pacoguzman 6
  • Bump shell-quote from 1.7.2 to 1.7.3 in /browser/flagr-ui

    Bump shell-quote from 1.7.2 to 1.7.3 in /browser/flagr-ui

    Bumps shell-quote from 1.7.2 to 1.7.3.

    Changelog

    Sourced from shell-quote's changelog.

    1.7.3

    • Fix a security issue where the regex for windows drive letters allowed some shell meta-characters to escape the quoting rules. (CVE-2021-42740)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump eventsource from 1.0.7 to 1.1.1 in /browser/flagr-ui

    Bump eventsource from 1.0.7 to 1.1.1 in /browser/flagr-ui

    Bumps eventsource from 1.0.7 to 1.1.1.

    Changelog

    Sourced from eventsource's changelog.

    1.1.1

    • Do not include authorization and cookie headers on redirect to different origin (#273 Espen Hovlandsdal)

    1.1.0

    • Improve performance for large messages across many chunks (#130 Trent Willis)
    • Add createConnection option for http or https requests (#120 Vasily Lavrov)
    • Support HTTP 302 redirects (#116 Ryan Bonte)
    • Prevent sequential errors from attempting multiple reconnections (#125 David Patty)
    • Add new to correct test (#111 Stéphane Alnet)
    • Fix reconnections attempts now happen more than once (#136 Icy Fish)
    Commits
    • aa7a408 1.1.1
    • 56d489e chore: rebuild polyfill
    • 4a951e5 docs: update history for 1.1.1
    • f9f6416 fix: strip sensitive headers on redirect to different origin
    • 9dd0687 1.1.0
    • 49497ba Update history for 1.1.0 (#146)
    • 3a38537 Update history for #136
    • 46fe04e Merge pull request #136 from icy-fish/master
    • 9a4190f Fix issue: reconnection only happends for 1 time after connection drops
    • 61e1b19 test: destroy both proxied request and response on close
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump axios from 0.21.1 to 0.21.2 in /browser/flagr-ui

    Bump axios from 0.21.1 to 0.21.2 in /browser/flagr-ui

    Bumps axios from 0.21.1 to 0.21.2.

    Release notes

    Sourced from axios's releases.

    v0.21.2

    0.21.2 (September 4, 2021)

    Fixes and Functionality:

    • Updating axios requests to be delayed by pre-emptive promise creation (#2702)
    • Adding "synchronous" and "runWhen" options to interceptors api (#2702)
    • Updating of transformResponse (#3377)
    • Adding ability to omit User-Agent header (#3703)
    • Adding multiple JSON improvements (#3688, #3763)
    • Fixing quadratic runtime and extra memory usage when setting a maxContentLength (#3738)
    • Adding parseInt to config.timeout (#3781)
    • Adding custom return type support to interceptor (#3783)
    • Adding security fix for ReDoS vulnerability (#3980)

    Internal and Tests:

    • Updating build dev dependancies (#3401)
    • Fixing builds running on Travis CI (#3538)
    • Updating follow rediect version (#3694, #3771)
    • Updating karma sauce launcher to fix failing sauce tests (#3712, #3717)
    • Updating content-type header for application/json to not contain charset field, according do RFC 8259 (#2154)
    • Fixing tests by bumping karma-sauce-launcher version (#3813)
    • Changing testing process from Travis CI to GitHub Actions (#3938)

    Documentation:

    • Updating documentation around the use of AUTH_TOKEN with multiple domain endpoints (#3539)
    • Remove duplication of item in changelog (#3523)
    • Fixing gramatical errors (#2642)
    • Fixing spelling error (#3567)
    • Moving gitpod metion (#2637)
    • Adding new axios documentation website link (#3681, #3707)
    • Updating documentation around dispatching requests (#3772)
    • Adding documentation for the type guard isAxiosError (#3767)
    • Adding explanation of cancel token (#3803)
    • Updating CI status badge (#3953)
    • Fixing errors with JSON documentation (#3936)
    • Fixing README typo under Request Config (#3825)
    • Adding axios-multi-api to the ecosystem file (#3817)
    • Adding SECURITY.md to properly disclose security vulnerabilities (#3981)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    ... (truncated)

    Changelog

    Sourced from axios's changelog.

    0.21.2 (September 4, 2021)

    Fixes and Functionality:

    • Updating axios requests to be delayed by pre-emptive promise creation (#2702)
    • Adding "synchronous" and "runWhen" options to interceptors api (#2702)
    • Updating of transformResponse (#3377)
    • Adding ability to omit User-Agent header (#3703)
    • Adding multiple JSON improvements (#3688, #3763)
    • Fixing quadratic runtime and extra memory usage when setting a maxContentLength (#3738)
    • Adding parseInt to config.timeout (#3781)
    • Adding custom return type support to interceptor (#3783)
    • Adding security fix for ReDoS vulnerability (#3980)

    Internal and Tests:

    • Updating build dev dependencies (#3401)
    • Fixing builds running on Travis CI (#3538)
    • Updating follow redirect version (#3694, #3771)
    • Updating karma sauce launcher to fix failing sauce tests (#3712, #3717)
    • Updating content-type header for application/json to not contain charset field, according do RFC 8259 (#2154)
    • Fixing tests by bumping karma-sauce-launcher version (#3813)
    • Changing testing process from Travis CI to GitHub Actions (#3938)

    Documentation:

    • Updating documentation around the use of AUTH_TOKEN with multiple domain endpoints (#3539)
    • Remove duplication of item in changelog (#3523)
    • Fixing grammatical errors (#2642)
    • Fixing spelling error (#3567)
    • Moving gitpod mention (#2637)
    • Adding new axios documentation website link (#3681, #3707)
    • Updating documentation around dispatching requests (#3772)
    • Adding documentation for the type guard isAxiosError (#3767)
    • Adding explanation of cancel token (#3803)
    • Updating CI status badge (#3953)
    • Fixing errors with JSON documentation (#3936)
    • Fixing README typo under Request Config (#3825)
    • Adding axios-multi-api to the ecosystem file (#3817)
    • Adding SECURITY.md to properly disclose security vulnerabilities (#3981)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by jasonsaayman, a new releaser for axios since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump async from 2.6.3 to 2.6.4 in /browser/flagr-ui

    Bump async from 2.6.3 to 2.6.4 in /browser/flagr-ui

    Bumps async from 2.6.3 to 2.6.4.

    Changelog

    Sourced from async's changelog.

    v2.6.4

    • Fix potential prototype pollution exploit (#1828)
    Commits
    Maintainer changes

    This version was pushed to npm by hargasinski, a new releaser for async since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump minimist from 1.2.5 to 1.2.6 in /browser/flagr-ui

    Bump minimist from 1.2.5 to 1.2.6 in /browser/flagr-ui

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Do you plan to release a new version?

    Do you plan to release a new version?

    The latest Flagr version is the 1.1.12 and it was released on 17 Sep 2020. Since then more than 30 changes have been committed to master but no new version has been released. Do you plan to release a new version? Do you still maintain the project?

    opened by juanantoniocid 2
Releases(1.1.12)
  • 1.1.12(Sep 16, 2020)

    Closed issues:

    • Constrain using CONTAINS filter always fails. #400
    • "fatal error" when calling Batch Eval with Tags at Volume #398

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 1.1.11(Sep 8, 2020)

    Implemented enhancements:

    • [feat] restore deleted flags #215

    Closed issues:

    • Feat: Support semantic versioning in Constraint #391
    • CORS Error with Custom Headers #387
    • MYSQL image compatibility #386
    • Added a port to work in the browser, would love a link to the project for everyone to use #376
    • Different API description in same flagr version (docker vs github) #373
    • Fix xss of mavon-editor in flagr UI #370
    • Add Tags for Organizational Management #362

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 1.1.10(Jul 8, 2020)

  • 1.1.9(May 29, 2020)

  • 1.1.8(Apr 17, 2020)

    1.1.8 (2020-04-17)

    Full Changelog

    Closed issues:

    • [bug] sqlite3 command in make file unnecessary #358
    • docker - cant listen on localhost #357
    • [feat] Flagr front UI should auto focus the search bar #351
    • [feat] Support additional characters in keys #347
    • [feat] Support variant-less rollouts #345
    • Higher contrast color scheme #344
    • Find Flags enabled=false returning Enabled Flags #342
    • Docker image for 1.1.4 broken #340
    • Leverage github actions or circleci to auto release to dockerhub #292

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 1.1.7(Mar 19, 2020)

  • 1.1.6(Mar 17, 2020)

    1.1.6 (2020-03-17)

    Full Changelog

    Fixed bugs:

    • UI appears to delete the wrong constraint #290

    Closed issues:

    • Question: Flags Usage Stats #325
    • [Bug] When attempting to save an invalid JSON blob for a variant attachment, flagr reports success #324
    • [question/feature request] Allow slashes (/) in flag keys #315
    • [Development]Met error after executing 'make all' #309
    • make fails with dependency error #303
    • Need Feeedback on a client acting as a local evaluator #298
    • Question: Other ways of setting created_by or updated_by #297
    • Using getFlag and findFlags in python and go clients returns non-matching objects #294
    • Variant Distribution does not work #293
    • [feat] Add Flagr version to UI #287
    • [feat] allow creating a flag with a specific ID #286
    • UI not using correct value for ID #278

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 1.1.5(Sep 16, 2019)

    Features

    #282 Support HS512 JWT token format. Thanks to @tejash-jl

    Bug Fixes

    #277 Bump npm packages #281 Bump base alpine docker image #284 Bump go-swagger #288 Bump es-lint

    Source code(tar.gz)
    Source code(zip)
  • 1.1.4(Jul 5, 2019)

    Features

    #268 Add search in the front page of flagr UI. Thanks to @yosyad

    Bug Fixes

    #273 Fix undefined flag id in the UI when the flag is deleted. Thanks again to @yosyad #275 Fix float equality comparison problem. Previously, the epsilon is set as 1e-6 for relative difference, now, we check 1e-6 for absolute difference first, and then the relative difference.

    Source code(tar.gz)
    Source code(zip)
  • 1.1.3(May 31, 2019)

    Features

    • #259 Add support for arbitrary JSON (in key/value pairs instead of string/string pairs) format for variant attachment. Thanks @saary
    • #258 Add UI support for JSON editor of variant attachment. Thanks @yosyad
    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(May 24, 2019)

    Features

    #248 Upgrade to go 1.12 and migrated to go mod #253 Support JSON format for logrus logging. Thanks to @croemmich #257 Relax the key validation to accept ^[\w\d-]+$. Thanks to @raviambati #262 Fix health check endpoint to return Content-Type with application/json instead of just empty response.

    Bug Fixes

    #260 Bump webpack bundle analyzer

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Apr 19, 2019)

    Features

    #234 Use FLAGR_WEB_PREFIX for both main api and flagr UI #243 Add notes support. Thanks to @crberube #247 Add EvalOnlyMode and extend DBDriver with json_file and json_http. People can decouple DB from eval cache if people want to opt-in these options.

    Bug Fixes

    #242 Remove entity_type statsd tag due to its possible high cardinality

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Mar 20, 2019)

    Changes

    ❗️#239 introduced a semi-breaking change to the evalResult model. Since fields are no longer required, the zero value (e.g. null, 0) fields are ignored in the final evalResult payload. Old versions of goflagr, rbflagr, and jsflagr are compatible with this change.

    {
      "evalContext": {
        "enableDebug": true,
        "entityContext": {
          "hello": "world"
        },
        "entityID": "a1234",
        "entityType": "report",
        "flagID": 1,
        "flagKey": "kmmcd1nsd6ze56chh"
      },
      "evalDebugLog": {
        "segmentDebugLogs": [
          {
            "msg": "argument: state not found",
            "segmentID": 1
          }
        ]
      },
      "flagID": 1,
      "flagKey": "kmmcd1nsd6ze56chh",
      "flagSnapshotID": 8,
      "segmentID": 1,
      "timestamp": "2019-03-20T00:11:40Z",
      "variantAttachment": null,
      "variantID": null,
      "variantKey": null
    }
    

    becomes

    {
      "evalContext": {
        "enableDebug": true,
        "entityContext": {
          "hello": "world"
        },
        "entityID": "a1234",
        "entityType": "report",
        "flagID": 1,
        "flagKey": "kmmcd1nsd6ze56chh"
      },
      "evalDebugLog": {
        "segmentDebugLogs": [
          {
            "msg": "argument: state not found",
            "segmentID": 1
          }
        ]
      },
      "flagID": 1,
      "flagKey": "kmmcd1nsd6ze56chh",
      "flagSnapshotID": 8,
      "segmentID": 1,
      "timestamp": "2019-03-20T00:11:40Z"
    }
    
    Source code(tar.gz)
    Source code(zip)
  • 1.0.15(Mar 20, 2019)

    Features

    #233 Refactor data recorder with FLAGR_RECORDER_FRAME_OUTPUT_MODE #235 Add global switch for evaluation debug field. FLAGR_EVAL_DEBUG_ENABLED

    Bug Fixes

    #226 Fix default locale in UI

    Source code(tar.gz)
    Source code(zip)
  • 1.0.14(Feb 22, 2019)

    Features

    • #209 Supports Google PubSub for data records. Thanks to @vic3lord @crberube
    • #221 Supports Prometheus export. /metrics endpoint is up. Thanks to @jasongwartz
    • #219 Bump conditions to support faster evalution of str IN array when the array is super long.

    Bug fixes

    • #223 Fixes the relative path of flagr UI
    Source code(tar.gz)
    Source code(zip)
  • 1.0.13(Jan 31, 2019)

    Features

    • #183 User claim in JWT auth is now configurable, previously its default value is sub
    • #189 Add kafka version config
    • #190 Add integration tests for three supported DBs. MySQL, PostgreSQL, and Sqlite3
    • #200 Add GET /flags?preload=true to get preloaded segments and variants
    • #205 Add datadog apm support
    • #208 Add retry for DB connection

    Bug fixes

    • #186 CORS middleware fixes
    • #191 Fix middleware orders to better catch panic errors
    Source code(tar.gz)
    Source code(zip)
  • 1.0.12(Oct 23, 2018)

    Bug fixes

    • ❗️ Fix segments evaluation logic given 0% rollout segments. #180 #181.

    Note, previously, the evaluation of segments falls through to the next segment for non-rolled out users (e.g. 0% rollout percentage of a segment). The intended behavior is that If the entity context matches the constraints in a segment, it should stop evaluating the following segments. Specifically, for 0% rollout segment, it shouldn't go to the next segments.

    Source code(tar.gz)
    Source code(zip)
  • 1.0.11(Oct 23, 2018)

    Features

    • Datadog metrics for evaluation
    • entity_type override for data analytics
    • Web UI base path is now configurable via env FLAGR_WEB_PREFIX. Thanks @SebastianOsuna #170
    • Add gzip middleware

    Bug fixes

    • Fix operator width UI
    • Use pointer cursor for elements on the table
    Source code(tar.gz)
    Source code(zip)
  • 1.0.10(Sep 20, 2018)

    Features

    • Add export endpoint (e.g. export flagr's DB to a SQLite3 db for testing or staging purpose) #154
    • Add flag key support for CRUD and Evaluation #159
    • Add option to return 401 for jwt middleware #163
    • Add tables view for flagr UI's homepage #164
    Source code(tar.gz)
    Source code(zip)
  • 1.0.9(Aug 24, 2018)

    Features

    #151 Add support to AWS Kinesis (thanks @marceloboeira ) #146 Add JWT auth via headers and RS256 signing option (thanks @vayan )

    Vendor bumps

    • Bump retool
    • Bump dep
    • Test coverage for middlewares
    Source code(tar.gz)
    Source code(zip)
  • 1.0.8(Jul 6, 2018)

  • 1.0.7(Jun 26, 2018)

    Features

    #134 Add offset support #135 Lock dev dependencies with retool

    Bugfixes

    #129 Remove default limit query parameter setting. So by default, it gets all flags as before #136 Fix sed so that it works for both mac and linux #130 Bump vendor and tools

    Source code(tar.gz)
    Source code(zip)
  • 1.0.6(Jun 18, 2018)

    Features

    #131 Add description_like query param #126 add support for querying flags by description, enabled and with limit (thanks to @amalfra)

    Bug Fixes

    #130 Bump vendor and autogenerated tools to the latest version

    Source code(tar.gz)
    Source code(zip)
  • 1.0.5(May 1, 2018)

    Features

    #118 Make entity_id optional. Also, it will generate random entity_id if it's empty

    Bug Fixes

    #119 Fix null JSON value bug in entity_context #120 Fix UI package.json dependencies

    Source code(tar.gz)
    Source code(zip)
  • 1.0.4(Apr 12, 2018)

    Features

    • #112 Datadog statsd support. Push http metrics through statsd. (@marceloboeira)
    • #107 Use multi-stage build for dockerfile

    Bug Fixes

    • #113 Fix postgres string scan bug
    • #111 Use fatal instead of panic for db connection problem
    Source code(tar.gz)
    Source code(zip)
  • 1.0.3(Mar 19, 2018)

  • 1.0.2(Jan 16, 2018)

    Features

    • Add JWT Auth support. #80
    • Increase code coverage to close 80%.
    • Change SaveFlagSnapshot to sync call. #95

    Bug fix

    • Fix prefix whitelist and no changes snapshots. #88
    • Fix preload logic of segments. #89
    • Fix flag snapshot ID in eval. #83
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Nov 20, 2017)

    Features

    • Add flag snapshot model to track the revision of flags. #82
    • Send flag snapshot ID with the evaluation result and the data records, so that from the data analytics pipeline we can directly know exactly what's the revision of the flag that it's using. #83

    Bug fix

    • Bump conditions to correctly handle json.Number entity context. #81
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Nov 14, 2017)

    Features & Improvements

    • CRUD api
    • Evaluation api
    • Batch Evaluation api
    • User Segmentation
    • Constraints
      • Rules engine via the conditions Go package
    • Benchmarking with 0.6ms P95
    • Documentation is up (https://checkr.github.io/flagr)
    Source code(tar.gz)
    Source code(zip)
Owner
Checkr
Background check API
Checkr
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️

??️ go-feature-flag A feature flag solution, with YAML file in the backend (S3, GitHub, HTTP, local file ...). No server to install, just add a file i

Thomas Poignant 445 Jun 21, 2022
An open-source, on-prem feature flag solution

An open-source, on-prem feature flag solution Documentation | Features | Values | Examples | Enterprise Flipt is an open source, on-prem feature flag

Mark Phelps 1.8k Jun 29, 2022
Oogway is a simple web server with dynamic content generation and extendability in mind supporting a Git based workflow.

Oogway Oogway is a simple web server with dynamic content generation and extendability in mind supporting a Git based workflow. It's somewhere in betw

Emvi 5 Mar 9, 2022
A basic debugging server used when testing deployments

debug-server A basic debugging server used when testing deployments Development Start Server make Build This builds a Docker image with the commit has

Robin Joseph 0 Nov 1, 2021
ready-to-use RTSP / RTMP server and proxy that allows to read, publish and proxy video and audio streams

rtsp-simple-server is a simple, ready-to-use and zero-dependency RTSP / RTMP server and proxy, a software that allows users to publish, read and proxy live video and audio streams. RTSP is a specification that describes how to perform these operations with the help of a server, that is contacted by both publishers and readers and relays the publisher's streams to the readers.

Alessandro Ros 3.3k Jun 29, 2022
Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

SFTPGo Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support, written in Go. Several storage backends are supporte

Nicola Murino 4.4k Jun 27, 2022
⚡ A fast, lightweight, and secure chat protocol, client and server, written in Go.

⚡ A fast, lightweight, and secure chat protocol, client and server, written in Go.

Bolt 16 Jan 19, 2022
RBTI Golang Server uses PostgreSQL and for its main database and uses Elasticsearch

RBTI Golang Server This server is used for my thesis project, it uses PostgreSQL and for its main database and uses Elasticsearch for faster query spe

Haikal Ikhwan 0 Jan 17, 2022
✨ A lightweight HTTP server based on GO, will try to detect your OS and architecture and return as SHELL script. ✨

✨ A lightweight HTTP server based on GO, will try to detect your OS and architecture and return as SHELL script. ✨

Salvydas Lukosius 6 May 5, 2022
:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

Web server with built-in support for QUIC, HTTP/2, Lua, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, BoltDB (built-in, stores the databas

Alexander F. Rødseth 2k Jun 25, 2022
A registry for resilient mid-tier load balancing and failover.

Discovery Discovery is a based service that is production-ready and primarily used at Bilibili for locating services for the purpose of load balancing

bilibili 1.7k Jun 19, 2022
Open platform to collect and prioritize product feedback

Fider A platform to collect and organize customer feedback. Let your customers share, vote and discuss on suggestions they have to make your product e

getfider 2k Jun 25, 2022
High-performance PHP application server, load-balancer and process manager written in Golang

[RR2-BETA] RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports runnin

Spiral Scout 6.5k Jun 22, 2022
Simple webhook delivery system powered by Golang and PostgreSQL

postmand Simple webhook delivery system powered by Golang and PostgreSQL. Features Simple rest api with only three endpoints (webhooks/deliveries/deli

Allisson Azevedo 17 May 22, 2022
Opinionated boilerplate Golang HTTP server with CORS, OPA, Prometheus, rate-limiter for API and static website.

Teal.Finance/Server Opinionated boilerplate HTTP server with CORS, OPA, Prometheus, rate-limiter… for API and static website. Origin This library was

teal.finance 7 Mar 26, 2022
HTTP server receives events and publishes them to STAN

Publishes events to Nats Streaming(STAN) synchornously and asynchronously. Cache events's publish-state using Redis and Store events using MongoDB.

Mehdi 15 Jan 24, 2022
Formrecevr is a simple and lightweight from receiver backend primarily designed for (but not limited to) static websites.

Formrecevr Formrecevr (pronunced "Form receiver") is a simple and lightweight from receiver backend primarily designed for (but not limited to) static

Dorian Zedler 2 Apr 17, 2022
Tiny Go webserver that prints os information and HTTP request to output

whoami Tiny Go webserver that prints os information and HTTP request to output Usage Paths /data?size=n[&unit=u]: creates a response with a size n. Th

Natush 0 Nov 2, 2021