An Elixir library for feature toggling with flexible group-based rules and multiple storage adapters.
Flippant is an Elixir library for feature flagging, allowing developers to toggle features on or off dynamically in production applications. It solves the problem of risky deployments by enabling gradual rollouts, A/B testing, and conditional feature access based on user attributes or groups.
Elixir developers building web applications or services who need to manage feature releases, conduct experiments, or control access to functionality without redeploying code.
Developers choose Flippant for its straightforward group-based rule system, support for multiple databases (Redis/PostgreSQL), and clean Elixir-native API that integrates seamlessly into existing applications with minimal configuration.
:traffic_light: Feature flipping for the Elixir world
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Centralized interaction through the `Flippant` module with intuitive functions like `enabled?` for checking feature access per actor, simplifying integration as shown in the README examples.
Allows defining custom evaluation functions for groups, enabling dynamic feature control based on user attributes or IDs, such as staff status or specific user lists.
Supports adapters for Redis and PostgreSQL via dependencies like `redix` or `postgrex`, offering persistence and choice based on existing infrastructure, as detailed in the configuration setup.
Features can be enabled or disabled at runtime for specific groups with parameters, facilitating safe rollouts and A/B testing without code redeployments, evidenced by the `enable/3` function.
Requires setting up and maintaining Redis or PostgreSQL, adding infrastructure complexity compared to in-memory or file-based solutions, as noted in the installation steps.
Lacks a graphical interface for managing flags, necessitating code changes or custom tooling for non-technical teams to view or modify feature states, which the README doesn't address.
Does not natively support percentage rollouts or automated analytics for A/B testing; users must implement custom logic, potentially increasing development effort for complex scenarios.