refactor(home): remove duplicate FAQ section, merge unique Q&As into HomepageFaq
Deploy to Production / Build & Verify (push) Has been cancelled
Deploy to Production / Pre-Deploy Tests (push) Has been cancelled
Deploy to Production / Deploy to Railway (push) Has been cancelled
Deploy to Production / Deploy to Render (push) Has been cancelled
Deploy to Production / Deploy to VPS (PM2) (push) Has been cancelled
Deploy to Production / Deploy to Fly.io (push) Has been cancelled
Deploy to Production / Post-Deploy Verification (push) Has been cancelled
Deploy to Production / Notify on Failure (push) Has been cancelled
E2E Test Suite / Critical User Journeys (push) Has been cancelled
E2E Test Suite / API Integration Tests (push) Has been cancelled
E2E Test Suite / Form Interaction Tests (push) Has been cancelled
E2E Test Suite / Destructive & Chaos Tests (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (chromium) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (firefox) (push) Has been cancelled
E2E Test Suite / Cross-Browser Regression (webkit) (push) Has been cancelled
E2E Test Suite / Mobile Device Tests (push) Has been cancelled
E2E Test Suite / Security Header Tests (push) Has been cancelled
E2E Test Suite / Test Report Summary (push) Has been cancelled
E2E Test Suite / Smoke Tests (P0) (push) Has been cancelled
Ping Search Engines / Notify Search Engines (push) Successful in 3s

The homepage rendered two FAQ blocks — an inline "Common Questions" section
plus the <HomepageFaq /> component above the final CTA — which produced two
FAQPage JSON-LD entries and a redundant accordion. Consolidate on
HomepageFaq (self-contained, polished accordion, better a11y) and:

- delete the inline FAQ <section>, the `faqs` array, the `faq={faqs}` prop
  on <SEO>, the orphan .faq-question/.faq-answer/.faq-icon CSS, and the
  initFAQ() boot script + its call in index.astro
- merge the 4 unique inline questions (support, process, team augmentation,
  security) into HomepageFaq's moneyFaqs; the 2 duplicates (technologies,
  timeline) were already covered there
- refresh HomepageFaq's lead-in copy and comments to reflect it as the
  single canonical homepage FAQ

Result: one FAQ heading + one accordion in the DOM, exactly one FAQPage
JSON-LD with 10 Q&A pairs, no broken anchor links.
This commit is contained in:
platform-mcp
2026-06-17 13:03:29 +05:30
parent 5395a529dd
commit 8dbbad4277
2 changed files with 48 additions and 131 deletions
+31 -17
View File
@@ -1,17 +1,12 @@
---
// HomepageFaq — Money & process FAQ rendered just above the final CTA band.
// HomepageFaq — single homepage FAQ section rendered just above the final
// CTA band. Covers both buyer-stage objections (cost, timeline, NDA, IP, GeM,
// stack) and the process/support/security questions that used to live in the
// older "Common Questions" block higher up the page. That earlier block was
// removed to avoid a duplicate FAQ rendering and a duplicate FAQPage JSON-LD
// emission — this component is now the canonical homepage FAQ.
//
// Why a dedicated component instead of reusing the "Common Questions" block
// further up the page:
// - The questions here target buyers in late-stage evaluation (cost,
// timeline, NDA, IP, GeM, stack). They convert better when surfaced next
// to the final CTA, not next to the testimonials.
// - Emitting FAQPage JSON-LD only once per page is the recommended pattern
// for rich-result eligibility. The existing FAQ block above also emits a
// FAQPage via <SEO> — so this component renders ONLY the visible UI; the
// schema for these questions is appended to the parent's `faq` array in
// src/pages/index.astro so Google still sees a single, valid FAQPage with
// all 12 Q&A pairs.
// Emits a single FAQPage JSON-LD inline (below) for rich-result eligibility.
//
// Accessibility:
// - Each question is a real <button> with aria-expanded toggled in JS.
@@ -54,13 +49,32 @@ const moneyFaqs = [
answer:
'Astro, Next.js, Angular, React Native, Spring Boot, Go, Node.js, PostgreSQL, and the full AWS/GCP stack.',
},
{
question: 'Do you offer ongoing support after launch?',
answer:
'Yes. We offer maintenance packages covering bug fixes, security patches, performance monitoring, and feature enhancements — with response SLAs to match your uptime needs.',
},
{
question: 'What is your development process?',
answer:
'Agile with 2-week sprints, weekly check-ins, and a live staging environment from day one. You see working software early and steer the roadmap as it ships.',
},
{
question: 'Can you work with our existing team?',
answer:
'Absolutely. We augment in-house teams as readily as we deliver fully managed builds — adapting to your repo, branch strategy, ticket system, and review process.',
},
{
question: 'How do you ensure project security?',
answer:
'Security is built into every phase: OWASP-aligned reviews, encrypted data at rest and in transit, role-based access control, regular dependency audits, and compliance with GDPR / SOC 2-style controls where the project demands them.',
},
];
// FAQPage JSON-LD — emitted inline so the schema travels with the component.
// The site-wide <SEO> emits a separate FAQPage for the upper "Common
// Questions" block; Google tolerates multiple FAQPage entries on the same
// page as long as each Question is unique, which is true here (cost,
// timeline, NDA, IP, GeM, stack are all distinct from the generic ones).
// This is the ONLY FAQPage emitted on the homepage; the site-wide <SEO>
// no longer receives a `faq` prop on / so Google sees exactly one valid
// FAQPage with every visible Q&A pair.
const faqPageSchema = {
'@context': 'https://schema.org',
'@type': 'FAQPage',
@@ -97,7 +111,7 @@ const faqPageSchema = {
Frequently asked questions
</h2>
<p class="text-base sm:text-lg text-secondary-600 dark:text-secondary-300">
Quick answers on cost, timelines, ownership, and the stack we ship.
Quick answers on cost, timelines, ownership, our process, support, security, and the stack we ship.
</p>
</div>