01
Project Architecture
Full WordPress stack overview — what goes where, why it was chosen, and how pieces interact.
Stack Philosophy: Astra Pro (theme) + Elementor Pro (builder) + WooCommerce (shop) is the same core stack that powers Shiprocket's WordPress site. This combination gives you pixel-perfect control without custom PHP development for 95% of the build.
Directory Structure Overview
directory
# WordPress root wp-content/ ├── themes/ │ └── astra/ # Astra parent theme (DO NOT edit) │ └── astra-child/ # Child theme — ALL custom CSS/PHP here │ ├── style.css │ ├── functions.php # Enqueue scripts, custom hooks │ └── assets/ │ ├── css/custom.css # Global overrides │ └── js/main.js # Counter anims, scroll effects ├── plugins/ │ ├── elementor/ # Free Elementor │ ├── elementor-pro/ # Pro — mega menu, forms, motion │ ├── woocommerce/ # Shop engine │ ├── rank-math-pro/ # SEO + schema │ ├── wp-rocket/ # Caching + performance │ ├── imagify/ # Image compression │ ├── wpforms-pro/ # Demo request forms │ ├── fluent-crm/ # Email automation │ └── custom-fonts/ # Self-hosted DM Sans └── uploads/ └── na-assets/ # Logos, product images (WebP)
Important: Never install Elementor's Hello theme — use Astra. Hello theme strips too much browser styling and causes layout inconsistencies with WooCommerce templates. Astra Pro's WooCommerce compatibility is significantly better tested.
Plugin Interaction Map
Astra Pro + Elementor Pro
Astra handles: global typography, header/footer builder, mega menu. Elementor handles: all page content sections. The two communicate via Astra's "Elementor Header & Footer" integration — enable in Astra → Integrations.
Elementor Pro + WPForms
Elementor Pro has its own form widget — but use WPForms for software demo request forms (NVivo, XLSTAT etc.) because WPForms has better conditional logic and FluentCRM integration. Embed WPForms via shortcode inside Elementor HTML widget.
WooCommerce + Elementor
Enable "WooCommerce" module in Elementor Pro settings. This unlocks Product Grid, Cart, Mini Cart, My Account widgets. Build custom product archive and single product pages entirely in Elementor. Override default WooCommerce templates this way — no PHP template overrides needed.
WP Rocket + Elementor
WP Rocket's CSS/JS minification can break Elementor animations. In WP Rocket → File Optimization, add
elementor and elementor-pro to the "Excluded CSS files" list. Enable "Load JS Deferred" but exclude Elementor's JS bundles.02
Design System — Visual DNA
Everything the developer needs to make consistent design decisions without going back to a designer.
Design Inspiration Source: Shiprocket uses a clean, high-contrast SaaS aesthetic — white backgrounds, bold section headlines, dark navy sections for contrast breaks, and a single bold CTA color (orange/brand). NA adopts the same structure adapted to an edu-analytics brand identity.
Core Brand Values → Design Decisions
Precision & Analytical
Sharp corners on data elements, monospace type for stats/numbers, structured grid layouts. No rounded blobs or organic shapes.
Academic Authority
Deep navy primary color (trust, authority). Clean whitespace. Restrained use of color — only 1 accent per section.
Modern & Approachable
DM Sans body font (friendly, readable). Ample padding. Smooth hover animations. No harsh shadows or heavy borders.
Shadow System
CSS Variables
:root { /* Shadows — use only these 3 levels */ --shadow-sm: 0 1px 3px rgba(13,27,42,0.06), 0 1px 2px rgba(13,27,42,0.04); --shadow-md: 0 4px 16px rgba(13,27,42,0.08), 0 2px 6px rgba(13,27,42,0.05); --shadow-lg: 0 12px 40px rgba(13,27,42,0.12), 0 4px 12px rgba(13,27,42,0.07); --shadow-card-hover: 0 20px 60px rgba(13,27,42,0.15); /* Border radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 20px; --radius-pill: 999px; /* Transitions */ --transition-fast: 0.15s ease; --transition-base: 0.25s ease; --transition-slow: 0.4s ease; }
03
Typography System
Exact font specs, size scale, weight usage, and how to configure in Astra + Elementor.
Font Choices
Syne — Display / Headings
Weights: 700, 800. Used for: H1, H2, H3, section titles, stat numbers. Bold geometric character signals precision and authority. Loaded from Google Fonts.
fonts.googleapis.com/css2?family=Syne:wght@700;800
DM Sans — Body / UI
Weights: 300, 400, 500, 600. Used for: body text, nav, buttons, captions. Excellent readability at small sizes. Friendly but professional tone.
fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600
DM Mono — Data / Labels
Weights: 400, 500. Used for: stat counter numbers, code snippets, price labels, table headers, badge text. Monospace signals precision — critical for analytics brand.
fonts.googleapis.com/css2?family=DM+Mono:wght@400;500
Type Scale — Exact Specs
India's Leading EdTech & Analytics Distributor
Why 500+ Institutions Trust Us
Graphing Calculators
We are the authorized distributor of Texas Instruments, XLSTAT, NVivo, SmartPLS, and EViews across India, Nepal, Bhutan, Sri Lanka, and Bangladesh.
Product description text, feature bullets, FAQ body copy, blog excerpt text.
NEW ARRIVAL · BEST SELLER · IB APPROVED
500+
Configuring in Astra Pro
Go to Appearance → Customize → Global → Typography and set:
Astra Customizer Settings
/* Body Font */ Font Family: DM Sans Font Size: 15px Font Weight: 400 Line Height: 1.75 /* Headings — then override per-heading below */ H1: Syne | 60px | 800 | Line Height: 1.1 H2: Syne | 40px | 700 | Line Height: 1.2 H3: Syne | 24px | 700 | Line Height: 1.3 H4: DM Sans | 18px | 600 | Line Height: 1.4 H5: DM Sans | 15px | 600 H6: DM Mono | 12px | 500 | Text Transform: uppercase | Letter Spacing: 0.1em
04
Color Token System
Full hex values, CSS variable names, when to use each, and where to set them in Astra + Elementor.
CSS Custom Properties — paste into child theme style.css
:root { /* === BRAND CORE === */ --na-navy: #0D1B2A; /* Dark sections, footer bg, text on light */ --na-blue: #1A3E8C; /* Primary brand — nav, headings, links */ --na-blue-mid: #2563EB; /* Button hover, active states */ --na-blue-light: #EFF6FF; /* Section backgrounds, card tints */ --na-sky: #0EA5E9; /* Secondary accent — sky blue highlights */ /* === ACTION / CTA === */ --na-orange: #F0842C; /* Primary CTA buttons — "Explore Now", "Buy" */ --na-orange-dark: #C96B1A; /* Button hover darken */ --na-orange-light:#FFF4EC; /* Promo banners, announcement bar bg */ /* === NEUTRALS === */ --na-white: #FFFFFF; --na-bg: #F8FAFC; /* Page background, alt sections */ --na-bg-2: #EEF2F7; /* Card tint, table striping */ --na-border: #D1D9E6; /* All borders, dividers */ --na-text: #0D1B2A; /* Body text on white */ --na-muted: #64748B; /* Secondary text, captions */ --na-light-text: #94A3B8; /* Placeholder, disabled text */ /* === SEMANTIC === */ --na-success: #16A34A; /* "In Stock", success alerts */ --na-error: #DC2626; /* Error states, "Out of Stock" */ --na-warning: #D97706; /* Low stock, form warnings */ --na-info: #0284C7; /* Info tooltips, notices */ }
Configuring in Elementor Global Colors
Go to Elementor → Site Settings → Global Colors and create these named swatches. Every widget then references these names instead of hex values — changing one hex updates the entire site.
Elementor Global Color Names
- Primary — #1A3E8C (NA Blue)
- Secondary — #F0842C (Action Orange)
- Text — #0D1B2A (NA Navy)
- Accent — #0EA5E9 (Sky Blue)
- Body BG — #F8FAFC
- Dark BG — #0D1B2A (for dark sections)
- Muted — #64748B
- Success — #16A34A
Section Background Patterns
- White section — #FFFFFF (most sections)
- Light grey section — #F8FAFC (alternating)
- Blue tint section — #EFF6FF (features/services)
- Dark navy section — #0D1B2A (stats, CTA strip)
- Orange strip — #F0842C (announcement bar, promo)
05
Spacing & Layout Grid
Container widths, section padding rules, column gaps — the exact values to use in Elementor.
Container Width
Set in Astra → Customize → Layout → Container. Max width:
1200px. Content width: 1100px. Sidebar layout: none (full width). This matches Shiprocket's content column width exactly.Section Padding
Every homepage section:
padding: 90px 0 on desktop. Tablet: 60px 0. Mobile: 48px 0. Set as Elementor Section defaults in Site Settings → Layout. Never use less than 60px vertical padding — whitespace is key to Shiprocket's clean look.Column Gap
Elementor Section → Layout → Columns Gap: set to
20px for standard sections, 32px for feature card grids, 12px for tight icon grids. Never use Elementor's default "Wide" gap — it's too large.8px Base Grid
All spacing values must be multiples of 8px: 8, 16, 24, 32, 40, 48, 56, 64, 80, 96. In Elementor widget margins/padding, never use odd values like 15px or 22px. This maintains visual rhythm throughout the page.
Breakpoints (Elementor + Astra)
Elementor Breakpoints — set in Site Settings → Breakpoints
/* Elementor Pro Custom Breakpoints */ Desktop: 1200px+ /* Full layout, 4 col grids */ Laptop: 1024px /* Reduce column counts, slightly smaller type */ Tablet: 768px /* 2-col becomes 1-col, nav collapses */ Mobile L: 480px /* Single column, stacked layout */ Mobile S: 360px /* Smallest breakpoint — hero text tightens */ /* Astra → Customize → Responsive → Breakpoints */ Tablet Breakpoint: 921px /* When hamburger menu shows */ Mobile Breakpoint: 544px
06
Theme Framework — Astra Pro
Every critical Astra Pro setting that must be configured before touching Elementor.
Astra Pro — Critical Settings Checklist
1
Install child theme immediately
Create
astra-child/style.css with Template: astra header. Register parent stylesheet in functions.php. All custom CSS goes in child — never in the parent or the Customizer's Additional CSS (that gets wiped on theme updates).wp-content/themes/astra-child/functions.php
PHP — functions.php
<?php // Enqueue parent + child styles add_action( 'wp_enqueue_scripts', function() { wp_enqueue_style( 'astra-parent', get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'na-child', get_stylesheet_directory_uri() . '/style.css', ['astra-parent'] ); wp_enqueue_style( 'na-custom', get_stylesheet_directory_uri() . '/assets/css/custom.css', ['na-child'] ); wp_enqueue_script( 'na-main', get_stylesheet_directory_uri() . '/assets/js/main.js', ['jquery'], null, true // true = load in footer ); }); ?>
2
Header Builder Configuration
Astra Pro → Customize → Header Builder. Use 3-row layout: Row 1 = announcement bar, Row 2 = main nav (logo left, menu center, CTA buttons right), Row 3 = empty. Enable sticky header on Row 2 only. Set header background to white, add 1px bottom border in scroll state.
Header Builder Exact Layout
- Above Header: Full-width orange bar. Logo left, text center, button right. Height: 40px.
- Main Header: Logo (left 200px), Nav Menu (center), [Cart icon + "Request Demo" button] (right).
- Sticky: Enable on scroll. Transparent → white transition at 80px scroll. Add box-shadow on sticky.
- Mobile: Logo left, hamburger right. Slide-in menu from right side. Dark overlay on menu open.
Astra Pro Settings to Enable
- Sticky Header → ✅ Enable
- Transparent Header on Homepage → ✅ Enable (hero section)
- Header Sections → ✅ Above Header
- Mega Menu → ✅ Enable (via Astra Pro)
- Mobile Menu → Slide-in, position: right
- Page Header (breadcrumbs) → ✅ Enable on inner pages
- Sidebar → ✅ Disable globally, enable on Blog only
07
Elementor Pro — Deep Configuration
The master settings, custom widgets to use, performance traps to avoid, and section-by-section build guidance.
Critical First Step: Go to Elementor → Settings → Advanced → CSS Print Method → set to "Internal Embedding" NOT "External File". External CSS files cause FOUC (flash of unstyled content) and fail WP Rocket caching. This is the #1 Elementor performance mistake.
Elementor Pro Site Settings — Required Configuration
Elementor Site Settings Checklist
/* Site Settings → Global Colors → add 8 named colors (see Section 04) */ /* Site Settings → Global Fonts → set Syne + DM Sans + DM Mono */ /* Settings → General */ Disable Default Colors: YES Disable Default Fonts: YES Load Google Fonts: Self-Hosted /* Critical for GDPR + Core Web Vitals */ /* Settings → Advanced */ CSS Print Method: Internal Embedding Improved Asset Loading: ENABLE /* Loads only needed CSS per page */ Optimized DOM Output: ENABLE /* Reduces DOM nodes by ~40% */ Inline Font Icons: ENABLE /* Eliminates font-awesome HTTP request */ /* Settings → Experiment → Enable these */ Container: STABLE /* Modern flexbox layout system */ E-Loading Optimization: ENABLE Editor Top Bar: ENABLE
Key Elementor Widgets Used Per Section
| Section | Elementor Widget(s) | Notes |
|---|---|---|
| Announcement Bar | Text Editor + Button | Inside Astra's Above Header builder row. Add dismiss JS separately. |
| Hero Slider | Slides Widget (Pro) | 3 slides max. Auto-play off. Keyboard navigation on. Lazy load slide images. |
| Logo Marquee | Loop Carousel (Pro) | Or custom CSS marquee (see Section 19). Set infinite scroll via CSS animation. |
| 4-Pillar Features | Tabs Widget (Pro) or Toggle | Horizontal tabs on desktop, accordion on mobile. Each tab = 1 product category. |
| Stats Counter | Counter Widget | Animated CountUp on scroll. Use DM Mono font for numbers. Add suffix ("+", "yrs"). |
| Product Cards | WooCommerce Products (Pro) | Grid layout, 3 or 4 columns. Custom skin to remove default WooCommerce card styling. |
| Testimonials | Testimonial Carousel (Pro) | Add YouTube video embed in testimonial content. Auto-height enabled. |
| Blog Posts | Posts Widget (Pro) | 3 columns, custom skin. Show: thumbnail, category, title, read time, author. |
| Partner Logos | Image Carousel or Gallery | Grayscale on default, full color on hover. CSS filter trick (see Section 18). |
| Demo Request Forms | WPForms Widget or shortcode | Embed in popup via Elementor Pro Popup Builder triggered by CTA button click. |
| Mega Menu | Astra Pro Mega Menu | Create mega menu content as Elementor Template, assign in Astra's menu settings. |
Elementor Pro Popup Builder — Demo Request Flow
This replicates Shiprocket's software interest forms (their Citavi, EViews modals). Build one popup template per software product.
Elementor Popup Settings
/* Popup → Layout */ Position: Center Center Width: 560px Height: Auto Overlay: ✅ (rgba(13,27,42,0.7)) Close Button: ✅ Top Right Close on ESC: ✅ Close on Overlay: ✅ /* Popup → Display Conditions */ Trigger: On Click → CSS ID or Class Assign: .na-demo-trigger-nvivo /* different class per software */ /* Inside Popup — WPForms shortcode */ [wpforms id="42" title="false" description="false"] /* Button that opens popup */ Add CSS class: na-demo-trigger-nvivo /* to the "Request Demo" button */
08
WooCommerce — Deep Configuration
Calculator shop setup, product attributes for exam approvals, custom product tabs, and Elementor template overrides.
Strategy: NA sells two types of products — physical calculators (WooCommerce standard) and software licenses (virtual/downloadable WooCommerce products with inquiry form instead of direct checkout for enterprise licenses).
Product Data Structure — Calculators
WooCommerce Product Attributes to Create
/* WooCommerce → Attributes → Add Attribute */ Name: Calculator Type Slug: calculator-type Terms: Graphing | Scientific | Financial | Basic Name: Exam Approvals Slug: exam-approvals Terms: IB DP | SAT | ACT | CBSE | AP Exams | GRE | GMAT Name: Brand Slug: brand Terms: Texas Instruments | HP | Casio Name: Display Type Slug: display-type Terms: Color | Monochrome | Full Graphics Name: Memory Slug: memory Terms: 3MB | 7.5MB | 21MB | 154MB+ /* Tag each product with relevant attributes */ /* These become filterable sidebar facets in shop page */
WooCommerce Settings — Critical Config
General Settings
- Currency: Indian Rupee (₹)
- Currency Position: Left (₹1,499)
- Thousand Separator: ,
- Decimal Separator: .
- Number of Decimals: 0 (no paise for these prices)
- Selling Locations: All countries + India specific tax
Products Settings
- Shop Page: set to custom page built in Elementor
- Default Product Sorting: Popularity
- Products per Row: 3 (desktop), 2 (tablet), 1 (mobile)
- Rows per Page: 3 (9 products per page)
- Product Image Dimensions: 800×800 (square, for zoom)
- Placeholder Image: Upload branded NA placeholder
Checkout Settings
- Guest Checkout: Allow
- Account Creation: Allow during checkout
- Terms & Conditions Page: Create and link
- Payment: Razorpay (recommended) or PayU
- Shipping: Flat rate + Free shipping over ₹5,000
- Order Notes Field: Enable (institute name / PO number)
Recommended WooCommerce Plugins
- YITH WooCommerce Wishlist — free, adds wishlist to product pages
- WooCommerce Product Table (Barn2) — for software comparison table view
- YITH WooCommerce Compare — compare up to 3 calculators
- WC Variation Swatches — color/image attribute swatches
- WooCommerce PDF Invoices — auto invoice/receipt on order
Custom Product Page Template (Elementor Override)
In Elementor Pro → Theme Builder → Single Product. Build a custom single product layout. The exact tab structure to use:
Single Product Page Structure
/* Row 1: Product Hero */ [Left 55%] Product Gallery (Elementor Woo widget, zoom enabled) [Right 45%] Product Title (Syne H1) Exam Approvals (attribute badges — custom PHP or ACF) Short Description Price (large, DM Mono font) Quantity Selector + Add to Cart Trust Badges: "Authorized Distributor" | "Official Warranty" Share buttons (optional) /* Row 2: Sticky Add-to-Cart Bar (appears on scroll) */ Product name | Price | [Add to Cart] — fixed to bottom of viewport /* Row 3: Product Details Tabs */ Tab 1: Overview (full description, feature list) Tab 2: Technical Specs (table: display, memory, battery, dimensions) Tab 3: Exam Approvals (logo grid of approved exams) Tab 4: Downloads (manual PDF, quick start guide) Tab 5: Reviews (WooCommerce reviews) /* Row 4: Related Products */ "Customers Also Bought" — WooCommerce Related Products widget 4-column carousel on desktop /* Sticky Bar CSS */ /* Add to functions.php or custom.css */ .na-sticky-cart { position: fixed; bottom: 0; left: 0; right: 0; background: var(--na-navy); padding: 14px 24px; display: flex; align-items: center; gap: 16px; z-index: 9999; transform: translateY(100%); transition: transform 0.3s ease; } .na-sticky-cart.visible { transform: translateY(0); }
09
Forms & Lead Capture
WPForms Pro setup, form design specs, FluentCRM automation flows, and the software demo request forms.
Forms to Build
| Form Name | Fields | Integration | Where Used |
|---|---|---|---|
| Software Demo Request1 per software (NVivo, XLSTAT etc.) | Name, Email, Phone, Institution/Company, Industry (dropdown), Experience Level (dropdown), Interest areas (checkboxes), Message | FluentCRM | Popup on each software page |
| General Contactcontact-us page | Name, Email, Phone, Subject (dropdown), Message | Email notification | Contact page, footer |
| Newsletter Signuphomepage strip | Email only (1 field) | FluentCRM list | Homepage bottom strip |
| Training Workshop Registration | Name, Email, Phone, Institution, Workshop (dropdown), How did you hear | FluentCRM + Email | Events & Activities pages |
| Warranty Registrationwarranty.numerical-analytics.com | Name, Email, Product (dropdown), Serial Number, Purchase Date, Purchase Location | Spreadsheet / CRM | Warranty subdomain |
FluentCRM Automation — Software Lead Nurture
FluentCRM Automation Flow
/* Trigger: Form Submitted → "XLSTAT Demo Request" */ Step 1: Add to List → "Software Leads" Step 2: Apply Tag → "xlstat-interest" Step 3: Send Email → Immediate Subject: "Your XLSTAT demo request — next steps" Body: Thanks + what to expect + link to brochure PDF Step 4: Wait → 2 days Step 5: Send Email → Follow-up Subject: "Did you know XLSTAT runs inside Excel?" Body: Feature highlight + customer case study Step 6: Wait → 5 days Step 7: Condition → Has opened email? YES → Send Email: Trial offer / pricing NO → Send Email: Different angle (video tutorial) Step 8: Apply Tag → "xlstat-nurtured" Step 9: Notify Sales Team (Internal Email) with lead details
10
Performance — WP Rocket Configuration
The exact WP Rocket settings to pass Core Web Vitals. Wrong settings here will break Elementor animations and WooCommerce checkout.
Developer Warning: WP Rocket's "Delay JS Execution" feature WILL break Elementor's counter animations, scroll effects, and WooCommerce add-to-cart AJAX if not configured with exclusions. Follow this section exactly.
WP Rocket Settings — exact configuration
/* CACHE */ Enable Caching: ON Cache for logged-in users: OFF (important for WooCommerce) Cache Lifespan: 10 hours Separate cache for mobile: ON /* FILE OPTIMIZATION */ Minify CSS: ON Combine CSS: OFF ← Critical: combining breaks Elementor Minify JS: ON Combine JS: OFF ← Critical: combining breaks WooCommerce Load JS Deferred: ON Excluded JS (do NOT defer): "/wp-includes/js/jquery/jquery.min.js" "/wp-content/plugins/woocommerce/" "/wp-content/plugins/elementor-pro/" "/wp-content/plugins/wpforms/" Delay JS Execution: ON Excluded from Delay: "woocommerce" "elementor" "wpforms" "jquery" /* MEDIA */ LazyLoad Images: ON LazyLoad iFrames/Videos: ON Replace YouTube iframe with preview: ON ← Huge LCP boost WebP Compatibility: ON /* PRELOADING */ Preload Cache: ON Sitemap-based Preloading: ON → link to Rank Math sitemap Prefetch DNS: add these domains: fonts.googleapis.com fonts.gstatic.com cdn.jsdelivr.net /* ADVANCED RULES — Never Cache URLs */ /cart/ /checkout/ /my-account/ /wp-admin/ /* CDN */ Enable CDN: ON (if using Cloudflare) CDN URL: your Cloudflare zone URL
Imagify Image Optimization
Imagify Settings
/* Imagify → Settings */ Optimization Level: Aggressive ← 60-80% size reduction Resize Larger Images: ON Max Width: 1600px Max Height: 1200px Convert to WebP: ON Serve WebP with: <picture> HTML tag ← More compatible than .htaccess rewrite Optimize Retina: ON Bulk Optimize: Run on all existing images after install /* Expected output for product images */ Calculator PNG 2MB → WebP ~180KB ← 91% smaller Hero banner JPG 800KB → WebP ~95KB ← 88% smaller Partner logo PNG 200KB → WebP ~18KB ← 91% smaller
11
SEO Stack — Rank Math Pro
Schema setup, meta templates, sitemap config, and keyword targeting for all page types.
Schema Markup — Page Type Mapping
| Page Type | Schema Type | Key Fields |
|---|---|---|
| Homepage | Organization | name, url, logo, sameAs (social), contactPoint, areaServed (IN,NP,BD,LK,BT) |
| Calculator product page | Product | name, image, sku, brand, offers (price, currency, availability), aggregateRating |
| Software page (NVivo, XLSTAT) | SoftwareApplication | name, applicationCategory, operatingSystem, offers, featureList, screenshot |
| Training/Workshop event | Event | name, startDate, endDate, location (virtual/physical), organizer, offers |
| Blog post | Article | headline, author, datePublished, dateModified, image, publisher |
| FAQ sections | FAQPage | Every Q&A on software pages, product spec pages — adds rich results in Google |
| Testimonials | Review | reviewBody, author, itemReviewed, ratingValue — shows stars in SERPs |
Rank Math — Meta Title Templates
Rank Math Meta Templates
/* General → Titles & Meta → set these templates */ Homepage: %sitename% - Authorized TI & Analytics Software Distributor India Blog Post: %title% - %category% | %sitename% Product: Buy %title% | %price% | %sitename% Product Category: %category% Calculators India - Buy Online | %sitename% Software Page: %title% India | Authorized Distributor | %sitename% Author Archive: Posts by %name% | %sitename% /* Keep all titles under 60 characters */ /* Keep all meta descriptions between 140-160 characters */
12
UX & Conversion Plugins
Full list with exact settings, cost, and purpose. Sorted by implementation priority.
| Plugin | Purpose | Cost | Priority |
|---|---|---|---|
| Elementor Proelementor.com/pro | Page builder — entire site layout, mega menu, popup builder, motion effects, loop templates for products and posts | $59/yr | P0 — Core |
| Astra Prowpastra.com | Header/footer builder, mega menu, WooCommerce hooks, above/below header sections, sticky header | $59/yr | P0 — Core |
| WP Rocketwp-rocket.me | Caching, minification, lazy load, defer JS, CDN integration, critical CSS | $59/yr | P0 — Core |
| Rank Math Prorankmath.com | SEO meta, schema markup, XML sitemap, breadcrumbs, redirections, analytics integration | $59/yr | P0 — Core |
| WPForms Prowpforms.com | Multi-step forms with conditional logic for software demo requests. FluentCRM integration. Better than Contact Form 7 for complex forms. | $79/yr | P0 — Core |
| FluentCRMfluentcrm.com | Email automation, contact segmentation, lead nurture sequences for software demo leads and newsletter | $129/yr | P1 — Important |
| Imagifyimagify.io | Bulk image WebP conversion, auto-compression on upload, retina optimization | $48/yr | P1 — Important |
| YITH WooCommerce Compareyithemes.com | Compare up to 3 calculator models side by side (specs, price, exam approvals). Vital for conversion on calculator pages. | Free | P1 — Important |
| WooCommerce Variation Swatchesby Emran Ahmed | Replace dropdown selects on variable products with clickable color/image swatches. Improves UX on STEM product variants. | Free | P1 — Important |
| Razorpay for WooCommercerazorpay.com | Payment gateway — UPI, cards, net banking, EMI. Best for Indian market. Auto-reconciliation of orders. | Free + 2% txn fee | P1 — Important |
| WP Notification Bar Prowp-notificationbar.com | The announcement strip at very top — exactly like Shiprocket's promo bar. Dismissable, cookie-based, targetable by page/device. | $29 one-time | P2 — Nice to have |
| YITH WooCommerce Wishlistyithemes.com | Adds wishlist icon to product cards and single pages. Lets institute buyers save shortlists for procurement approvals. | Free | P2 — Nice to have |
| LoginPressloginpress.pro | Branded login/register page. Currently NA's login page is the default ugly WordPress page — this is a trust signal issue. | Free tier OK | P2 — Nice to have |
| WP Mail SMTPwpmailsmtp.com | Route WordPress email through Gmail SMTP or Mailgun. Without this, WooCommerce order emails and FluentCRM automations often land in spam. | Free tier OK | P0 — Core |
13
Homepage — Section-by-Section Build Guide
Exact Elementor structure, content, CSS classes, and interaction specs for every homepage section.
Homepage Section Stack — in exact order
/* ─── SECTION 1: ANNOUNCEMENT BAR ────────────────── */ Location: Astra Header Builder → Above Header Background: #F0842C Text: "Explore TI-84+ CE Python Edition — Now Available in India" CTA Text: "Shop Now →" CTA Link: /product-category/calculators/graphing-calculators/ Height: 40px | Font: DM Sans 13px 500 | Color: #fff Dismissable: YES (cookie expires 7 days) Mobile: hide text, show icon + CTA only /* ─── SECTION 2: MAIN HERO ────────────────────────── */ Elementor Widget: Slides (Pro) Slides: 3 maximum Height: 100vh on desktop, 70vh on tablet, 60vh on mobile Transition: Fade (not slide — cleaner for text-heavy) Autoplay: OFF (user-controlled) Navigation: Dots only (no arrows — cleaner, Shiprocket-style) Slide 1: Background: linear-gradient(135deg, #0D1B2A 0%, #1A3E8C 100%) Headline: "India's Premier Analytics & EdTech Distributor" Subhead: "Official partner for Texas Instruments, XLSTAT, NVivo, SmartPLS, EViews" CTA Primary: "Explore Products" → /products/ CTA Secondary: "Talk to an Expert" → /contact-us/ Right side: animated product image (TI calculator + software UI) Slide 2: Background: white, blue accent left border Headline: "Software for Every Research Need" CTA: "Request Free Trial" Slide 3: Background: #F8FAFC Headline: "Professional Development & Training" CTA: "Browse Workshops" /* ─── SECTION 3: CLIENT LOGO MARQUEE ─────────────── */ Background: #fff Label: "Trusted by 500+ Institutions" (small, centered above) Implementation: CSS infinite scroll marquee (see Section 19) Logos: grayscale(100%) by default, filter: none on hover Speed: 40s infinite loop Gap between logos: 48px Height: 80px (logo strip) Two rows: Row 1 = university/institution logos Row 2 = technology partner logos /* ─── SECTION 4: 4-PILLAR FEATURES ───────────────── */ Background: #F8FAFC Section Label: "What We Offer" (eyebrow text, orange) Section H2: "Everything You Need for Analytical Excellence" Tab Layout: Tab 1: "Calculators" — icon + 3 sub-products + screenshot + CTA Tab 2: "Analytics Software" — icon + 5 software brands + screenshot + CTA Tab 3: "STEM Products" — icon + 3 featured products + screenshot + CTA Tab 4: "Services" — icon + 4 service types + team image + CTA Tab Design: horizontal pills on desktop, accordion on mobile Active tab: blue background, white text Inactive: border only, grey text Screenshot mockup: device frame image, 600×800 max /* ─── SECTION 5: IMPACT STATS BAR ────────────────── */ Background: #0D1B2A (dark navy) Color scheme: white text, orange accent numbers Stats (4 items in a row): "500+" — Institutions Served "15+" — Years of Excellence "6" — Countries "5" — Software Brands Number font: DM Mono 500, 64px, color: #F0842C Label font: DM Sans 400, 14px, color: rgba(255,255,255,0.6) Animation: CountUp on scroll-into-view (Elementor Counter widget) Dividers: 1px vertical rgba(255,255,255,0.1) between items /* ─── SECTION 6: SEGMENT CARDS ───────────────────── */ Background: #EFF6FF Section H2: "Who We Serve" Cards: 4 in a row (desktop), 2×2 (tablet), 1-col (mobile) Card 1: "Universities & Research Institutes" - Products used: NVivo, XLSTAT, SmartPLS, EViews - Benefit stat: "Used by 200+ research departments" Card 2: "K-12 Schools & IB Programmes" - Products used: TI Graphing Calculators, TI Innovator - Benefit stat: "Approved for IB, SAT, ACT exams" Card 3: "Corporate Analytics Teams" - Products used: XLSTAT, SmartPLS, EViews - Benefit stat: "Serving Fortune 500 teams in India" Card 4: "Professional Training & Coaching" - Products used: All software, Training Services - Benefit stat: "2000+ professionals trained" Card hover: lift effect, blue border-left accent /* ─── SECTION 7: PARTNER LOGOS ───────────────────── */ Background: #fff Label: "Our Technology Partners" Partners: Texas Instruments, NVivo (Lumivero), SmartPLS, XLSTAT (Addinsoft), EViews (IHS Markit), Citavi (Swiss Academic) Layout: 6 logos in a single row, centered, 200px wide each Style: full color always (partner logos, not client logos) Add: "Authorized Distributor" badge under TI logo /* ─── SECTION 8: TESTIMONIALS ────────────────────── */ Background: #F8FAFC Section H2: "Voices of Our Clients" Widget: Elementor Pro Testimonial Carousel Each card contains: - Quote text (DM Sans 16px italic, max 3 lines) - Name + Title + Institution - Photo (circular, 64px) - YouTube thumbnail with play button (links to YouTube) Autoplay: 5s, pause on hover Arrows: yes (left/right), dots: yes /* ─── SECTION 9: PRESS / RECOGNITION ─────────────── */ Background: #fff Label: "As Seen In / Recognized By" Logos: education publications, awards, certifications Layout: centered row, grayscale, hover = color /* ─── SECTION 10: BLOG POSTS ─────────────────────── */ Background: #F8FAFC Section H2: "Stay Informed" Widget: Elementor Pro Posts (3 columns) Show per post: Featured image | Category badge | Title | Excerpt | Read time | Author avatar | Date CTA: "View All Articles →" below grid /* ─── SECTION 11: NEWSLETTER STRIP ───────────────── */ Background: linear-gradient(135deg, #1A3E8C, #0D1B2A) Text: "Get product updates, webinar invites & training schedules" Form: Email input + "Subscribe" button (orange) Width: 500px centered Trust note: "No spam. Unsubscribe anytime." /* ─── SECTION 12: FOOTER ─────────────────────────── */ Background: #0D1B2A 4-column layout: Col 1: Logo + tagline + social icons Col 2: Company (About, Career, Blog, Contact) Col 3: Products (Calculators, Software, STEM, Services) Col 4: Contact info + map link + hours Bottom bar: Copyright | Privacy Policy | Terms | GST number Footer top border: 1px solid rgba(255,255,255,0.08)
14
Mega Menu — Exact Build Instructions
Replicating Shiprocket's icon + category header + sub-link mega menu in Astra Pro + Elementor.
Shiprocket Mega Menu Pattern
ALL-CAPS category header → icon + product name + one-line description. No icons on links, only on major items. Hover reveals the full dropdown, no click required. Close on mouse-out with 100ms delay.
NA Mega Menu Structure
Same pattern: "CALCULATORS" header → Graphing (icon + desc) / Scientific / Financial. "SOFTWARE" header → XLSTAT / SmartPLS / NVivo / EViews / Citavi. Each item: 40×40px icon + bold name + 1 line description.
Mega Menu Build Steps
/* Step 1: Astra Pro → Mega Menu */ WordPress Admin → Appearance → Menus Edit "Primary Navigation" Hover over "Products" menu item → click "Mega Menu" Enable: ✅ Enable Mega Menu Layout: Full Width /* Step 2: Create Elementor Template for mega menu content */ Elementor → Templates → Add New → Section Name: "Mega Menu — Products" Build inside this template: Row: 4 columns Col 1: CALCULATORS (label) + 3 items with icon+text Col 2: SOFTWARE (label) + 5 items with icon+text Col 3: STEM (label) + 4 items with icon+text Col 4: Featured promo card (latest product / offer) /* Step 3: Assign template to mega menu */ In Astra Mega Menu settings → select your Elementor template /* Step 4: Style the mega menu dropdown */ /* Add to child theme custom.css */ .ast-mega-menu-enabled .sub-menu { background: #ffffff; border-top: 3px solid var(--na-orange); /* Orange top accent like Shiprocket */ border-radius: 0 0 12px 12px; box-shadow: 0 20px 60px rgba(13,27,42,0.12); padding: 24px 0; } .mega-menu-item { display: flex; align-items: flex-start; gap: 12px; padding: 10px 16px; border-radius: 8px; transition: background 0.15s; text-decoration: none; } .mega-menu-item:hover { background: var(--na-bg); } .mega-menu-icon { width: 40px; height: 40px; background: var(--na-blue-light); border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .mega-menu-label { font-size: 10px; font-weight: 700; color: var(--na-muted); letter-spacing: 0.1em; text-transform: uppercase; font-family: 'DM Mono', monospace; padding: 0 16px 8px; border-bottom: 1px solid var(--na-border); margin-bottom: 8px; } .mega-menu-item-name { font-size: 14px; font-weight: 600; color: var(--na-navy); display: block; } .mega-menu-item-desc { font-size: 12px; color: var(--na-muted); margin-top: 2px; }
15
Software Product Pages
NVivo, XLSTAT, SmartPLS, EViews, Citavi — each needs a dedicated landing page. Build one template, clone and customise.
Software Page Section Stack
/* ─── HERO ───────────────────────────────────────── */ Layout: 60/40 split (text left, screenshot right) Left: Brand logo (software logo, 140px wide) H1: "NVivo — Qualitative Data Analysis Software" Subhead: "Official Authorized Distributor for India, Nepal, Sri Lanka" Feature pills: ["Windows & Mac", "Academic License", "Free Trial Available"] CTA Primary: "Request Free Trial" (orange, triggers popup) CTA Secondary: "Download Brochure" (outline) Right: Software UI screenshot (device frame, drop shadow) Small trust badge: "Authorized Reseller Since 2014" Background: white or blue tint (#EFF6FF) /* ─── FEATURE GRID ───────────────────────────────── */ Section H2: "What NVivo Can Do For Your Research" 6-icon grid (3×2): ✓ Qualitative Data Coding ✓ Mixed Methods Research ✓ Interview & Survey Analysis ✓ Social Media Analysis ✓ Literature Reviews ✓ Team Collaboration Each: 56px icon + H4 + 2 lines description /* ─── USE CASE TABS (Shiprocket pattern) ─────────── */ Label: "Who Uses NVivo?" Tabs: Academic Researchers | PhD Students | Corporate HR | Government Policy Each tab: Left: description + benefit list Right: screenshot or user type illustration Bottom: "Products used" tag chips /* ─── PRICING TABLE ──────────────────────────────── */ 3 tiers: Student | Academic | Enterprise Each tier: Name + price (or "Contact for pricing" for Enterprise) Feature checklist (what's included/excluded) CTA button Highlight middle card (Academic) with blue border + "Most Popular" badge /* ─── INLINE LEAD FORM ───────────────────────────── */ Background: #0D1B2A (dark section) H2: "Get NVivo for Your Institution" Left: WPForms form (Name, Email, Phone, Industry, Experience, Interest) Right: What happens next (3-step process) + contact details This mirrors Shiprocket's "EViews Form" modal but as an inline section /* ─── CASE STUDY CARDS ───────────────────────────── */ 3 cards: University logo + brief outcome quote + "Read Case Study →" /* ─── FAQ SECTION ────────────────────────────────── */ 8-10 questions specific to the software Use Elementor Accordion widget FAQPage schema applied via Rank Math custom schema field
18
Custom CSS — Critical Snippets
All custom CSS that cannot be done via Elementor/Astra UI. Add to child theme assets/css/custom.css.
CSS — Partner logos grayscale hover effect
/* Partner / client logos — grey by default, color on hover */
.na-partner-logo img {
filter: grayscale(100%) opacity(0.6);
transition: filter 0.3s ease;
}
.na-partner-logo:hover img {
filter: grayscale(0%) opacity(1);
}
CSS — Infinite logo marquee (Shiprocket-style)
/* Auto-scrolling client logo row */ .na-marquee-wrapper { overflow: hidden; white-space: nowrap; width: 100%; } .na-marquee-track { display: inline-flex; align-items: center; gap: 48px; animation: marquee-scroll 40s linear infinite; } .na-marquee-track:hover { animation-play-state: paused; } @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } /* Duplicate the logos in HTML so it loops seamlessly */ /* .na-marquee-track contains logos × 2 (original + clone) */
CSS — Sticky header scroll effect
/* Transparent on load → white on scroll */ .ast-header-wrap.ast-header-scrolled { background: rgba(255,255,255,0.97) !important; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: 0 2px 20px rgba(13,27,42,0.08); transition: all 0.3s ease; } /* Homepage hero — transparent header overlay */ .home .ast-header-wrap { background: transparent !important; transition: background 0.3s ease; } .home .ast-header-wrap .site-title a, .home .ast-header-wrap .main-header-menu > li > a { color: #ffffff !important; } .home .ast-header-wrap.ast-header-scrolled .main-header-menu > li > a { color: var(--na-navy) !important; }
CSS — Card hover lift effect
/* Applied to all product cards, feature cards, service cards */ .na-card { transition: transform 0.25s ease, box-shadow 0.25s ease; cursor: pointer; } .na-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card-hover); } /* WooCommerce product cards */ .woocommerce ul.products li.product { transition: transform 0.25s ease, box-shadow 0.25s ease; border-radius: var(--radius-lg); border: 1px solid var(--na-border); padding: 16px; background: #fff; } .woocommerce ul.products li.product:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: var(--na-blue); }
CSS — Exam approval badge chips
/* Show exam approval badges on product cards */
.na-exam-badge {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 11px;
font-weight: 600;
font-family: 'DM Mono', monospace;
padding: 3px 10px;
border-radius: var(--radius-pill);
border: 1px solid;
margin: 2px;
}
.na-exam-badge.ib { border-color: #1A3E8C; color: #1A3E8C; background: #EFF6FF; }
.na-exam-badge.sat { border-color: #16A34A; color: #16A34A; background: #F0FDF4; }
.na-exam-badge.cbse { border-color: #D97706; color: #D97706; background: #FFFBEB; }
.na-exam-badge.ap { border-color: #7C3AED; color: #7C3AED; background: #F5F3FF; }
.na-exam-badge.act { border-color: #DC2626; color: #DC2626; background: #FEF2F2; }
19
JavaScript & Animations
All custom JS for the child theme — scroll effects, header behavior, counter animations, and accordion interactions.
JS — assets/js/main.js (complete)
/** * Numerical Analytics — Custom JS * All vanilla JS — no external dependencies beyond jQuery (already loaded) */ document.addEventListener('DOMContentLoaded', function() { /* ─ 1. STICKY HEADER ─────────────────────────────── */ const header = document.querySelector('.ast-header-wrap'); let lastScroll = 0; window.addEventListener('scroll', function() { const currentScroll = window.scrollY; if (currentScroll > 80) { header?.classList.add('ast-header-scrolled'); } else { header?.classList.remove('ast-header-scrolled'); } lastScroll = currentScroll; }); /* ─ 2. SCROLL-TRIGGERED FADE IN ──────────────────── */ /* Add class="na-fade-up" to any Elementor section/widget */ const fadeElements = document.querySelectorAll('.na-fade-up'); const observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.style.opacity = '1'; entry.target.style.transform = 'translateY(0)'; observer.unobserve(entry.target); } }); }, { threshold: 0.15 }); fadeElements.forEach(function(el) { el.style.opacity = '0'; el.style.transform = 'translateY(30px)'; el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; observer.observe(el); }); /* ─ 3. STAT COUNTER ANIMATION ────────────────────── */ /* Applied to elements with data-count="500" data-suffix="+" */ function animateCounter(el, target, suffix, duration) { let start = 0; const step = target / (duration / 16); const timer = setInterval(function() { start = Math.min(start + step, target); el.textContent = Math.floor(start) + (suffix || ''); if (start >= target) clearInterval(timer); }, 16); } const counterObs = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting && !entry.target.dataset.counted) { entry.target.dataset.counted = 'true'; animateCounter( entry.target, parseInt(entry.target.dataset.count), entry.target.dataset.suffix, 2000 ); } }); }, { threshold: 0.5 }); document.querySelectorAll('[data-count]').forEach(el => counterObs.observe(el)); /* ─ 4. STICKY ADD-TO-CART BAR ────────────────────── */ const stickyCart = document.querySelector('.na-sticky-cart'); if (stickyCart) { const addToCartBtn = document.querySelector('.single_add_to_cart_button'); const triggerObs = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (!entry.isIntersecting) { stickyCart.classList.add('visible'); } else { stickyCart.classList.remove('visible'); } }); }); if (addToCartBtn) triggerObs.observe(addToCartBtn); } /* ─ 5. ANNOUNCEMENT BAR DISMISS ──────────────────── */ const dismissBtn = document.querySelector('.na-announcement-close'); const annBar = document.querySelector('.na-announcement-bar'); if (dismissBtn && annBar) { if (localStorage.getItem('na-ann-dismissed')) { annBar.style.display = 'none'; } dismissBtn.addEventListener('click', function() { annBar.style.display = 'none'; localStorage.setItem('na-ann-dismissed', '1'); }); } }); // end DOMContentLoaded
20
Shiprocket Design Patterns — Exact Implementation
How each specific Shiprocket UI pattern translates into Elementor widgets and CSS for the NA site.
| Shiprocket Pattern | NA Equivalent | Elementor Implementation |
|---|---|---|
| Orange announcement strip | "Explore TI-84+ CE Python — Now in India" | Astra Above Header row + custom CSS + dismiss JS |
| Full-width hero w/ slides | 3 slides: Products / Software / Training | Elementor Pro Slides widget, fade transition, 100vh |
| Client logo marquee | Institution + partner logos, infinite scroll | HTML widget + custom CSS @keyframes marquee-scroll |
| "1/4, 2/4" numbered feature tabs | "Calculators / Software / STEM / Services" | Elementor Pro Tabs (horizontal) + custom active styles |
| Dark stats bar (4 Lakh+ Businesses) | "500+ Institutions / 15+ Years / 6 Countries / 5 Brands" | Dark section + Counter widget x4, DM Mono font on numbers |
| Segment cards (SMB / Social / Offline) | "Universities / Schools / Corporate / Training" | 4-column Inner Section, each col = Icon+H3+list+stat+CTA |
| Video testimonial carousel | Faculty/researcher testimonials + YouTube thumbs | Elementor Pro Testimonial Carousel, YouTube lightbox |
| "Making Headlines" press strip | Awards / certifications / publications strip | Image Gallery widget, greyscale CSS, 1 row |
| Popup interest forms (Citavi modal) | Per-software demo request popup | Elementor Pro Popup Builder + WPForms shortcode inside |
| Sticky "Try for Free" CTA in header | "Request Demo" orange button always visible | Astra Header Builder → Button element, orange, sticky |
21
Hosting & Server Configuration
Exact server specs, PHP config, MySQL tuning, and Cloudflare setup for optimal performance.
Recommended: Cloudways (DigitalOcean)
- Plan: DigitalOcean 4GB RAM / 2 vCPU / 80GB SSD
- Region: BLR1 (Bangalore) for Indian audience
- PHP: 8.2+ (required by Elementor Pro)
- Web Server: Apache (better WooCommerce compatibility than Nginx)
- MySQL: 8.0+
- Redis Object Cache: Enable in Cloudways + WP Redis plugin
- Monthly Cost: ~$26/month (~₹2,200)
PHP Configuration (php.ini)
memory_limit = 512M— Elementor needs 256M minimummax_execution_time = 300upload_max_filesize = 64M— for product image uploadspost_max_size = 64Mmax_input_vars = 5000— needed for large WooCommerce attribute setsopcache.enable = 1— must be on for performance
Cloudflare Configuration
/* Cloudflare → SSL/TLS */ Mode: Full (Strict) Always Use HTTPS: ON HSTS: Enable (max-age 12 months) /* Cloudflare → Speed */ Auto Minify: CSS ✅ | JS ✅ | HTML ✅ Brotli Compression: ON Rocket Loader: OFF ← Breaks Elementor JS — keep this OFF /* Cloudflare → Caching */ Caching Level: Standard Browser Cache TTL: 4 hours Edge Cache TTL: 1 day /* Cloudflare → Page Rules */ Rule 1: numerical-analytics.com/wp-admin/* Cache Level: Bypass Rule 2: numerical-analytics.com/wp-login.php Cache Level: Bypass Rule 3: numerical-analytics.com/checkout/* Cache Level: Bypass Rule 4: numerical-analytics.com/* Cache Level: Cache Everything Edge Cache TTL: 8 hours
22
Mobile & Responsive Rules
Specific mobile behaviors — what changes, what stacks, and mobile-only CSS overrides.
CSS — Mobile Overrides
@media (max-width: 768px) { /* Hero — reduce to 65vh, stack vertically */ .elementor-widget-slides .elementor-slides { min-height: 65vh !important; } .hero-content { text-align: center; padding: 0 20px; } .hero-cta-group { flex-direction: column; gap: 12px; } .hero-cta-group .elementor-button { width: 100%; text-align: center; } /* Stats bar — 2×2 grid on mobile */ .na-stats-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; } .na-stats-row .na-stat-item { padding: 24px 16px; } .na-stat-number { font-size: 44px !important; } /* Feature tabs → accordion */ .elementor-widget-tabs .elementor-tab-title { display: block; } /* Product grid — 2 columns on tablet, 1 on mobile */ .woocommerce ul.products { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .woocommerce ul.products { grid-template-columns: 1fr; } /* Nav — full-screen slide-in on mobile */ .ast-mobile-menu-trigger { padding: 10px; } /* Product image — full width */ .woocommerce div.product div.images { width: 100%; float: none; } .woocommerce div.product div.summary { width: 100%; float: none; margin-top: 24px; } /* Hide announcement bar text on tiny screens */ .na-announcement-bar .ann-text { display: none; } }
24
Pre-Launch Developer Checklist
Every item that must be verified before going live. Do this in order.
Phase 1 — Core Setup ✓
!
Child theme active, parent theme untouchedAll custom CSS in /assets/css/custom.css, not Customizer Additional CSS
!
PHP memory_limit = 512M confirmedCheck via Health Check plugin or phpinfo() — Elementor needs 256M minimum
!
Redis Object Cache enabledCloudways → Application Settings → Enable Redis. WP Redis plugin active.
!
All fonts loading from Google (or self-hosted)Check Network tab — no 3rd party font requests if self-hosting
!
WP Mail SMTP configured and testedSend test email from WooCommerce → Orders → resend email. Check inbox AND spam.
Phase 2 — WooCommerce ✓
!
Razorpay test mode → live mode switchedWooCommerce → Settings → Payments → Razorpay → uncheck "Test Mode"
!
All product images are WebP, under 200KB eachRun Imagify bulk optimization after all products added
2
Product attributes correctly assignedEvery calculator has: Calculator Type, Exam Approvals, Brand attributes set
2
Cart, Checkout, My Account pages assignedWooCommerce → Settings → Advanced → Page Setup — all 4 pages set
2
WP Rocket: /cart/ /checkout/ /my-account/ excluded from cacheCritical or customers see each other's cart data
Phase 3 — SEO & Performance ✓
!
Google Search Console verified, sitemap submittedRank Math → Sitemap → submit URL to GSC
!
Core Web Vitals passing (run PageSpeed Insights)Target: LCP <2.5s, INP <200ms, CLS <0.1 on both mobile and desktop
!
Organization schema validating in Rich Results Testtest at search.google.com/test/rich-results
2
All 301 redirects from old URLs configuredRank Math → Redirections — map every old URL that had rankings
3
Heatmap tool installed (Microsoft Clarity — free)Add tracking script to functions.php. Record first week of user behavior.
Phase 4 — Security ✓
!
Wordfence or Solid Security (formerly iThemes) installedBlock xmlrpc.php, limit login attempts, hide wp-admin URL
!
SSL certificate active, HTTPS enforced everywhereCheck all mixed content warnings in browser console
2
Admin username is NOT "admin"Create new admin user with custom username, delete original "admin"
2
Daily automated backups configuredCloudways automated backups → daily, keep 14 days. Also: UpdraftPlus to Google Drive.