Files
route-commerce/docs/ADMIN_FUNCTIONALITY_CHECKLIST.md
tyler 03ae372509 fix(home): resilient homepage animations + anchors + counters
Subagent 1 (Codex review pass):

LandingPageClient.tsx
- Guard GSAP .scroll-reveal loop to prevent 'missing target' warnings when no targets exist

brands/page.tsx
- Comment cleanup for selector scoping

tuxedo/page.tsx
- Add pageScopeRef + use as explicit GSAP context scope (fixes 'Invalid scope' warnings)
- Reduced-motion guard for counter animations
- Comments noting scope is now resilient

HeroSection.tsx
- Wrap sections in containerRef for proper GSAP context
- Reduced-motion support (final states shown immediately, no heavy anims)
- Counter animation: switched from textContent tween (unreliable, left values at 0) to proxy object pattern (val -> display)
- Added IO + rAF fallback if GSAP is unavailable
- Added section ids: #features, #stats, #reviews (matches nav anchors)
- Reduced blank scroll region (300vh -> 140vh on story section)
- Removed duplicate inline footer (LandingPageWrapper <Footer /> now sole source)

LandingPageWrapper.tsx
- Anchor comments noting ids added in HeroSection

Docs + scripts:
- docs/ADMIN_FUNCTIONALITY_CHECKLIST.md (admin app coverage notes)
- docs/pricing-assessment.md (pricing model notes)
- scripts/apply-admin-create-stop.js, check-stop-fns*.js, verify-stop-fns.js (admin stop creation tooling)
2026-06-03 15:36:40 +00:00

5.8 KiB

Admin Functionality Checklist

Use this for manual regression passes after changes (dev mode + dev auth).

Roles to Test

  • platform_admin (full access, all brands)
  • brand_admin (scoped to assigned brand)
  • store_employee (limited: pickup, wholesale only)

Auth via existing dev flow (/login sets dev_session cookie) or /admin/test-auth, /admin/debug-auth.

Core Apps

Orders

  • Dashboard "New Order" and "Create your first order" open usable create flow (?new=true modal or /new)
  • Create order: customer name/email/phone, stop (or ship-only), add multiple items (qty/price/fulfillment mix), totals, submit → appears in list + detail page
  • List: filters, search, bulk pickup mark, pagination, status tabs
  • Detail: view items/totals/payment, edit form, pickup action, refunds
  • Permissions: brand_admin sees only own brand; employee redirected
  • Empty states and toasts work

Products

  • List (active only, brand scoped)
  • New product form (/products/new) → creates and appears in list
  • Edit product (/products/[id]): change name/price/type/active/image/pickup_type/taxable → saves, list + detail update (router.refresh or state)
  • Delete (if present)
  • Import
  • Image upload + remove

Stops / Tours

  • List
  • New stop (/stops/new)
  • Edit stop
  • Publish / status changes
  • Used in order create picker

Communications (Harvest Reach)

  • Main page tabs: campaigns, contacts, segments, templates, compose, logs, analytics, settings, abandoned carts, welcome sequence
  • Single coherent compose experience (no confusing duplication between /compose and main "compose" tab)
  • Audience preview (stop/segment/custom rules) shows visible count + sample customers
  • Create/edit/save draft campaign, preview, send (test lists only)
  • Contacts CRUD + import + export + opt out
  • Segments builder + preview
  • Templates
  • Abandoned cart + welcome automation flows (preview/send/resend)
  • Feature gated when add-on disabled

Settings

  • Billing
    • Consistent view: plan tier + price (annual/monthly toggle), "active subscription" state clear, usage numbers (products/stops/users) match dashboard, enabled add-ons list with correct remove capability, recent invoices match displayed amounts
    • No contradictory "No active subscription" + active add-ons + invoices
    • Upgrade, add-on checkout, portal buttons, Stripe connect if applicable
  • Integrations
    • Resend/Twilio/Stripe/etc. forms: non-secret fields (email, name, phone) visible as text; secrets masked + toggle
    • Test connection buttons (safe)
  • AI / Advanced
    • Real content or proper sections (not pure redirects); links to providers, preferences, feature flags
  • Other: brand, apps (feature toggles), payments, shipping, square-sync, users

Wholesale

  • Dashboard stats, customers list + create/edit, products (custom pricing), orders (fulfill, deposits, notifications)
  • Portal (employee or approved buyer): register, login, browse with custom pricing, cart, checkout

Water Log

  • Admin: headgates, irrigators/users (create with pin reset), entries, settings, alerts
  • Field/pin flows (separate water/ login)
  • Permission: can_manage_water_log or platform for TUXEDO brand

Time Tracking

  • Admin: workers (create/pin reset), tasks, logs, summary, settings, overtime notifications
  • Field clock in/out with pin
  • Reports/export

Route Trace

  • Lots CRUD, QR/sticker gen, lookup, hauling board, supply chain trace, stats, inventory by crop
  • Feature gated

Import Center + AI Import

  • Upload/parse for products/orders/contacts/stops
  • AI column mapping (if enabled)
  • Execution (safe on test data)

Other Admin

  • Users (platform): CRUD
  • Reports / Analytics / Command Center: load data, exports
  • Pickup (driver): lookup, QR, mark complete
  • Shipping: orders, FedEx rates/labels, tracking
  • Taxes: calc + reports
  • Dashboard: quick actions, usage vs limits, recent orders, plan badge, addon cards
  • Layout: no dupe headers/footers inside admin shell; sidebar correct per role

Cross-Cutting

  • All forms use improved AdminInput: clickable labels (htmlFor), real required + aria-required, error/help described
  • No repeated "Invalid scope" or missing target console warnings in admin
  • Brand scoping works (platform sees selector/all; brand_admin filtered)
  • Feature add-on gating (Harvest Reach, Wholesale, AI, Water, Time, Route Trace, SMS)
  • Toasts, loading skeletons, empty states, error messages consistent
  • Responsive (desktop primary)
  • Dev auth + test brands used; no live prod mutations in routine testing

Public / Storefront (secondary but part of full review)

  • Homepage: anchors (#features etc.) work, impact counters animate (not stuck at 0), no long blank regions, no GSAP target/scope errors
  • Tuxedo (and IRD): product sections no visual overlap, Add to Cart buttons visible/sized and functional, stops show real upcoming or clear "none" state, cart blocks checkout when empty, full buyer path (browse → add → cart → checkout → success)
  • Contact: Phone labeled/typed correctly (not email)
  • Public pages: no stray "ADMIN" nav link when not logged in as admin
  • Years: consistent (dynamic preferred)
  • No dupe SiteHeader + StorefrontHeader

Verification Tips

  • Use npm run dev
  • Dev session cookies or test-auth pages
  • Browser devtools: Elements for a11y (labels, aria, required), Console for warnings, Network for action calls
  • Multiple roles + brands
  • After changes: npx tsc --noEmit, npm run build (or at least lint)
  • Update this checklist and MEMORY.md with results

Run this checklist after any admin or storefront changes. Prioritize the Codex blockers first.