📌 Description
Currently, subscription plans are being introduced in RestroHub. Along with subscription CRUD APIs, we also need a centralized system to dynamically restrict feature access based on the restaurant’s active subscription plan.
This issue focuses specifically on implementing feature-level restriction and validation logic.
🎯 Objective
Create a reusable subscription validation system that controls feature access dynamically across backend APIs and services.
🛠️ Scope of Work
Backend
Create centralized subscription validation module/service
Validate restaurant subscription before feature execution
Add reusable feature access methods like:
canUseWhatsApp()
canUseAiTranslation()
canAddBranch()
canUseCustomDomain()
Add branch limit validation logic
Handle custom plan configurations dynamically
Middleware / Interceptor
Implement reusable request validation:
Spring Interceptor / Filter / Aspect
Restrict API access based on subscription
Return proper error response if feature is blocked
Example:
{
"message": "Your current subscription does not support this feature",
"feature": "WHATSAPP_NOTIFICATION"
}
🧩 Suggested Components
Services
Entities
SubscriptionPlan
RestaurantSubscription
FeatureConfig (optional)
Enum Suggestions
SubscriptionType
FeatureType
🔗 Areas Where Restriction Will Be Applied
🎯 Expected Outcome
Centralized feature restriction system
Dynamic validation based on restaurant subscription
Reusable and scalable architecture
Easy integration for future premium features
🚀 Tech Stack
📦 Deliverables
Feature validation service
API restriction mechanism
Branch limit validation
Proper exception handling
Reusable architecture for future modules
PR targeting gssoc_develop
Happy Contributing 🚀
📌 Description
Currently, subscription plans are being introduced in RestroHub. Along with subscription CRUD APIs, we also need a centralized system to dynamically restrict feature access based on the restaurant’s active subscription plan.
This issue focuses specifically on implementing feature-level restriction and validation logic.
🎯 Objective
Create a reusable subscription validation system that controls feature access dynamically across backend APIs and services.
🛠️ Scope of Work
Backend
Create centralized subscription validation module/service
Validate restaurant subscription before feature execution
Add reusable feature access methods like:
canUseWhatsApp()canUseAiTranslation()canAddBranch()canUseCustomDomain()Add branch limit validation logic
Handle custom plan configurations dynamically
Middleware / Interceptor
Implement reusable request validation:
Spring Interceptor / Filter / Aspect
Restrict API access based on subscription
Return proper error response if feature is blocked
Example:
🧩 Suggested Components
Services
SubscriptionValidationServiceFeatureAccessServiceEntities
SubscriptionPlanRestaurantSubscriptionFeatureConfig(optional)Enum Suggestions
SubscriptionTypeFeatureType🔗 Areas Where Restriction Will Be Applied
WhatsApp Notification APIs
AI Translation APIs
Website Template APIs
Branch Creation APIs
Custom Domain APIs
Future premium features
🎯 Expected Outcome
Centralized feature restriction system
Dynamic validation based on restaurant subscription
Reusable and scalable architecture
Easy integration for future premium features
🚀 Tech Stack
Spring Boot
JPA/Hibernate
REST APIs
Spring Interceptor / AOP (optional)
📦 Deliverables
Feature validation service
API restriction mechanism
Branch limit validation
Proper exception handling
Reusable architecture for future modules
PR targeting
gssoc_developHappy Contributing 🚀