All Projects → Soluto → Tweek

Soluto / Tweek

Licence: mit
Tweek - an open source feature manager

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Tweek

Unleash
Unleash is the open source feature toggle service.
Stars: ✭ 4,679 (+1645.9%)
Mutual labels:  feature-flags, feature-toggles, experiments, devops, continuous-delivery
Flipt
An open-source, on-prem feature flag solution
Stars: ✭ 1,623 (+505.6%)
Mutual labels:  feature-flags, feature-toggles, continuous-delivery
Lastbackend
System for containerized apps management. From build to scaling.
Stars: ✭ 1,536 (+473.13%)
Mutual labels:  devops, continuous-delivery, backend
Flagr
Flagr is a feature flagging, A/B testing and dynamic configuration microservice
Stars: ✭ 1,776 (+562.69%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
nestjs-config
NestJS Module for Nonfig services. Nonfig combines Configurations and Features. So you change features, and release swiftly, and measure to digital impact.
Stars: ✭ 40 (-85.07%)
Mutual labels:  backend, feature-flags, feature-toggles
flagsmith-js-client
Javascript Client for Flagsmith. Ship features with confidence using feature flags and remote config. Host yourself or use our hosted version at https://www.flagsmith.com/
Stars: ✭ 42 (-84.33%)
Mutual labels:  continuous-delivery, feature-flags, feature-toggles
Flagsmith Frontend
Web App and Mobile App for Flagsmith
Stars: ✭ 86 (-67.91%)
Mutual labels:  feature-flags, feature-toggles, continuous-delivery
ruby-client
Ruby SDK client for Split Software
Stars: ✭ 22 (-91.79%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
js-sdk
JavaScript frontend SDK for ConfigCat. ConfigCat is a hosted feature flag service: https://configcat.com. Manage feature toggles across frontend, backend, mobile, desktop apps. Alternative to LaunchDarkly. Management app + feature flag SDKs.
Stars: ✭ 21 (-92.16%)
Mutual labels:  configuration, feature-flags, feature-toggles
php-client
PHP SDK client for Split Software
Stars: ✭ 14 (-94.78%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
java-client
Java SDK client for Split Software
Stars: ✭ 20 (-92.54%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
python-client
Python SDK client for Split Software
Stars: ✭ 12 (-95.52%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
react-client
React JS SDK client for Split Software
Stars: ✭ 23 (-91.42%)
Mutual labels:  feature-flags, feature-toggles, ab-testing
growthbook
Open Source Feature Flagging and A/B Testing Platform
Stars: ✭ 2,342 (+773.88%)
Mutual labels:  continuous-delivery, feature-flags, ab-testing
unleash-client-java
Unleash client SDK for Java
Stars: ✭ 86 (-67.91%)
Mutual labels:  feature-flags, feature-toggles
PowerShell-FeatureFlags
PowerShell module containing a Feature Flags implementation based on a local config file.
Stars: ✭ 15 (-94.4%)
Mutual labels:  feature-flags, feature-toggles
laboratory
Feature flags for multi-module Kotlin Android projects
Stars: ✭ 71 (-73.51%)
Mutual labels:  feature-flags, ab-testing
CloudKitFeatureFlags
A library that lets you setup feature flagging for your iOS app using CloudKit
Stars: ✭ 91 (-66.04%)
Mutual labels:  feature-flags, feature-toggles
feature-flag-android
A Gradle plugin to achieve feature flag based development for Android applications.
Stars: ✭ 82 (-69.4%)
Mutual labels:  feature-flags, feature-toggles
erlang-server-sdk
LaunchDarkly Server-Side SDK for Erlang/Elixir
Stars: ✭ 16 (-94.03%)
Mutual labels:  feature-flags, feature-toggles

Github build status License Slackcode style: prettier

[email protected]

What is Tweek?

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

Features

  • 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

Getting Started

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+).

Running Tweek

  • Clone the repo (git clone https://github.com/Soluto/tweek.git)
  • [optional] Pull images, run yarn docker-compose pull --parallel (optional for getting started fast with Tweek as it's skip build)
  • [optional] newer versions of docker-compose support parallel build, so you can use yarn docker-compose build --parallel for faster build.

Using Docker Compose

  • Run (yarn start) - this might take a few minutes for the first time

Using Tilt

Tilt is a CLI tool that can be used to create optimal development environment for multi-container apps such as Tweek, it support automatic rebuilding of images and re-running of containers on files' changes. Additionally, it support more complex live reloading scenarios such as Tweek Editor (React app). Tweek uses Tilt on top of docker-compose for easier and (usually) faster developer experience (compared to Tilt with k8s).

Using Kubernetes

  • Install Skaffold (https://github.com/GoogleContainerTools/skaffold)
  • Run skaffold dev --port-forward=false
  • Wait for environment to be stable (will take about 10m first time due to building all images, afterward it can take about 2m for environment to stabilize)

Troubleshooting

  • Run (yarn start --build) to rebuild all images and start Tweek.

Edit your first key

After setting up our environment, we're going to create our first key. Keys in tweek are the most basic building blocks and they represent a container for dynamic value that affect feature behaviors. Our first key, will be a key that is responsible for the color of a "sign up" button.

  • Open http://localhost:8081/login in browser.
  • Login
    • User Basic auth (user: admin-app, password: 8v/iUG0vTH4BtVgkSn3Tng==)
    • Can also use OIDC mock server login button for testing OIDC (user: User, password: pwd)
  • Go to keys page.
  • Click on "Add 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"
  • Click "Save changes"

More on keys and paths

Querying Tweek

Use curl/postman/chrome to fire GET Request:

Using the rest api, an application can query Tweek for getting the right set of values for each specific user. More on Tweek Rest api.

Adding context data

Tweek provide UI and rest api for editing context.

  • Go to context
  • Set Identity Type to User
  • Set User id to John
  • Click enter
  • Set value "Canada" for property Country

After that, we can query Tweek API with:

You can also use the api for updating Tweek context:

More on Context.

Gradual Feature Release

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.

More on how multi-variant keys work in Tweek. (link)

Deployment to production

FAQ

  • Who's using Tweek?
    Tweek is been used in large scale production deployment at Soluto.
  • How do I generate ssh keys and a pfx file for use in production?
    There's a script for this purpose in utils/generate_keys.sh
  • I found a security vulnerability, should I open an issue about it?
    No. Please send an email to [email protected].

Related projects

Tweek-Clients - Tweek REST clients
Tweek.JPad - Tweek's internal rules engine

Additional Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].