Tweek is an open source feature management solution for customizing applications and system behavior without deploying new code.
Tweek aims to be a complete open-source alternative to other industry feature/configuration/experiment management solutions such as Facebook's Gatekeeper, LinkedIn's XLNT, Dropbox's Stormcrow and other commercial SaaS solutions...
- Feature toggles, gradual release
- Multi-variant experiments, A/B testing
- Built-in Editor with user friendly UI
- Hierarchical configurations
- Advanced targeting of users/groups
- Dependencies between features
- Customizable schema/domain model
- Auditing
- Integrated storage for saving context
- Container friendly
- Integrated OAuth support
- Pluggable storage backend
- Simple RESTful api for fetching configurations
- Scalable
The easiest way to start evaluating Tweek is to run it locally on docker, make sure you have the latest docker (for windows/mac/etc..) version installed (17-06+).
- clone the repo (
git clone https://github.com/Soluto/tweek.git
) - go to deployments/dev (
cd tweek/deployments/dev
) - (optional) pull the images instead of building (
docker-compose pull --parallel
) - run (
docker-compose up
)
- Open http://editor.dev.local.tweek.fm:81 in browser.
- Go to keys page.
- Click on "Add New Key"
- Type my_app/sign_button/color
- Set value type to String
- Add default value "red"
- Save changes
- Click on "Add Rule"
- Set Property to Country (user) and set "=" and "Canada" in the other fields
- In Rule value set the value "blue"
Use curl/postman/chrome to fire GET Request:
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/color -> expected to be "red"
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/color?user.Country=canada -> expected to be "blue"
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/_?user.Country=canada -> expected to be {"color":"blue"}
More on Tweek Rest api. (link)
Using the API, use curl/postman to fire POST Request:
- http://api.dev.local.tweek.fm:81/api/v1/context/user/john {"Country":"Canada"}
After that, we can query Tweek API with:
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/color?user=john -> expected to be "blue"
More on Context.
Create new key in the editor "my_app/sign_button/is_enabled" with value type "boolean" and default value False.
Add new rule, remove all conditions, set the the rule value to gradual release with 50%.
Try querying configuration with different users and You'll have different results.
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/is_enabled?user=barny
- http://api.dev.local.tweek.fm:81/v1/keys/my_app/sign_button/is_enabled?user=robin
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/is_enabled?user=ted
- http://api.dev.local.tweek.fm:81/api/v1/keys/my_app/sign_button/is_enabled?user=lily
- etc...
More on how multi-varaint keys work in Tweek. (link)
- Who's using Tweek?
Tweek is been used in large scale production deployment in Soluto.
Tweek.JPad - Tweek's internal rules engine