Coder Social home page Coder Social logo

growthbook-php's Introduction

GrowthBook - Open Source Feature Flagging and A/B Testing

Open Source Feature Flagging and A/B Testing

Build Status Release Join us on Slack

Get up and running in 1 minute with:

git clone https://github.com/growthbook/growthbook.git
cd growthbook
docker-compose up -d

Then visit http://localhost:3000

GrowthBook Screenshot

Our Philosophy

The top 1% of companies spend thousands of hours building their own feature flagging and A/B testing platforms in-house. The other 99% are left paying for expensive 3rd party SaaS tools or hacking together unmaintained open source libraries.

We want to give all companies the flexibility and power of a fully-featured in-house platform without needing to build it themselves.

Major Features

  • ๐Ÿ Feature flags with advanced targeting, gradual rollouts, and experiments
  • ๐Ÿ’ป SDKs for React, Javascript, PHP, Ruby, Python, Go, Android, iOS, and more!
  • ๐Ÿ†Ž Powerful A/B test analysis with advanced statistics (CUPED, Sequential testing, Bayesian, SRM checks, and more)
  • โ„๏ธ Use your existing data stack - BigQuery, Mixpanel, Redshift, Google Analytics, and more
  • โฌ‡๏ธ Drill down into A/B test results by browser, country, or any other custom attribute
  • ๐Ÿช Export reports as a Jupyter Notebook!
  • ๐Ÿ“ Document everything with screenshots and GitHub Flavored Markdown throughout
  • ๐Ÿ”” Webhooks and a REST API for building integrations

Try GrowthBook

Managed Cloud Hosting

Create a free GrowthBook Cloud account to get started.

Open Source

The included docker-compose.yml file contains the GrowthBook App and a MongoDB instance (for storing cached experiment results and metadata):

git clone https://github.com/growthbook/growthbook.git
cd growthbook
docker-compose up -d

Then visit http://localhost:3000 to view the app.

Check out the full Self-Hosting Instructions for more details.

Documentation and Support

View the GrowthBook Docs for info on how to configure and use the platform.

Join our Slack community if you get stuck, want to chat, or are thinking of a new feature.

Or email us at [email protected] if Slack isn't your thing.

We're here to help - and to make GrowthBook even better!

Contributors

We โค๏ธ all contributions, big and small!

Read CONTRIBUTING.md for how to setup your local development environment.

If you want to, you can reach out via Slack or email and we'll set up a pair programming session to get you started.

License

GrowthBook is an Open Core product. The bulk of the code is under the permissive MIT license, and the packages/enterprise directory has its own separate commercial license.

View the LICENSE file in this repository for the full text and details.

GrowthBook Repository Stats

growthbook-php's People

Contributors

andrejguran avatar auz avatar defrothew avatar jdorn avatar nhedger avatar

Stargazers

 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  avatar  avatar

growthbook-php's Issues

Crashes application when cached data is available

During some resiliency tests to see what happens in various conditions, we noticed a couple of issues:

  1. The connection cannot be setup due to missing credentials. This will immediately throw an {{\Exception}} exception, not even trying to load from cache first
  2. There is a connection issue, etc (this will only happen if the cache is no longer valid/not used). This will throw Exceptions from a {{Psr18Client}}.

If credentials are missing/invalid but there is a valid cache, it should use the cache (for example, rolling credentials).

If connection issues and an expired cache exist, the cache should still be used until a connection can be re-established, perhaps only logging the issue. If there isn't a cache, it should only throw when trying to use a gated feature (and leave catching an exception to the developer). At least, this is what I would expect.

qaMode is ignored when using a forced rule

"qaMode" is a useful option for testing and I think it should always be a priority over other rules.
This is the case for everything except for the Forced Rule -> it takes the value from the Forced Rule rather than from default value (as it does in all other cases).

Expected Result: When "qaMode" is set it should always use default value of the feature.

Add missing license

Hi there,

This repository is currently missing a LICENSE file.

I would recommend adding one to make clear under which license the package can be used.

Based on the SDKs for other languages, I presume that you'd want to use the MIT license so I went ahead and created PR #9

Exception should NOT be swallowed if the logger is not set

If the logger is not set by calling one of these methods Growthbook::setLogger(...) or Growthbook::withLogger(...) then an exception raised by Growthbook::withTrackingCallback(...) is just silently "swallowed" here.

It would be better to re-throw the exception if the logger is not set and let an app die... otherwise nobody will notice there's an error.

Add `url` client config setting

The readme says you can pass url into the client to override the default value, but that feature was never implemented. It always pulls the value from $_SERVER instead.

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.