fix: Scout tier restrictions - no listings, no sniper alerts
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
Frontend: - Scout: Listings and Sniper marked as unavailable - Updated comparison table Backend TIER_CONFIG: - Scout: domain_limit=5, portfolio_limit=5, listing_limit=0, sniper_limit=0 - Trader: domain_limit=50, portfolio_limit=50
This commit is contained in:
@ -37,12 +37,12 @@ TIER_CONFIG = {
|
||||
"name": "Scout",
|
||||
"price": 0,
|
||||
"currency": "USD",
|
||||
"domain_limit": 10, # Watchlist: 10 (was 5)
|
||||
"portfolio_limit": 3, # Portfolio: 3 (was 0) - taste the feature
|
||||
"listing_limit": 1, # Listings: 1 (was 0) - try selling
|
||||
"sniper_limit": 2, # Sniper alerts
|
||||
"domain_limit": 5, # Watchlist: 5
|
||||
"portfolio_limit": 5, # Portfolio: 5
|
||||
"listing_limit": 0, # Listings: 0 (Trader+ only)
|
||||
"sniper_limit": 0, # Sniper alerts: 0 (Trader+ only)
|
||||
"check_frequency": "daily",
|
||||
"history_days": 7, # 7 days history (was 0)
|
||||
"history_days": 7,
|
||||
"features": {
|
||||
"email_alerts": True,
|
||||
"sms_alerts": False,
|
||||
@ -63,10 +63,10 @@ TIER_CONFIG = {
|
||||
"name": "Trader",
|
||||
"price": 9,
|
||||
"currency": "USD",
|
||||
"domain_limit": 100, # Watchlist: 100 (was 50)
|
||||
"portfolio_limit": 50, # Portfolio: 50 (was 25)
|
||||
"listing_limit": 10, # Listings: 10 (was 5)
|
||||
"sniper_limit": 10, # Sniper alerts
|
||||
"domain_limit": 50, # Watchlist: 50
|
||||
"portfolio_limit": 50, # Portfolio: 50
|
||||
"listing_limit": 10, # Listings: 10
|
||||
"sniper_limit": 10, # Sniper alerts: 10
|
||||
"check_frequency": "hourly",
|
||||
"history_days": 90,
|
||||
"features": {
|
||||
@ -81,7 +81,7 @@ TIER_CONFIG = {
|
||||
"webhooks": False,
|
||||
"bulk_tools": False,
|
||||
"seo_metrics": False,
|
||||
# Yield (DNS routing + landing) is Tycoon-only. Trader can preview ideas in VISION.
|
||||
# Yield Preview only - can see landing page but not activate routing
|
||||
"yield": False,
|
||||
"daily_drop_digest": False,
|
||||
}
|
||||
|
||||
@ -23,8 +23,8 @@ const tiers = [
|
||||
{ text: 'Alert Speed', highlight: false, available: true, sublabel: 'Daily' },
|
||||
{ text: '5 Watchlist Domains', highlight: false, available: true },
|
||||
{ text: '5 Portfolio Domains', highlight: false, available: true },
|
||||
{ text: '1 Listing', highlight: false, available: true, sublabel: 'Try it' },
|
||||
{ text: '2 Sniper Alerts', highlight: false, available: true },
|
||||
{ text: 'Listings', highlight: false, available: false },
|
||||
{ text: 'Sniper Alerts', highlight: false, available: false },
|
||||
{ text: 'Pounce Score', highlight: false, available: true, sublabel: 'Basic' },
|
||||
{ text: 'TLD Intel', highlight: false, available: true, sublabel: 'Public' },
|
||||
],
|
||||
@ -86,8 +86,8 @@ const comparisonFeatures = [
|
||||
{ name: 'Alert Speed', scout: 'Daily', trader: 'Hourly', tycoon: 'Every 5 min' },
|
||||
{ name: 'Watchlist', scout: '5 Domains', trader: '50 Domains', tycoon: 'Unlimited' },
|
||||
{ name: 'Portfolio', scout: '5 Domains', trader: '50 Domains', tycoon: 'Unlimited' },
|
||||
{ name: 'Listings', scout: '1 (Try it)', trader: '10 (0% Fee)', tycoon: 'Unlimited + Featured' },
|
||||
{ name: 'Sniper Alerts', scout: '2', trader: '10', tycoon: '50' },
|
||||
{ name: 'Listings', scout: '—', trader: '10 (0% Fee)', tycoon: 'Unlimited + Featured' },
|
||||
{ name: 'Sniper Alerts', scout: '—', trader: '10', tycoon: '50' },
|
||||
{ name: 'Valuation', scout: 'Basic Score', trader: 'Pounce Score', tycoon: 'Score + SEO' },
|
||||
{ name: 'TLD Intel', scout: 'Public', trader: 'Renewal Prices', tycoon: 'Full History' },
|
||||
{ name: 'Yield', scout: '—', trader: 'Preview', tycoon: 'Active Routing' },
|
||||
|
||||
@ -75,8 +75,8 @@ export default function MyListingsPage() {
|
||||
const [menuOpen, setMenuOpen] = useState(false)
|
||||
|
||||
const tier = subscription?.tier || 'scout'
|
||||
const listingLimits: Record<string, number> = { scout: 1, trader: 10, tycoon: Infinity }
|
||||
const maxListings = listingLimits[tier] || 1
|
||||
const listingLimits: Record<string, number> = { scout: 0, trader: 10, tycoon: Infinity }
|
||||
const maxListings = listingLimits[tier] || 0
|
||||
const canAddMore = listings.length < maxListings
|
||||
const isTycoon = tier === 'tycoon'
|
||||
const isUnlimited = tier === 'tycoon'
|
||||
|
||||
@ -82,8 +82,8 @@ export default function SniperAlertsPage() {
|
||||
const [menuOpen, setMenuOpen] = useState(false)
|
||||
|
||||
const tier = subscription?.tier || 'scout'
|
||||
const alertLimits: Record<string, number> = { scout: 2, trader: 10, tycoon: 50 }
|
||||
const maxAlerts = alertLimits[tier] || 2
|
||||
const alertLimits: Record<string, number> = { scout: 0, trader: 10, tycoon: 50 }
|
||||
const maxAlerts = alertLimits[tier] || 0
|
||||
// Limits match backend TIER_CONFIG.sniper_limit
|
||||
const canAddMore = alerts.length < maxAlerts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user