Coder Social home page Coder Social logo

enrolla / enrolla Goto Github PK

View Code? Open in Web Editor NEW
36.0 36.0 4.0 21.95 MB

The open source customer feature framework for B2Bs. Easily control how your product behaves and looks for different customers.

Home Page: https://enrolla.io

License: Other

Shell 0.07% JavaScript 3.28% Dockerfile 0.24% TypeScript 96.24% HTML 0.18%
feature-flags javascript nodejs remote-config saas-boilerplate typescript

enrolla's Introduction



Much more than feature flags for B2B.

⭐️ Why Enrolla?

Every SaaS company reaches this point. It needs a way to manage customers, divide them into tiers, define which features are enabled for whom, set seat limits or measure usage. We’ve all been there. And as engineers we just developed this internally. Again. And again.

Sure, it looks simple at first. But as the company grows, more requirements keep piling up. There needs to be a backoffice UI for sales and support teams to use. We want to update the “enterprise” tier to include the new SSO integration. But it only needs to apply to new customers; old customers should have the enterprise tier without SSO. And then it happens 3 more times with 3 other new features. We need to synchronize everything with Salesforce; and the billing system. You get the point.

So we built it as an open source project, and now you can stop doing that and focus instead on delivering your amazing product to your customers.

✨ Features

  • 🛂 Manage which features are enabled for which customer (and other configurations)
  • 🔐 Manage customer API Tokens (and other secrets)
  • 🧩 Integrations with authentication services
  • 📦 Built-in backoffice for sales and support teams
  • 👩‍💻 Community driven

Coming soon:

  • 🏁 Metering customer usage
  • ⏩ Python and Go SDKs
  • 🧩 Integrations with CRMs and billing systems
  • 😎 Headless UI templates for providing needed knobs for your customers

🚀 Getting Started

If you just want to start using Enrolla, go to the app.

If you're looking to self-host Enrolla, see our documentation.

🌱 Contributing

Whether it's big or small, we love contributions ❤️ Check out our guide to see how to get started.

Not sure where to get started? You can:

💚 Community & Support

  • Slack (For live discussion with the community and the Enrolla team)
  • GitHub Discussions (For help with building and deeper conversations about features)
  • GitHub Issues (For any bugs and errors you encounter using Enrolla)
  • Twitter (Get news fast)

enrolla's People

Contributors

dependabot[bot] avatar flaviolivolsi avatar galkleinman avatar handotdev avatar nirga avatar tomer-friedman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enrolla's Issues

[ENR-69] 🚀 Feature: Packages Versioning (Snapshotting)

🔖 Feature description

Bump a version of a package once it has been edited and preserve the old version so customers which are using the old version won't be affected.

🎤 Why is this feature needed ?

A lot of times a package has to be changed, either for pricing experimentation or just as part of the ongoing development of products. Once such change has to take place, it may be reasonable to preserve the configuration/entitlements for customers which are already using it and who might be entitled to those features in their contract. Therefore, versioning is required.

✌️ How do you aim to achieve this?

Pre requisite:

Add support for package update strategies which should be defined as per customer configuration:

  1. Propagate Changes
  2. Snapshot

Details:

When editing a package:

If the customer strategy is Propagate Changes then each change should just update the existing package.
If the customer strategy is Snapshot then each change should create a new bumped version of the package and preserve the old one. *The edit page should contain a checkbox that case stating whether the change is a "breaking" one, which means whether the change "deprecates" or "degrades" functionalities in comparison to the prior version. The version will be bumped accordingly by SemVer, major for a breaking one, and minor for a non-breaking.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-69

[ENR-48] 🚀 Feature: Complete REST API to compliment our GraphQL API

🔖 Feature description

We started Enrolla with REST API only, but at some point decided to switch over to GraphQL as it makes lots of the queries in our management UI easier. We want to continue the REST API development to complement GraphQL.

🎤 Why is this feature needed ?

