Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191

This commit is contained in:
southseact-3d
2026-02-07 20:32:41 +00:00
commit ed67b7741b
252 changed files with 99814 additions and 0 deletions

679
chat/public/docs.html Normal file
View File

@@ -0,0 +1,679 @@
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="Plugin Compass documentation. Learn how to plan, build, export, and install AI-generated WordPress plugins using the Plugin Compass builder.">
<title>Documentation - Plugin Compass</title>
<link rel="icon" type="image/png" href="/assets/Plugin.png">
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
colors: {
brand: {
50: '#eef2ff',
100: '#e0e7ff',
200: '#c7d2fe',
300: '#a5b4fc',
400: '#818cf8',
500: '#6366f1',
600: '#4f46e5',
700: '#4338ca',
800: '#3730a3',
900: '#312e81',
950: '#1e1b4b',
}
}
}
}
}
</script>
<style>
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #fdf6ed;
}
::-webkit-scrollbar-thumb {
background: #d1d5db;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #9ca3af;
}
.glass-nav {
background: rgba(251, 246, 239, 0.9);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(0, 66, 37, 0.1);
}
</style>
<!-- PostHog Analytics -->
<script src="/posthog.js"></script>
</head>
<body class="bg-white text-gray-900 font-sans antialiased overflow-x-hidden">
<!-- Navigation -->
<nav class="fixed w-full z-50 glass-nav transition-all duration-300" id="navbar">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center h-20">
<!-- Logo -->
<a href="/" class="flex-shrink-0 flex items-center gap-2 cursor-pointer">
<img src="/assets/Plugin.png" alt="Plugin Compass" class="w-8 h-8 rounded-lg">
<span class="font-bold text-xl tracking-tight text-gray-800">Plugin<span
class="text-green-700">Compass</span></span>
</a>
<!-- Desktop Menu -->
<div class="hidden md:flex items-center space-x-8">
<a href="/features"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Features</a>
<a href="/pricing"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Pricing</a>
<a href="/docs"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">Docs</a>
<a href="/faq"
class="text-gray-700 hover:text-gray-900 transition-colors text-sm font-medium">FAQ</a>
</div>
<!-- CTA Buttons -->
<div class="hidden md:flex items-center gap-4">
<a href="/login"
class="text-gray-700 hover:text-gray-900 font-medium text-sm transition-colors">Sign In</a>
<a href="/signup"
class="bg-green-700 hover:bg-green-600 text-white px-5 py-2.5 rounded-full font-medium text-sm transition-all shadow-lg shadow-green-700/20 hover:shadow-green-700/40 transform hover:-translate-y-0.5">
Get Started
</a>
</div>
<!-- Mobile Menu Button -->
<div class="md:hidden flex items-center">
<button id="mobile-menu-btn" class="text-gray-700 hover:text-gray-900 focus:outline-none">
<i class="fa-solid fa-bars text-xl"></i>
</button>
</div>
</div>
</div>
<!-- Mobile Menu Panel -->
<div id="mobile-menu" class="hidden md:hidden bg-white border-b border-slate-200">
<div class="px-4 pt-2 pb-6 space-y-1">
<a href="/features"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Features</a>
<a href="/pricing"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Pricing</a>
<a href="/docs"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">Docs</a>
<a href="/faq"
class="block px-3 py-3 text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-amber-100 rounded-md">FAQ</a>
<div class="pt-4 flex flex-col gap-3">
<a href="/login" class="w-full text-center py-2 text-gray-700 font-medium">Sign In</a>
<a href="/signup" class="w-full bg-green-700 text-white text-center py-3 rounded-lg font-medium">Get
Started</a>
</div>
</div>
</div>
</nav>
<main class="max-w-6xl mx-auto px-4 pt-24 lg:pt-32 pb-12 grid lg:grid-cols-[280px,1fr] gap-8">
<aside class="bg-white border border-slate-200 rounded-xl p-4 h-fit shadow-sm lg:sticky lg:top-24">
<h2 class="text-sm font-semibold text-slate-700 mb-3">Contents</h2>
<nav class="space-y-2 text-sm flex lg:flex-col flex-wrap gap-x-4 gap-y-2 lg:gap-0 lg:space-y-2">
<a class="block text-green-700 font-semibold" href="#overview">Overview</a>
<a class="block hover:text-green-700" href="#quick-start">Quick start</a>
<a class="block hover:text-green-700" href="#projects">Projects & sessions</a>
<a class="block hover:text-green-700" href="#builder">Builder workflow</a>
<a class="block hover:text-green-700" href="#prompting">Writing a great spec</a>
<a class="block hover:text-green-700" href="#install">Export & install</a>
<a class="block hover:text-green-700" href="#billing">Billing & account</a>
<a class="block hover:text-green-700" href="#security">Security best practices</a>
<a class="block hover:text-green-700" href="#troubleshooting">Troubleshooting</a>
<a class="block hover:text-green-700" href="#support">Support</a>
</nav>
</aside>
<section class="space-y-6 lg:space-y-10 min-w-0">
<article id="overview" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h1 class="text-2xl sm:text-3xl font-extrabold tracking-tight">Documentation</h1>
<p class="text-slate-600 mt-3 leading-relaxed">
Plugin Compass is an AI builder for creating custom WordPress plugins. Describe what you want,
review a clear plan, then let the builder generate and iterate on production-ready code.
</p>
<div class="grid md:grid-cols-2 gap-4 mt-6">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h2 class="font-semibold text-gray-900 flex items-center gap-2">
<i class="fa-solid fa-check"></i>
Best for
</h2>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>Replacing expensive plugin subscriptions with a plugin you own</li>
<li>Building admin panels, dashboards, forms, and workflow automations</li>
<li>Creating custom post types, taxonomies, shortcodes, and Gutenberg blocks</li>
<li>Integrating with third-party APIs (CRMs, email providers, internal services)</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h2 class="font-semibold text-gray-900 flex items-center gap-2">
<i class="fa-solid fa-shield-halved"></i>
Before you ship
</h2>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>Test on a staging site and keep WordPress + plugins up to date</li>
<li>Review permissions, sanitization, and nonces on admin actions</li>
<li>Confirm your plugin doesnt break theme templates or existing workflows</li>
</ul>
</div>
</div>
</article>
<article id="quick-start" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Quick start</h2>
<p class="text-slate-600 mt-2">The fastest path from idea → plugin ZIP.</p>
<ol class="list-decimal list-inside space-y-2 mt-4 text-slate-700">
<li>
Create an account at <a href="/signup" class="text-green-700 font-semibold">/signup</a> (or sign
in at
<a href="/login" class="text-green-700 font-semibold">/login</a>).
</li>
<li>
After verification youll be asked to pick a plan (if you havent already), then youll land on
<a href="/apps" class="text-green-700 font-semibold">/apps</a>.
</li>
<li>
Click <strong>Create New Plugin</strong> to open the builder.
</li>
<li>
Start with a detailed request (use the template below).
</li>
<li>
Review the plan, approve it, then let the builder generate code.
</li>
<li>
Click <strong>Download ZIP</strong> to export your plugin and install it in WordPress.
</li>
</ol>
<div class="mt-6">
<h3 class="font-semibold">Starter prompt template</h3>
<p class="text-sm text-slate-600 mt-1">Copy/paste this into the builder and fill in the brackets.
</p>
<pre
class="mt-3 overflow-x-auto rounded-lg bg-slate-950 text-slate-100 p-4 text-sm leading-relaxed"><code>Build me a WordPress plugin called: [Plugin Name]
Goal:
- [What business problem it solves]
Users & permissions:
- Admin can: [list]
- Editor can: [list]
- Logged-out users can: [list]
Admin UI:
- Add a new menu item under: [Tools / Settings / custom top-level]
- Screens needed:
1) [Screen name] - [what it does]
2) [Screen name] - [what it does]
Data model:
- Store data as: [options / post meta / custom table]
- Fields:
- [field] (type) - validation rules
Workflows:
- When [event] happens, do [action]
- Send email/notification to [who] when [condition]
Acceptance criteria:
- [bullet list of “done” conditions]
</code></pre>
</div>
</article>
<article id="projects" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Projects & sessions</h2>
<p class="text-slate-600 mt-2">
Each plugin you build lives in its own project (also called a <em>session</em>). Sessions keep your
chat history,
plan approvals, and generated files together.
</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Create & manage projects</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Go to <a href="/apps" class="text-green-700 font-semibold">/apps</a> to see all
projects.</li>
<li>Rename a project to match the plugins purpose (e.g. “Membership Portal”).</li>
<li>Delete old experiments to keep your dashboard clean.</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Import an existing plugin (paid plans)</h3>
<p class="text-sm text-gray-700 mt-2">
If you already have a plugin ZIP, you can upload it from <strong>/apps</strong> and continue
iterating in the builder.
This is great for adding features, fixing bugs, or modernizing an older plugin.
</p>
</div>
</div>
</article>
<article id="builder" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Builder workflow</h2>
<p class="text-slate-600 mt-2">A predictable loop: plan → approve → build → iterate.</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">1) Plan</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>Clarifies requirements and edge cases before code is generated</li>
<li>Proposes screens, data storage, and a file layout</li>
<li>Lists acceptance criteria so you can quickly verify “done”</li>
</ul>
<p class="text-sm text-gray-700 mt-3">
If anything is missing, reply with changes (e.g. “add role-based access” or “store data in a
custom table”).
</p>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">2) Build</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Generates plugin scaffolding, admin UI, and core logic</li>
<li>Updates existing files instead of starting over when you request changes</li>
<li>Surfaces progress and keeps context in the project session</li>
</ul>
<p class="text-sm text-slate-700 mt-3">
Iteration works best when you describe the desired behavior and include exact error messages
or screenshots.
</p>
</div>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full mt-6">
<h3 class="font-semibold text-gray-900">Common iteration requests</h3>
<div class="grid md:grid-cols-2 gap-3 mt-3 text-sm text-slate-700">
<div class="bg-white rounded-lg border border-slate-200 p-3 mx-auto w-full">
“Add a settings screen for API keys and validate input.”
</div>
<div class="bg-white rounded-lg border border-slate-200 p-3 mx-auto w-full">
“Fix the activation error and add a database migration routine.”
</div>
<div class="bg-white rounded-lg border border-slate-200 p-3 mx-auto w-full">
“Make the admin table sortable + add search and filters.”
</div>
<div class="bg-white rounded-lg border border-slate-200 p-3 mx-auto w-full">
“Add WP-CLI commands for batch processing.”
</div>
</div>
</div>
</article>
<article id="prompting" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Writing a great spec</h2>
<p class="text-slate-600 mt-2">The more specific your inputs, the more reliable the output.</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Include these details</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li><strong>Actors</strong>: who uses it (admin, editor, member, guest)</li>
<li><strong>Data</strong>: what you store, where it lives, and retention requirements</li>
<li><strong>UI</strong>: what screens exist and what actions each screen supports</li>
<li><strong>Rules</strong>: validation, permissions, and edge cases</li>
<li><strong>Acceptance criteria</strong>: concrete checks to confirm its correct</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">When reporting a bug</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>Exact WordPress version + PHP version</li>
<li>What you expected vs what happened</li>
<li>Any fatal error text from the WP debug log</li>
<li>The exact page URL and steps to reproduce</li>
</ul>
</div>
</div>
<div class="mt-6 bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Examples of “good” vs “better”</h3>
<div class="grid lg:grid-cols-2 gap-3 mt-3 text-sm">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<p class="font-semibold text-gray-900">Good</p>
<p class="text-slate-700 mt-2">“Make a plugin to collect leads.”</p>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<p class="font-semibold text-gray-900">Better</p>
<p class="text-slate-700 mt-2">
“Add a lead capture form shortcode with name/email/company fields, store submissions in
a custom table,
add an admin list screen with search + CSV export, and send a notification email to the
site admin.”
</p>
</div>
</div>
</div>
</article>
<article id="install" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Export & install</h2>
<p class="text-slate-600 mt-2">Download your plugin as a ZIP and install it like any other WordPress
plugin.</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Export from the builder</h3>
<ol class="list-decimal list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Open your project in the builder.</li>
<li>Click <strong>Download ZIP</strong>.</li>
<li>Save the ZIP locally (dont unzip it for WordPress upload).</li>
</ol>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Install in WordPress</h3>
<ol class="list-decimal list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>In wp-admin: <strong>Plugins → Add New → Upload Plugin</strong>.</li>
<li>Select the exported ZIP and click <strong>Install Now</strong>.</li>
<li>Click <strong>Activate</strong>.</li>
</ol>
</div>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full mt-6">
<h3 class="font-semibold text-gray-900">Recommended deployment flow</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Install on a staging environment first.</li>
<li>Enable <code class="px-1 py-0.5 bg-slate-100 rounded">WP_DEBUG</code> to catch
notices/fatals early.</li>
<li>Only deploy to production once youve validated permissions, forms, and edge-case behavior.
</li>
</ul>
</div>
</article>
<article id="billing" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Billing & account</h2>
<p class="text-slate-600 mt-2">Manage your subscription and payment method from settings.</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Plans</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>New users are prompted to choose a plan after email verification.</li>
<li>Plan limits can affect things like project count, usage, and importing existing plugins.
</li>
<li>You can upgrade or downgrade later.</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Settings</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Visit <a href="/settings" class="text-green-700 font-semibold">/settings</a> to manage
your account.</li>
<li>Update your payment method at any time.</li>
<li>Cancel or resume a subscription from the same page.</li>
</ul>
</div>
</div>
</article>
<article id="security" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Security best practices</h2>
<p class="text-slate-600 mt-2">WordPress plugins run inside your site—treat them like production
software.</p>
<div class="grid md:grid-cols-2 gap-4 mt-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Admin actions</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-slate-700">
<li>Use capability checks (e.g. <code
class="px-1 py-0.5 bg-slate-100 rounded">manage_options</code>)</li>
<li>Protect form submissions with nonces</li>
<li>Sanitize input and validate server-side</li>
<li>Escape output in templates and admin screens</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">Data handling</h3>
<ul class="list-disc list-inside space-y-2 mt-3 text-sm text-gray-700">
<li>Store secrets (API keys) in the options table and restrict access</li>
<li>Avoid logging sensitive data</li>
<li>Use prepared statements for custom SQL queries</li>
<li>Document retention/export/deletion requirements when you collect personal data</li>
</ul>
</div>
</div>
</article>
<article id="troubleshooting" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Troubleshooting</h2>
<p class="text-slate-600 mt-2">Common issues and how to resolve them quickly.</p>
<div class="mt-4 space-y-4">
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">I cant access the dashboard / builder</h3>
<ul class="list-disc list-inside space-y-2 mt-2 text-sm text-slate-700">
<li>Make sure youre signed in (try <a href="/login"
class="text-green-700 font-semibold">/login</a>).</li>
<li>If youre redirected to plan selection, choose a plan first.</li>
<li>If you recently changed browsers/devices, your session cookie may be missing—sign in
again.</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">My export ZIP is empty</h3>
<ul class="list-disc list-inside space-y-2 mt-2 text-sm text-slate-700">
<li>Make sure youve completed at least one build step that generates files.</li>
<li>Try asking the builder to list the files it created, then export again.</li>
</ul>
</div>
<div class="bg-white border border-slate-200 rounded-lg p-4 mx-auto w-full">
<h3 class="font-semibold text-gray-900">The plugin fails to activate on WordPress</h3>
<ul class="list-disc list-inside space-y-2 mt-2 text-sm text-slate-700">
<li>Enable WP debug logging and capture the exact fatal error text.</li>
<li>Share the error message with the builder and ask for a fix.</li>
<li>Confirm your hosting PHP version meets the plugins requirements.</li>
</ul>
</div>
</div>
</article>
<article id="support" class="bg-white border border-slate-200 rounded-xl p-4 sm:p-6 shadow-sm">
<h2 class="text-2xl font-bold">Support</h2>
<p class="text-slate-600 mt-2">Need help refining a plugin or debugging an issue?</p>
<ul class="list-disc list-inside space-y-2 mt-4 text-slate-700">
<li>Start with your project session in the builder and describe the goal or issue.</li>
<li>Include URLs, screenshots, and exact error text whenever possible.</li>
<li>Check <a href="/settings" class="text-green-700 font-semibold">/settings</a> for account and
plan status.</li>
</ul>
</article>
</section>
</main>
<!-- CTA Footer (from homepage) -->
<section class="py-24 bg-white">
<div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<h2 class="text-3xl sm:text-4xl font-bold mb-8 text-gray-900">Build Your Custom Plugin Today</h2>
<p class="text-xl text-gray-700 mb-10">Start building WordPress plugins that fit your exact needs. No coding
experience required.</p>
<a href="/signup"
class="inline-flex items-center justify-center px-8 py-4 bg-green-700 text-white rounded-full font-bold hover:bg-green-600 transition-all shadow-xl shadow-green-700/20">
Get Started Free <i class="fa-solid fa-arrow-right ml-2"></i>
</a>
</div>
</section>
<!-- Footer (from homepage) -->
<footer class="bg-white border-t border-green-200 pt-16 pb-8">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-2 lg:grid-cols-5 gap-12 mb-16">
<div class="col-span-2 lg:col-span-1">
<div class="flex items-center gap-2 mb-6">
<img src="/assets/Plugin.png" alt="Plugin Compass" class="w-8 h-8 rounded-lg">
<span class="font-bold text-xl tracking-tight text-gray-800">Plugin<span
class="text-green-700">Compass</span></span>
</div>
<p class="text-gray-600 text-sm leading-relaxed">
The smart way for WordPress site owners to replace expensive plugin subscriptions with custom
solutions. Save thousands monthly.
</p>
</div>
<div>
<h4 class="font-bold text-gray-900 mb-6">Product</h4>
<ul class="space-y-4 text-sm">
<li><a href="/features" class="text-gray-600 hover:text-green-700">Features</a></li>
<li><a href="/pricing" class="text-gray-600 hover:text-green-700">Pricing</a></li>
<li><a href="#" class="text-gray-600 hover:text-green-700">Templates</a></li>
</ul>
</div>
<div>
<h4 class="font-bold text-gray-900 mb-6">Resources</h4>
<ul class="space-y-4 text-sm">
<li><a href="/docs" class="text-gray-600 hover:text-green-700">Documentation</a></li>
<li><a href="/faq" class="text-gray-600 hover:text-green-700">FAQ</a></li>
</ul>
</div>
<div>
<h4 class="font-bold text-gray-900 mb-6">Legal</h4>
<ul class="space-y-4 text-sm">
<li><a href="/privacy.html" class="text-gray-600 hover:text-green-700">Privacy Policy</a></li>
<li><a href="/terms" class="text-gray-600 hover:text-green-700">Terms of Service</a></li>
<li><a href="/contact" class="text-gray-600 hover:text-green-700">Contact Us</a></li>
</ul>
</div>
<div class="col-span-2 lg:col-span-1">
<h4 class="font-bold text-gray-900 mb-6">Stay Updated</h4>
<p class="text-gray-600 text-sm mb-4">Get the latest updates and WordPress tips.</p>
<form id="footer-signup-form" class="flex flex-col gap-2">
<input type="email" name="email" placeholder="Your email" required
class="px-4 py-2 border border-green-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-green-700/20 text-sm">
<button type="submit"
class="bg-green-700 hover:bg-green-600 text-white px-4 py-2 rounded-lg font-medium text-sm transition-colors shadow-lg shadow-green-700/10">
Subscribe
</button>
</form>
<div id="signup-message" class="mt-2 text-xs hidden"></div>
</div>
</div>
<div class="border-t border-gray-100 pt-8 flex justify-center">
<p class="text-gray-500 text-xs text-center">© 2026 Plugin Compass. All rights reserved. Built for
WordPress.</p>
</div>
</div>
</footer>
<script>
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
mobileMenuBtn.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
const href = this.getAttribute('href');
if (!href || href === '#') return;
e.preventDefault();
const target = document.querySelector(href);
if (target) {
target.scrollIntoView({
behavior: 'smooth'
});
// Close mobile menu if open
mobileMenu.classList.add('hidden');
}
});
});
// Navbar scroll effect
window.addEventListener('scroll', () => {
const navbar = document.getElementById('navbar');
if (window.scrollY > 20) {
navbar.classList.add('shadow-md', 'h-16');
navbar.classList.remove('h-20');
} else {
navbar.classList.remove('shadow-md', 'h-16');
navbar.classList.add('h-20');
}
});
// Email Signup Form Handler
const signupForm = document.getElementById('footer-signup-form');
const signupMessage = document.getElementById('signup-message');
if (signupForm) {
signupForm.addEventListener('submit', async (e) => {
e.preventDefault();
const email = signupForm.querySelector('input[name="email"]').value;
const button = signupForm.querySelector('button');
button.disabled = true;
button.textContent = 'Subscribing...';
try {
const response = await fetch('https://emailmarketing.modelrailway3d.co.uk/api/webhooks/incoming/wh_0Z49zi_DGj4-lKJMOPO8-g', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: email,
source: 'plugin_compass_footer',
timestamp: new Date().toISOString()
})
});
if (response.ok) {
signupMessage.textContent = 'Successfully subscribed!';
signupMessage.className = 'mt-2 text-xs text-green-600';
signupForm.reset();
} else {
throw new Error('Failed to subscribe');
}
} catch (error) {
signupMessage.textContent = 'Failed to subscribe. Please try again.';
signupMessage.className = 'mt-2 text-xs text-red-600';
} finally {
signupMessage.classList.remove('hidden');
button.disabled = false;
button.textContent = 'Subscribe';
setTimeout(() => {
signupMessage.classList.add('hidden');
}, 5000);
}
});
}
</script>
</body>
</html>