Files
descrybe/docs/plan-permissions/01-dashboard-feature-catalog.md
T
greeneclipse 8580c996c3 Initial commit of Descrybe v2 without local scratch artifacts.
Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
2026-08-09 22:47:43 +02:00

21 KiB
Raw Blame History

User dashboard feature catalog (agent 1/10)

Inventory of signed-in user dashboard surfaces: everything rendered in the dashboard shell (+layout.svelte branch that is not marketing, auth, or /admin/*). Sources: Nav.svelte, route +page.svelte files, plan-gates.ts, billing-display.ts, pricing-data.ts, entitlements.go, AssertCanStartProcessing, and UI upgrade banners.

Plan ladder (API defaults): Free → Starter → Plus → Growth → Business → Scale → Enterprise (apps/api/internal/billing/service.go defaultPublicPlans, apps/web/src/lib/components/pricing/pricing-data.ts).

Plan SKU cap Monthly AI credits Paid (is_paid_plan)
Free 50 0 No
Starter 100 100 Yes
Plus 400 400 Yes
Growth 1,200 1,200 Yes
Business 4,000 4,000 Yes
Scale 12,000 12,000 Yes
Enterprise Unlimited (max_products null) 1,000,000 wallet grant Yes (custom)

Enforced today (API): product SKU cap (ErrProductLimitExceeded), AI credit wallet + can_use_ai for AI-only processing (ErrAIRequiresUpgrade / ErrInsufficientCredits), email live-send blocked on Free (email/service.go dry-run), campaign AI generate (campaigns/generate_send.go), brand voice injection in AI prompts (AIBrandApplyAllowed → paid or trial). EPREL is not plan-gated (CanUseEPREL always true).

Marketing copy only (not found enforced in API): per-plan feed-source counts, export-feed counts, storage GB, WooCommerce “test vs full sync”, API read vs full access tiers, BYOK add-on packaging. Flag these when designing admin toggles — they need new enforcement or stay documentation-only.


Admin toggle groups

Use these sections when grouping feature_key toggles in an admin plan editor.

Section key Scope
shell Global chrome: nav, header, command palette, tutorial, company switcher
dashboard Home / overview
catalog Products, categories, attributes, standard fields, structured descriptions
feeds Import feeds, mapping, export feeds, file uploads
stores Store hub, WooCommerce, Shopify connectors
processing Background job monitor
marketing Campaigns, calendar, brand, SEO, reviews
integrations AI BYOK, email sending
billing Billing, plans, checkout
settings Account, company, alerts, API keys, team
support Support center
capabilities Cross-cutting gates (AI, SKU cap, email send, etc.)

Shell (shell)

feature_key UI location User actions Default by plan
shell.navigation Sidebar Nav.svelte — primary + More (Setup / Operate) Navigate all dashboard routes; mobile drawer All plans
shell.command_palette Header area + CommandPalette.svelte (⌘K) Quick-jump to Products, Feeds, Processing, Export, Settings, Billing, Support All plans
shell.company_switcher DashboardHeaderCompanySwitcher.svelte Switch active company/workspace All plans (multi-company users)
shell.support_notifications SupportNotificationBell.svelte Poll staff replies; open support tickets All plans
shell.tutorial Header tutorial buttons + TutorialOverlay.svelte Start / resume / browse guided tour All plans
shell.account_menu Header avatar → /settings Open account settings All plans
shell.billing_recovery_banner BillingRecoveryBanner.svelte (layout) Past-due or missing-plan recovery CTAs All plans (state-driven)

Dashboard (dashboard)

feature_key Route / component User actions Default by plan
dashboard.overview /dashboarddashboard/+page.svelte Welcome, plan/credit summary All
dashboard.stats DashboardStats.svelte View SKU count, active jobs, credits used/remaining All
dashboard.quick_links Dashboard shortcuts section Jump to Products, Feeds, Processing All
dashboard.recent_jobs Dashboard jobs list View recent processing jobs, open Processing All
dashboard.news_feed NewsFeed.svelte Product news / announcements All
dashboard.activation_checklist ActivationChecklist.svelte First-run onboarding steps All
dashboard.migrated_checklist MigratedCohortChecklist.svelte Post-migration cutover checklist (cohort flag) All (cohort)
dashboard.etl_gaps MigratedEtlGapsPanel.svelte Migration gap warnings All (cohort)
dashboard.store_reconnect StoreReconnectBanner.svelte Reconnect broken store credentials All
dashboard.upgrade_banners UpgradeBanner.svelte on dashboard Free plan, out-of-credits, SKU limit, trial, low credits Gated messaging — see capabilities

Catalog (catalog)

Products — /products

feature_key UI location User actions Default by plan
catalog.products Nav Productsproducts/+page.svelte Browse, filter, sort, select products All
catalog.products.tab_processed ProductTabs.svelte View completed processed products All
catalog.products.tab_needs_review Product tabs Review AI enrichment before accept All (needs AI run)
catalog.products.tab_error Product tabs View failed processing rows All
catalog.products.tab_processing Product tabs View in-flight rows All
catalog.products.tab_unprocessed Product tabs View raw / unprocessed inventory All
catalog.products.process_categories ProductProcessingActions Run category assignment (no AI credits) All
catalog.products.process_attributes Processing actions Normalize specs / fill attributes (no AI) All
catalog.products.process_ai_titles Processing actions AI title generation Starter+ or Free with credits
catalog.products.process_ai_descriptions Processing actions AI description generation Starter+ or Free with credits
catalog.products.enrichment_review ProductEditPanel.svelte Accept / reject / edit AI fields All (after AI run)
catalog.products.inline_rename Product table Quick rename processed titles All
catalog.products.export_selection Processing actions export Export selected products All
catalog.products.upgrade_prompt Upgrade banners on products page Free-plan and credit-limit CTAs Already gated (UI)

Categories — /categories, /categories/[id]/title-formula, /categories/[id]/description-formula

feature_key UI location User actions Default by plan
catalog.categories Nav More → Categories List/edit category tree All
catalog.categories.title_formula Title formula page Build title formulas with variables Free: basic (1 cat marketing); Starter+: full
catalog.categories.description_formula Description formula page Build description formulas Same as title formulas

Attributes — /attributes

feature_key UI location User actions Default by plan
catalog.attributes Nav More → Attributes Define attribute definitions All
catalog.attributes.bulk_import Attributes Bulk Import tab CSV bulk import attributes All

Standard fields — /standard-fields

feature_key UI location User actions Default by plan
catalog.standard_fields Nav More → Standard Fields Manage field dictionary All
catalog.standard_fields.groups Standard Fields Groups tab Organize fields into groups All
feature_key Route User actions Default by plan
catalog.structured_descriptions /structured-descriptions Structured description field config All
catalog.vector_categories /vector-categories Dev/test vector index (Pinecone) All if Pinecone configured

Feeds (feeds)

Import feeds — /feeds

feature_key UI location User actions Default by plan
feeds.list Nav Feeds List supplier feeds, search, stats All (Free marketing: 1 source)
feeds.add_url Add feed dialog Feed URL tab Add HTTP(S) feed URL All
feeds.add_csv Add feed CSV file tab Upload CSV as feed source All
feeds.sync Per-feed sync actions Trigger feed sync (FTP unsupported in UI) All
feeds.delete Feed row actions Delete feed All

Feed mapping — /feeds/[feedId]/mapping

feature_key UI location User actions Default by plan
feeds.mapping From feeds list → Map Map supplier fields to standard fields All
feeds.mapping.select_item Mapping tab 1 Pick XML/CSV item element All
feeds.mapping.map_fields Mapping tab 2 Column / path mapping, transforms All
feeds.mapping.queue_processing Post-map CTA Queue products for processing after sync All (AI steps follow capability gates)

Export feeds — /export-feeds

feature_key UI location User actions Default by plan
feeds.export_feeds Nav Export feeds List channel export definitions All (Free marketing: 1 export)
feeds.export_feeds.create Create / edit dialog Configure export format & filters All
feeds.export_feeds.generate Generate action Run export generation (rate-limited API) All
feeds.export_feeds.public_url Public URL display Copy signed export URL All

Uploads — /files

feature_key Route User actions Default by plan
feeds.uploads /files List/delete CSV uploads; link to product import All

Stores (stores)

Hub — /stores

feature_key UI location User actions Default by plan
stores.hub Nav Stores Overview of WooCommerce / Shopify cards All
stores.hub.api_keys_link Stores page Deep-link to Settings → API keys All

WooCommerce — /woocommerce

feature_key Tab / section User actions Default by plan
stores.woocommerce Nav More → Reviews uses ?tab=reviews Full WooCommerce integration page All
stores.woocommerce.connection Connection tab Store URL, credentials, test connection Free: test/limited (marketing); Starter+: full
stores.woocommerce.categories Categories tab Sync categories to/from Woo Plan-dependent (marketing)
stores.woocommerce.attributes Attributes tab Sync attributes Plan-dependent (marketing)
stores.woocommerce.orders Orders tab View recent orders All
stores.woocommerce.reviews Reviews tab Manage product reviews All
stores.woocommerce.settings Settings tab Sync options, overwrite guards All
stores.woocommerce.queue_sync Push products to Woo Queue catalog sync jobs Gated by processing/SKU caps

Shopify — /stores/shopify (also /shopify legacy)

feature_key Tab User actions Default by plan
stores.shopify Stores hub → Shopify Shopify connector All
stores.shopify.connection Connection tab OAuth / API connection All
stores.shopify.orders Orders tab View orders All
stores.shopify.settings Settings tab Sync settings All
stores.shopify.queue_sync Sync actions Push products to Shopify Gated by processing/SKU caps

Processing (processing)

feature_key Route User actions Default by plan
processing.monitor Nav More → Processing (/processing, alias /tasks) Live job list, refresh, auto-poll All
processing.job_cancel Job row actions (if present) Cancel / retry failed jobs All
processing.pipeline_steps Job detail / description normalize → specs → fill → EPREL → AI EPREL all; AI gated

Marketing (marketing)

Campaigns — /campaigns, /campaigns/new, /campaigns/[id]

feature_key UI location User actions Default by plan
marketing.campaigns Nav More → Campaigns List seasonal email campaigns All
marketing.campaigns.create /campaigns/newCampaignWizard.svelte Pick season, audience, products All
marketing.campaigns.generate_ai Wizard generate step AI email draft generation Starter+ (showUpgrade on Free)
marketing.campaigns.send Wizard / campaign detail Send or schedule blast Free: dry-run only (email service)
marketing.campaigns.edit_content Campaign editor Edit subject/body HTML All

Content calendar — /marketing/calendar

feature_key Route User actions Default by plan
marketing.content_calendar Nav More → Content calendar Seasonal presets, link campaigns to dates, export feed prep All

Brand — /brand

feature_key Route User actions Default by plan
marketing.brand_kit Nav More → Brand Edit voice, colors, logo, preferred terms All (view); admin edit
marketing.brand_ai_apply Brand + formula previews Inject brand voice into AI enhance prompts Starter+ (ai_apply_allowed API)

SEO — /seo

feature_key Route User actions Default by plan
marketing.seo Nav More → SEO SEO checklist scores, recommendations All
marketing.seo.template_fill SEO actions Rule-based meta template fill All
marketing.seo.ai_rewrite SEO actions AI meta rewrite Starter+ or credits (can_use_ai)

Reviews — /woocommerce?tab=reviews

feature_key Route User actions Default by plan
marketing.reviews Nav More → Reviews WooCommerce reviews tab All

Integrations (integrations)

AI — /integrations/ai

feature_key Route User actions Default by plan
integrations.ai Nav More → AI integrations Configure OpenAI / platform AI modes All
integrations.ai.byok AI integrations page Bring-your-own API key Growth+ marketing (BYOK add-on); Business included

Email — /integrations/email

feature_key Route User actions Default by plan
integrations.email Nav More → Email sending Resend or SMTP credentials All
integrations.email.test Test send Send test email (may dry-run) Free: dry-run
integrations.email.blast Blast dialog Marketing blast to audience Free: dry-run forced

Billing (billing)

feature_key Route User actions Default by plan
billing.overview Nav Billing /billing Plan name, credits, SKU usage, subscription status All
billing.customer_portal Billing page Open Stripe Customer Portal (company admin) Paid plans with Stripe
billing.quick_upgrade Billing quick upgrade cards Checkout Starter / Growth / Business Company admin
billing.add_credits Billing dialog (if shown) Purchase extra credits Paid
billing.plans_compare /plans (linked from banners) Compare public ladder, feature matrix All
billing.checkout /plans + Billing Stripe Checkout self-serve upgrade Company admin; StarterBusiness

Settings (settings)

feature_key Tab (/settings?tab=) User actions Default by plan
settings.profile profile Name, language, save profile All
settings.company company Company name, locale, branding prefs Company admin
settings.alerts alerts In-app alert preferences (alert-prefs.ts) All
settings.api_keys api-keys Create/revoke company API keys Free marketing: no API; Starter+: read/full per marketing
settings.team team Invite members, roles, demote/remove Company admin
settings.team_invite Team tab dialog Send teammate invite Company admin

Support (support)

feature_key Route User actions Default by plan
support.center Nav More → Support /support List own tickets All
support.ticket_create /support/new Open new ticket All
support.ticket_thread /support/[ticketId] Reply, read staff messages All

Capabilities (capabilities) — cross-cutting gates

These map to API enforcement and/or prominent UI locks. Prefer admin toggles here for plan matrices.

feature_key Enforced where Behavior Suggested defaults
capability.sku_cap AssertCanStartProcessing, at_product_limit on /api/auth/me Blocks new processing when processed SKU count ≥ plan max_products Free 50 · Starter 100 · Plus 400 · Growth 1.2k · Business 4k · Scale 12k · Enterprise unlimited
capability.ai_credits Entitlements can_use_ai, credit wallet debit AI jobs need credits or paid plan Free 0/mo · Starter 100 · Plus 400 · Growth 1.2k · Business 4k · Scale 12k · Enterprise unlimited
capability.ai_processing Processing pipeline + products UI Title/description/enhance/seo AI types Off on Free unless credits; on paid
capability.eprel CanUseEPREL (always true) EU energy label enrichment All plans
capability.normalize_specs_fill Pipeline steps without AI Category, attributes, normalize All plans
capability.campaign_ai campaigns/generate_send.go AI campaign copy generation Starter+
capability.email_live_send email/service.go dry-run Real marketing email delivery Free dry-run; paid live (unless EMAIL_DRY_RUN)
capability.brand_ai_apply AIBrandApplyAllowed Brand voice in AI prompts Paid or trial
capability.seo_ai_rewrite SEO API can_use_ai AI meta rewrite on SEO page Same as AI credits
capability.feed_source_limit Marketing only (pricing-data) Max import feed sources Free 1 · Starter 2 · Plus 3 · Growth 5 · Business 8 · Scale 12 · Enterprise unlimited
capability.export_feed_limit Marketing only Max export feed definitions Free 1 · Starter 2 · Plus 4 · Growth 8 · Business unlimited · Scale unlimited · Enterprise unlimited
capability.storage_limit Marketing only Storage GB Free 2 · Starter 20 · Growth 100 · Business 500 · Enterprise unlimited
capability.api_access Marketing only (keys UI exists for all) REST / v1 API Free off · Starter read · Growth+ full
capability.byok AI integrations UI Customer OpenAI key Growth add-on · Business included · Enterprise

Already gated in UI (summary)

Surface Gate signal feature_key
Products processing menu canUseAI locks AI options catalog.products.process_ai_*
Products / Dashboard / Billing banners isFreePlan, credits, SKU limit dashboard.upgrade_banners, catalog.products.upgrade_prompt
Campaign wizard showUpgrade on Free marketing.campaigns.generate_ai
SEO page showUpgrade, report.can_use_ai marketing.seo.ai_rewrite
Brand page ai_apply_allowed alert marketing.brand_ai_apply
Email integrations dry_run_forced banner integrations.email.blast
API processing start HTTP 402 plan_gate codes capability.ai_processing, capability.sku_cap

Routes in dashboard shell but excluded from this catalog

Path Reason
/admin/* Platform admin (separate shell)
/login, /register, /accept-invite Auth shell
/, /pricing, /features, /docs, /privacy, /terms, /unsubscribe Marketing shell (MARKETING_PATHS)
/integrations Redirects to /stores

Navigation index (primary + More)

Primary (Nav.svelte primaryItems): Dashboard, Products, Feeds, Stores, Export feeds, Billing.

More → Setup: Categories, Attributes, Standard Fields, Brand, Settings, AI integrations, Email sending, Platform admin (platform admins only).

More → Operate: Processing, Campaigns, Content calendar, SEO, Reviews, Support.