Using the REST API may be easier to some apps so we need to aim for complete feature parity between GraphQL and REST.

✌️ How do you aim to achieve this?

Following Nest.js conventions and the work already done in the Features module in the backend, we need to add controllers to the following modules / entities with CRUD support:

  • Customers
  • Packages
  • Organizations (read only)

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-48

[ENR-70] 🚀 Feature: Push updates for SDK cached feature flags values

🔖 Feature description

Implement push updates to feature flag values cached in the SDK memory.

🎤 Why is this feature needed ?

Currently, the update mechanism is based on polling with a given interval, it makes flag values stale till the next polling interval. In cases where freshness matters or cases where SDK on one machine triggers value updates and the rest are out of sync, using push updates will result in all machines being synchronized and near real-time freshness.

✌️ How do you aim to achieve this?

Make use of GraphQL subscriptions (WebSockets) to broadcast feature value changes to relevant (those of the tenant whose values have been changed) SDK instances.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-70

[ENR-63] 🚀 Feature: Support import all organizations from Auth0

🔖 Feature description

Implement import all organizations from Auth0. The import functionality should create a customer in Enrolla for every organization defined in Auth0 within a given integration. In the import UI, there's a need for an optional package assignment for all of the imported organizations/customers.

🎤 Why is this feature needed ?

When i'm starting to populate a (usually fresh) Enrolla account, It will be easier to be able to migrate all of my existing organizations in Auth0 as a "starting point"/"inital setup".

✌️ How do you aim to achieve this?

Make Auth0 integration drawer a two-step wizard. The second step suggests importing existing organizations in a multi-select component where by default every organization is selected. In addition there should be a dropdown letting you assign a package to all of the imported organizations. Once submitted, a customer should be created for each of the organizations with organizationId assigned to auth0 org_id, the customer's name assigned to auth0 display_name, and packageId assigned to the selected package id in the dropdown.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-63

[ENR-66] 🚀 Feature: Firebase - Authentication Provider Integration

🔖 Feature description

Add support for Firebase integration as an Authentication/Organizations Provider.
The integration will allow connecting to an existing Firebase account and fetch or create organization over there.

🎤 Why is this feature needed ?

There are many SaaS vendors who are using Firebase in their stack as an authentication provider, therefore the organizations are stored over there.

✌️ How do you aim to achieve this?

Implement a backend integration by creating an OrganizationManager of Firebase type, handling the parsing of Firebase account configuration, linking Enrolla with the account, and implementing the dictated OrganizationManager interface methods allowing fetching and creation of new organizations.

Add a relevant Drawer to integrations page with the required configuration params and support import of all organizations as well with an optional initial package assignment.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-66

[ENR-64] 🚀 Feature: Support import all organizations from PropelAuth

🔖 Feature description

Implement import all organizations from PropelAuth. The import functionality should create a customer in Enrolla for every organization defined in PropelAuth, within a given integration. In the import UI, there's a need for an optional package assignment for all of the imported organizations/customers.

🎤 Why is this feature needed ?

When i'm starting to populate a (usually fresh) Enrolla account, It will be easier to be able to migrate all of my existing organizations in PropelAuth as a "starting point"/"inital setup".

✌️ How do you aim to achieve this?

Make PropelAuth integration drawer a two-step wizard. The second step suggests importing existing organizations in a multi-select component where by default every organization is selected. In addition, there should be a dropdown letting you assign a package to all of the imported organizations. Once submitted, a customer should be created for each of the organizations with organizationId assigned to PropelAuth orgId, the customer's name assigned to PropelAuth name, and packageId assigned to the selected package id in the dropdown.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-64

[ENR-67] 🚀 Feature: WorkOS - Authentication Provider Integration

🔖 Feature description

Add support for WorkOS integration as an Authentication/Organizations Provider.
The integration will allow connecting to an existing WorkOS account and fetch or create organization over there.

🎤 Why is this feature needed ?

There are many SaaS vendors who are using WorkOS in their stack as an authentication provider, therefore the organizations are stored over there.

✌️ How do you aim to achieve this?

Implement a backend integration by creating an OrganizationManager of WorkOS type, handling the parsing of WorkOS account configuration, linking Enrolla with the account, and implementing the dictated OrganizationManager interface methods allowing fetching and creation of new organizations.

Add a relevant Drawer to integrations page with the required configuration params and support import of all organizations as well with an optional initial package assignment.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-67

[ENR-65] 🚀 Feature: UI validation for feature values

🔖 Feature description

Validate feature value input in management UI. The feature value should match the feature type.

🎤 Why is this feature needed ?

In order to avoid misconfigurations and production issues while consumed through the SDK feature values should match their declared type.

✌️ How do you aim to achieve this?

Implement a UI & Backend validation of feature value inputs in the next flows:

  • Feature Create (for the default value)
  • Feature Edit (for the default value)
  • Package Create - Feature Selection and Value assignment
  • Package Edit - Feature Edit and Value assignment
  • Customer Create - Feature Selection and Value assignment
  • Customer Edit - Feature Edit and Value assignment

Suggestion:
In UI, create reusable FeatureInput component validating the feature value against it's declared type.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-65

[ENR-61] 🚀 Feature: Support for enum feature type

🔖 Feature description

Support for feature flags of type enum with given predefined values

🎤 Why is this feature needed ?

In many product uses cases, customers have a configuration/flag which bounded to a final, small set of string-like values.
For example, each package/customer may define a Preferred Maintenance Day which can be populated by a final set of values consists of the weekdays (["Sunday", "Monday", .... , "Saturday]).

✌️ How do you aim to achieve this?

I would like the product to support the definition of features of enum type, when creating feature of such type, I would like to have the option to define the sets of optional values and that any usage of this flag will enforce using value from the given set of values.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

[ENR-68] 🚀 Feature: Stytch - Authentication Provider Integration

🔖 Feature description

Add support for Stytch integration as an Authentication/Organizations Provider.
The integration will allow connecting to an existing Stytch account and fetch or create organization over there.

🎤 Why is this feature needed ?

There are many SaaS vendors who are using Stytch in their stack as an authentication provider, therefore the organizations are stored over there.

✌️ How do you aim to achieve this?

Implement a backend integration by creating an OrganizationManager of Stytch type, handling the parsing of Stytch account configuration, linking Enrolla with the account, and implementing the dictated OrganizationManager interface methods allowing fetching and creation of new organizations.

Add a relevant Drawer to integrations page with the required configuration params and support import of all organizations as well with an optional initial package assignment.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

None

ENR-68

🚀 Feature: Support creating organizations automatically

🔖 Feature description

Automatically create new organizations when creating a new customer in the UI.

🎤 Why is this feature needed ?

To avoid having to go to an authentication provider (like Auth0).

✌️ How do you aim to achieve this?

The backend already supports that, just need to plug in the UI.

🔄️ Additional Information

No response

👀 Have you spent some time to check if this feature request has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

Yes I am willing to submit a PR!

🐛 Bug Report: UI issue in JSON feature overrides

📜 Description

Can't override JSON features in the UI. There's an [object Object] shown in the textbox instead of the actual JSON.

👟 Reproduction steps

  1. Create a JSON feature
  2. Create a package
  3. In the "Customize Features" screen, try customizing the JSON feature
  4. There's an error immediately shown Invalid json and the textbox shows `[object Object]

👍 Expected behavior

Should be able to override and customize JSON features

👎 Actual Behavior with Screenshots

Screenshot 2023-01-02 at 19 58 23

🤖 Node Version

16.15.0

📃 Provide any additional context for the Bug.

No response

👀 Have you spent some time to check if this bug has been raised before?

  • I checked and didn't find similar issue

Are you willing to submit PR?

Yes I am willing to submit a PR!

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.