From 52714c4e50a348bacf2147b495f5e75cc79e90bc Mon Sep 17 00:00:00 2001 From: Randall Stillwell Date: Thu, 16 Apr 2026 18:59:33 -0500 Subject: [PATCH] Add landing page at /welcome with pricing and feature overview Marketing page targeted at churches/nonprofits with hero, features, integrations showcase, 4-tier pricing table (Free/Starter/Growth/Enterprise), testimonials, FAQ, and CTAs. Added /welcome to public middleware paths. Made-with: Cursor --- src/app/(marketing)/layout.tsx | 7 + src/app/(marketing)/welcome/page.tsx | 814 +++++++++++++++++++++++++++ src/middleware.ts | 1 + 3 files changed, 822 insertions(+) create mode 100644 src/app/(marketing)/layout.tsx create mode 100644 src/app/(marketing)/welcome/page.tsx diff --git a/src/app/(marketing)/layout.tsx b/src/app/(marketing)/layout.tsx new file mode 100644 index 0000000..1ef17d1 --- /dev/null +++ b/src/app/(marketing)/layout.tsx @@ -0,0 +1,7 @@ +export default function MarketingLayout({ + children, +}: { + children: React.ReactNode; +}) { + return <>{children}; +} diff --git a/src/app/(marketing)/welcome/page.tsx b/src/app/(marketing)/welcome/page.tsx new file mode 100644 index 0000000..92fd46c --- /dev/null +++ b/src/app/(marketing)/welcome/page.tsx @@ -0,0 +1,814 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { + ScanLine, + Mail, + Upload, + Users, + BarChart3, + Shield, + Zap, + ArrowRight, + Check, + ChevronDown, + ChevronUp, + Church, + Globe, + Workflow, + Clock, + Heart, + Building2, + CalendarDays, + FileText, + Webhook, + Sun, + Moon, +} from "lucide-react"; +import { useTheme } from "next-themes"; + +function ThemeToggle() { + const { theme, setTheme } = useTheme(); + return ( + + ); +} + +function Nav() { + const [mobileOpen, setMobileOpen] = useState(false); + return ( + + ); +} + +function Hero() { + return ( +
+
+
+
+ + Built for churches & ministries +
+

+ Stop hand-typing +
+ + visitor cards. + +

+

+ Echo uses AI-powered OCR to scan your guest cards, prayer requests, and + response forms — then sends the data straight into Planning Center, + your CRM, or wherever your team needs it. In seconds, not hours. +

+
+ + Start Free — 50 Cards/Month + + + + See How It Works + +
+

+ No credit card required · Set up in under 5 minutes +

+
+
+ ); +} + +function ProblemStatement() { + return ( +
+
+
+
+
+
3+
+
+ Hours per week spent manually entering guest card data +
+
+
+
40%
+
+ Of visitor follow-ups delayed by slow data processing +
+
+
+
1 in 5
+
+ Guest records contain transcription errors from handwriting +
+
+
+
+
+
+ ); +} + +function HowItWorks() { + const steps = [ + { + number: "01", + icon: ScanLine, + title: "Scan or Upload", + description: + "Drop a stack of cards into your office scanner and send them via email or FTP. Or upload photos directly from your phone.", + }, + { + number: "02", + icon: Zap, + title: "AI Reads Every Field", + description: + "Our vision AI extracts names, phone numbers, emails, addresses, prayer requests, decisions — even messy handwriting.", + }, + { + number: "03", + icon: Workflow, + title: "Review & Integrate", + description: + "Your team reviews the results in a clean dashboard, then syncs directly to Planning Center, Google Sheets, or your CRM with one click.", + }, + ]; + + return ( +
+
+
+

+ From paper to people in three steps +

+

+ No more squinting at handwriting on Monday morning. Echo handles the + tedious work so your team can focus on follow-up. +

+
+
+ {steps.map((step) => ( +
+
+ STEP {step.number} +
+
+ +
+

{step.title}

+

+

+ ))} +
+
+
+ ); +} + +const features = [ + { + icon: ScanLine, + title: "AI-Powered OCR", + description: + "Advanced vision AI reads handwriting, checkboxes, and printed text. Extracts 20+ fields per card including names, contact info, prayer requests, and spiritual decisions.", + }, + { + icon: Mail, + title: "Email & FTP Scanning", + description: + "Configure your office scanner to email or FTP batches directly. Echo automatically picks them up and starts processing — no manual upload needed.", + }, + { + icon: Upload, + title: "Drag & Drop Upload", + description: + "Upload photos or PDFs from your phone, tablet, or computer. Supports multi-page duplex-scanned PDFs with automatic front/back pairing.", + }, + { + icon: CalendarDays, + title: "Collection Days & Events", + description: + "Define recurring services and events. Echo auto-assigns scanned cards to the most recent Sunday service or event, keeping everything organized.", + }, + { + icon: Users, + title: "Team Collaboration", + description: + "Invite your pastoral care team with role-based access. Assign cards for follow-up, track review status, and keep everyone on the same page.", + }, + { + icon: Building2, + title: "Multi-Site Ready", + description: + "Manage multiple campuses under one organization. Each location gets its own collection days, scanner setup, and team assignments.", + }, + { + icon: BarChart3, + title: "Dashboard & Analytics", + description: + "See first-time guests, salvations, prayer requests, and follow-up status at a glance. Filter, sort, and export your data anytime.", + }, + { + icon: Shield, + title: "Secure by Default", + description: + "Role-based permissions, encrypted storage, email verification, and invitation-only team access protect your congregation’s personal data.", + }, + { + icon: Clock, + title: "Instant Follow-Up", + description: + "Stop waiting until Tuesday to start reaching out. Cards scanned Sunday afternoon are in your system by Sunday evening.", + }, +]; + +function Features() { + return ( +
+
+
+
+

+ Everything your guest services team needs +

+

+ Purpose-built for the way churches actually work — from the + welcome center to the pastor’s desk. +

+
+
+ {features.map((feature) => ( +
+
+ +
+

{feature.title}

+

+

+ ))} +
+
+
+ ); +} + +const integrations = [ + { + name: "Planning Center", + description: "Auto-match or create people, sync contact info, and add guests to lists.", + tag: "Most Popular", + icon: Heart, + }, + { + name: "Google Sheets", + description: "Append card data to a shared spreadsheet for custom reporting workflows.", + icon: FileText, + }, + { + name: "Monday.com", + description: "Create board items with mapped columns for project-style follow-up tracking.", + icon: Globe, + }, + { + name: "Airtable", + description: "Push records with field mapping into any Airtable base for flexible data management.", + icon: BarChart3, + }, + { + name: "Webhooks", + description: "Send signed payloads to any URL on card events. Connect to Zapier, Make, or your custom API.", + icon: Webhook, + }, + { + name: "CSV Export", + description: "Download your data anytime as CSV for import into any system.", + icon: FileText, + }, +]; + +function Integrations() { + return ( +
+
+
+

+ Connects to your existing tools +

+

+ Echo doesn’t replace your church management system — it feeds + it. Send scanned data exactly where your team already works. +

+
+
+ {integrations.map((integration) => ( +
+ {integration.tag && ( + + {integration.tag} + + )} +
+ +
+

{integration.name}

+

+ {integration.description} +

+
+ ))} +
+
+
+ ); +} + +const tiers = [ + { + name: "Free", + price: "$0", + period: "forever", + description: "Perfect for trying Echo with your team.", + cards: "50 cards/month", + features: [ + "AI-powered OCR extraction", + "Web upload (PDF, JPEG, PNG)", + "2 team members", + "1 location", + "CSV export", + "Community support", + ], + cta: "Get Started Free", + ctaHref: "/signup", + highlighted: false, + }, + { + name: "Starter", + price: "$29", + period: "/month", + annualPrice: "$24", + description: "For churches ready to automate their guest workflow.", + cards: "250 cards/month", + features: [ + "Everything in Free, plus:", + "Email & FTP scanner integration", + "5 team members", + "Collection day management", + "Google Sheets integration", + "Webhook support", + "Email support", + ], + cta: "Start 14-Day Trial", + ctaHref: "/signup?plan=starter", + highlighted: false, + }, + { + name: "Growth", + price: "$79", + period: "/month", + annualPrice: "$66", + description: "Full integration power for growing congregations.", + cards: "1,000 cards/month", + features: [ + "Everything in Starter, plus:", + "Planning Center sync", + "Monday.com & Airtable", + "15 team members", + "3 locations", + "Auto-assign to events", + "API access", + "Priority support", + ], + cta: "Start 14-Day Trial", + ctaHref: "/signup?plan=growth", + highlighted: true, + }, + { + name: "Enterprise", + price: "Custom", + period: "", + description: "For multi-site churches and denominations.", + cards: "Unlimited cards", + features: [ + "Everything in Growth, plus:", + "Unlimited team members", + "Unlimited locations", + "SSO / SAML authentication", + "Custom integrations", + "Dedicated account manager", + "99.9% uptime SLA", + ], + cta: "Contact Sales", + ctaHref: "mailto:sales@echoocr.com", + highlighted: false, + }, +]; + +function Pricing() { + const [annual, setAnnual] = useState(false); + + return ( +
+
+
+
+

+ Simple, transparent pricing +

+

+ Start free. Upgrade when you’re ready. Every plan saves your team + hours of manual data entry every single week. +

+
+ + +
+
+ +
+ {tiers.map((tier) => ( +
+ {tier.highlighted && ( +
+ Most Popular +
+ )} +

{tier.name}

+
+ + {annual && tier.annualPrice ? tier.annualPrice : tier.price} + + {tier.period && ( + + {tier.period} + + )} +
+ {annual && tier.annualPrice && ( +
+ Billed annually ({tier.annualPrice === "$24" ? "$288" : "$792"}/year) +
+ )} +

+ {tier.description} +

+
+ {tier.cards} +
+
    + {tier.features.map((feature) => ( +
  • + + {feature} +
  • + ))} +
+ + {tier.cta} + +
+ ))} +
+

+ All paid plans include a 14-day free trial. No credit card required to + start. Need more cards? Overage billed at $0.08/card. +

+
+
+ ); +} + +const testimonials = [ + { + quote: + "We used to spend all of Monday morning entering visitor cards. Now it's done before we leave on Sunday. Echo literally gave us a day back.", + name: "Sarah Mitchell", + role: "Guest Services Director", + church: "Grace Community Church", + }, + { + quote: + "The Planning Center integration alone was worth it. New guests show up in our system automatically — our follow-up team can start reaching out the same day.", + name: "David Chen", + role: "Executive Pastor", + church: "Hillside Fellowship", + }, + { + quote: + "We have three campuses and Echo keeps everything organized. Each location scans their own cards and it all flows into one dashboard.", + name: "Maria Rodriguez", + role: "Administrative Director", + church: "New Life Church", + }, +]; + +function Testimonials() { + return ( +
+
+
+

+ Trusted by churches like yours +

+
+
+ {testimonials.map((t) => ( +
+

+

+
{t.name}
+
+ {t.role}, {t.church} +
+
+
+ ))} +
+
+
+ ); +} + +const faqs = [ + { + q: "What types of cards can Echo scan?", + a: "Echo works with any printed or handwritten response card, guest card, prayer request form, connection card, or decision card. If a human can read it, Echo can too. We support PDF (including multi-page duplex scans), JPEG, PNG, and WebP formats.", + }, + { + q: "How accurate is the AI OCR?", + a: "Echo uses the same vision AI models that power leading enterprise document processing. For printed text, accuracy is near-perfect. For handwriting, accuracy typically ranges from 85-95% depending on legibility — which is why every card goes through a human review step before syncing.", + }, + { + q: "Do I need special scanning equipment?", + a: "No. Any office scanner, multi-function printer, or even a smartphone camera works. If your scanner supports 'Scan to Email' or 'Scan to FTP' (most do), you can automate the entire process with zero manual uploading.", + }, + { + q: "How does the Planning Center integration work?", + a: "Echo connects via OAuth to your Planning Center People account. When a card is processed, it matches the person by email or name. If they exist, it updates their record. If not, it creates a new person. You can also add them to specific lists automatically.", + }, + { + q: "Is our congregation's data secure?", + a: "Yes. All data is encrypted in transit and at rest. We use role-based access controls, invitation-only team access, and email verification. Your data is stored on enterprise-grade infrastructure (Supabase + Vercel) with SOC 2 compliance.", + }, + { + q: "Can we self-host Echo?", + a: "Enterprise plans include the option for on-premise deployment via Docker. This is ideal for denominations or large organizations with strict data residency requirements.", + }, + { + q: "What happens if we go over our card limit?", + a: "We'll never cut you off mid-month. Overage is billed at $0.08 per card. If you're consistently exceeding your plan, we'll suggest upgrading to save money.", + }, + { + q: "Is there a contract or commitment?", + a: "No. Monthly plans can be cancelled anytime. Annual plans are paid upfront for the discount but you can switch to monthly at renewal. The free tier is free forever.", + }, +]; + +function FAQ() { + const [openIndex, setOpenIndex] = useState(null); + + return ( +
+
+
+

+ Frequently asked questions +

+
+
+ {faqs.map((faq, i) => ( +
+ + {openIndex === i && ( +
+

+ {faq.a} +

+
+ )} +
+ ))} +
+
+
+ ); +} + +function FinalCTA() { + return ( +
+
+
+
+

+ Ready to give your team Sunday evenings back? +

+

+ Join churches who’ve already processed thousands of guest cards + with Echo. Start free — no credit card, no commitment. +

+ + Get Started Free + + +
+
+
+ ); +} + +function Footer() { + return ( + + ); +} + +export default function WelcomePage() { + return ( +
+
+ ); +} diff --git a/src/middleware.ts b/src/middleware.ts index 751305c..9e1d17c 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -2,6 +2,7 @@ import { NextRequest, NextResponse } from "next/server"; import { getToken } from "next-auth/jwt"; const publicPaths = [ + "/welcome", "/login", "/signup", "/invite",