Skip to content

Feature request: metered trials as opposed to timed trials #317

@kctdfh

Description

@kctdfh

Thanks for the great library! It's amazing for the kinds of single page web apps I build!

One thing I've bumped up against is metering and limited database access for freemium products built on Userbase. I specifically have two use cases in mind, which will hopefully illustrate the need in general.

1) Limiting database writes for non-paying users or those with expired subscriptions

Let's say we have a photo storage app that let's users build albums. Each album is a private database on Userbase. The service would allow a non-paying user to make 2 albums but a subscribed user can make unlimited albums. User Alice creates databases A and B before subscribing. They can read and write to these databases forever.

They then subscribe and create databases C and D. For a month, they add photos to all databases but their subscription expires. Ideally, we'd still allow them to access all of their photos but won't let them write to C and D anymore.

This introduces the concept of database-count-limited trial periods on an otherwise paid service and read-only databases for expired subscriptions.

2) Limiting storage usage per subscription type

For the same service as above, we could have the free plan give the user up to 500MB of storage space. Then another plan for 10GB and so on.

A useful addition for both the admin and the SDK API would be a utilization field. You could get the storage utilization of a single database or a specific user and limit the feature-set based on that.

In this case, read permissions are not revoked. Write permissions are.

The architecture docs mention metering and how the current lack of garbage collection would potentially hinder the accuracy of this measurement but I may be misunderstanding what bundling and garbage collection are.

Would love to hear everyone's thoughts on this metered trial vs. timed-trial freemium discussion! Hopefully the photo album example doesn't come with too much baggage and the use cases carry over to more abstract conceptions of a database.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions