DEV Community

Cover image for Pay-as-you-go, A Flexible Approach to Managing Multiple Offers Simultaneously for a user
Zied Hamdi
Zied Hamdi

Posted on

Pay-as-you-go, A Flexible Approach to Managing Multiple Offers Simultaneously for a user

A Flexible Approach to Managing Multiple Offers Simultaneously

Hey there, I'm Zied Hamdi, the creator behind UserCredits, and I'm excited to introduce you to the new approach for managing multiple offers and subscriptions simultaneously. As a developer, I understand the importance of flexibility and customization, and I'm here to show you how I've made it a reality.

The Old Way

In the original model, users were restricted to a single subscription plan. This meant that if you wanted to subscribe to different services or enjoy multiple offers, you were out of luck. That one-size-fits-all approach would have been limiting and frustrating for both users and developers.

The New Approach

The innovation introduces the concept of "offer groups" to give users the flexibility they need. Here's how it works:

Offer Groups

  • Each offer is associated with an "offer group." An offer group is a way to categorize related offers. For example, you might have an offer group for "Mobile TV."
interface IOffer<K extends object> {
  offerGroup: string; // e.g., "Mobile TV"
  // ...
}
Enter fullscreen mode Exit fullscreen mode

Multiple Subscriptions

  • With this new approach, users can subscribe to multiple offers and services independently.
interface ISubscription<K extends object> {
  offerGroup: string; // e.g., "Mobile TV"
  // ...
}
Enter fullscreen mode Exit fullscreen mode

Personalization

  • Users can customize their subscription experience to suit their needs. Whether it's mixing and matching different offers or choosing different durations, the power is in the user's hands.
const mobileTvSubscription: ISubscription<ObjectId> = {
  offerGroup: "Mobile TV",
  // ...
};

const phoneAppSubscription: ISubscription<ObjectId> = {
  offerGroup: "Phone App",
  // ...
};
Enter fullscreen mode Exit fullscreen mode

Tracking Expiry Dates and Tokens

  • Each offer group has its own set of expiry dates and tokens. This ensures that your "Mobile TV" subscription doesn't interfere with your "Phone App" subscription.
const existingOffer: IActivatedOffer | undefined = userCredits.offers.find(
  (offer) => offer.offerGroup === order.offerGroup
);
Enter fullscreen mode Exit fullscreen mode

Enhanced User Experience

  • This new approach offers an enhanced user experience. It simplifies the management of subscriptions and allows users to enjoy various services with pay-as-you-go balance real time monitoring.

Advantages

The advantages of this new approach are crystal clear:

  1. Flexibility: Users can subscribe to multiple offers and services simultaneously, tailoring their experience to their preferences.

  2. Customization: The ability to mix and match offers and durations ensures a personalized subscription experience.

  3. Simplified Management: Offer groups make it easy to keep track of various subscriptions, tokens, and expiry dates.

  4. Enhanced User Experience: Users have the freedom to enjoy a diverse range of services without constraints.

Get Started

I invite you to explore this new approach and discover the difference it can make for your users. You can check out the full code and implementation details on UserCredits on GitHub.

Feel free to customize and contribute to the project, as I welcome any input and collaboration.

Happy coding!

Zied Hamdi

Top comments (0)