SEO prerender pipeline + register AI routes and tighten CSP
CI / build-and-test (push) Has been cancelled

- Static prerender + sitemap/robots for marketing, blog, and tool pages
  (entry-server, Seo component, prerender/sitemap scripts, NotFoundPage)
- Register aiRoutes and extend CSP for Turnstile + Spaces image hosts

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Leon Serfaty
2026-07-17 13:37:05 -04:00
co-authored by Claude Fable 5
parent 304f7f30c3
commit 1f249dc126
16 changed files with 690 additions and 40 deletions
+2 -27
View File
@@ -1,33 +1,8 @@
import { useState } from 'react';
import { ChevronDown } from 'lucide-react';
import { cn } from '@/lib/cn';
const ITEMS = [
{
q: 'What makes eLegal Software different from other legal software?',
a: 'eLegal Software is built exclusively for legal professionals and bundles case management, billable-hours tracking, document storage, and invoicing into a single, secure platform — no jumping between tools, no per-feature add-ons.',
},
{
q: 'Can I try eLegal Software before committing?',
a: 'Yes. The Starter plan is free forever and lets you manage one active case and two clients so you can experience the workflow end-to-end before upgrading.',
},
{
q: 'How does client billing and payment processing work?',
a: 'You can convert any unbilled time entry into a polished invoice in seconds, send it to your client, and track its status from sent to paid. Payment processing is wired through Stripe.',
},
{
q: 'Can I import my existing cases and client data?',
a: 'Yes. eLegal Software supports CSV imports for clients and cases. For larger migrations our team will assist directly during onboarding.',
},
{
q: 'Is my client data secure and compliant?',
a: 'All data is encrypted at rest and in transit, hosted on enterprise-grade infrastructure with daily backups and audit logging. Access is gated by role-based permissions.',
},
{
q: 'What happens if I need to cancel?',
a: 'You can cancel anytime from your billing settings. Your data remains accessible during the current billing period and can be exported in standard formats.',
},
];
// FAQ content lives in routes-meta so the FAQPage JSON-LD stays in lockstep with the UI.
import { FAQ_ITEMS as ITEMS } from '@/seo/routes-meta';
export function Faq() {
const [open, setOpen] = useState<number | null>(0);