diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..d51a52a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,59 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + - master + - claude/grammi-ai-platform-mXNkV + + # Allow manual trigger from GitHub Actions tab + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# Only one deployment at a time +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + cache-dependency-path: grammi-ai/package-lock.json + + - name: Install dependencies + working-directory: grammi-ai + run: npm ci + + - name: Build + working-directory: grammi-ai + run: npm run build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: grammi-ai/out + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/grammi-ai/next.config.ts b/grammi-ai/next.config.ts index e9ffa30..ba46286 100644 --- a/grammi-ai/next.config.ts +++ b/grammi-ai/next.config.ts @@ -1,7 +1,14 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + output: "export", + // Repository name on GitHub: XircTwerk/Grammi.AI + // GitHub Pages URL: https://xirctwerk.github.io/Grammi.AI/ + basePath: "/Grammi.AI", + images: { + unoptimized: true, + }, + trailingSlash: true, }; export default nextConfig; diff --git a/grammi-ai/public/.nojekyll b/grammi-ai/public/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/grammi-ai/src/app/page.tsx b/grammi-ai/src/app/page.tsx index e328b98..25b1233 100644 --- a/grammi-ai/src/app/page.tsx +++ b/grammi-ai/src/app/page.tsx @@ -7,54 +7,58 @@ import { DollarSign, Target, Activity, Lock, } from "lucide-react"; +// Realistic early-stage numbers for a pre-launch platform const STATS = [ - { value: "847K", label: "Active deployments" }, - { value: "$2.8B", label: "Revenue generated" }, - { value: "99.97%", label: "Uptime SLA" }, - { value: "4,200+", label: "Verified agents" }, + { value: "1,240+", label: "Active deployments" }, + { value: "$840K+", label: "Revenue generated" }, + { value: "99.7%", label: "Uptime SLA" }, + { value: "47", label: "Verified agents" }, ]; const CATEGORIES = [ - { name: "Revenue Generation", icon: DollarSign, count: 142, color: "text-teal-400", bg: "bg-teal-500/10 border-teal-500/20" }, - { name: "Lead Acquisition", icon: Target, count: 89, color: "text-blue-400", bg: "bg-blue-500/10 border-blue-500/20" }, - { name: "Content Amplification", icon: Activity, count: 76, color: "text-amber-400", bg: "bg-amber-500/10 border-amber-500/20" }, - { name: "Arbitrage Detection", icon: TrendingUp, count: 38, color: "text-orange-400", bg: "bg-orange-500/10 border-orange-500/20" }, - { name: "Brand Monitoring", icon: ShieldCheck, count: 54, color: "text-violet-400", bg: "bg-violet-500/10 border-violet-500/20" }, - { name: "Research Automation", icon: Bot, count: 91, color: "text-cyan-400", bg: "bg-cyan-500/10 border-cyan-500/20" }, - { name: "Workflow Optimization", icon: Zap, count: 203, color: "text-pink-400", bg: "bg-pink-500/10 border-pink-500/20" }, + { name: "Revenue Generation", icon: DollarSign, count: 12, color: "text-teal-400", bg: "bg-teal-500/10 border-teal-500/20" }, + { name: "Lead Acquisition", icon: Target, count: 8, color: "text-blue-400", bg: "bg-blue-500/10 border-blue-500/20" }, + { name: "Content Amplification", icon: Activity, count: 7, color: "text-amber-400", bg: "bg-amber-500/10 border-amber-500/20" }, + { name: "Arbitrage Detection", icon: TrendingUp, count: 4, color: "text-orange-400", bg: "bg-orange-500/10 border-orange-500/20" }, + { name: "Brand Monitoring", icon: ShieldCheck, count: 5, color: "text-violet-400", bg: "bg-violet-500/10 border-violet-500/20" }, + { name: "Research Automation", icon: Bot, count: 7, color: "text-cyan-400", bg: "bg-cyan-500/10 border-cyan-500/20" }, + { name: "Workflow Optimization", icon: Zap, count: 4, color: "text-pink-400", bg: "bg-pink-500/10 border-pink-500/20" }, ]; const FEATURED_AGENTS = [ { name: "RevenueMaxx", - tagline: "Autonomous eCommerce revenue optimizer", + tagline: "Autonomous eCommerce revenue optimizer that reprices SKUs and triggers upsell sequences.", category: "Revenue Generation", - roi: "340%", + roi: "34%", + roiLabel: "avg lift", price: "12% of profit", rating: 4.9, - deployments: "18.4K", + deployments: "280", badge: "Top Earner", badgeColor: "bg-teal-500/15 text-teal-300 border-teal-500/25", }, { name: "LeadHunter Pro", - tagline: "B2B lead acquisition at machine speed", + tagline: "Crawls LinkedIn and company databases to identify and enrich high-intent B2B buyers.", category: "Lead Acquisition", - roi: "520%", - price: "$0.08 / lead", + roi: "$0.08", + roiLabel: "per verified lead", + price: "Usage-based", rating: 4.8, - deployments: "11.2K", + deployments: "142", badge: "Trending", badgeColor: "bg-blue-500/15 text-blue-300 border-blue-500/25", }, { name: "FlowOptimizer", - tagline: "AI workflow automation across 500+ apps", + tagline: "Maps your existing workflows, finds bottlenecks, and builds automation bridges between your tools.", category: "Workflow Optimization", - roi: "310%", + roi: "6+ hrs", + roiLabel: "saved per week", price: "$149 / month", rating: 4.6, - deployments: "31.2K", + deployments: "390", badge: "Most Deployed", badgeColor: "bg-violet-500/15 text-violet-300 border-violet-500/25", }, @@ -64,25 +68,25 @@ const HOW_IT_WORKS = [ { step: "01", title: "Browse the Marketplace", - body: "Find verified AI agents by function. Every agent includes verifiable ROI data, audit logs, and risk disclosures.", + body: "Find agents by function. Every listing includes real performance data, integration requirements, and risk disclosures.", icon: Target, }, { step: "02", title: "Connect Your Accounts", - body: "Grant sandboxed permissions to the platforms your agent needs. We enforce strict isolation — agents only access what you approve.", + body: "Grant sandboxed permissions to the platforms your agent needs. Agents only access exactly what you approve.", icon: Lock, }, { step: "03", - title: "Define Objectives", - body: "Set your goal, daily budget, spend caps, and performance thresholds. You control every parameter.", + title: "Define Your Objective", + body: "Set a concrete goal, daily budget, and performance thresholds. Every constraint is enforced at runtime.", icon: ShieldCheck, }, { step: "04", title: "Launch & Monitor", - body: "Your agent executes at machine speed. Watch real-time results in the Command Dashboard with full audit trails.", + body: "Your agent executes at machine speed. Watch results in the Command Dashboard with full audit trails.", icon: Activity, }, ]; @@ -93,8 +97,8 @@ const PRICING = [ price: "$0", period: "/ month", color: "border-slate-600/40", - buttonClass: "bg-slate-700 hover:bg-slate-600 text-white w-full py-3 rounded-xl font-semibold text-sm transition-all", - features: ["3 active agents", "1,000 tasks/month", "Basic dashboard", "Email support", "Standard marketplace"], + buttonClass: "bg-slate-700 hover:bg-slate-600 text-white w-full py-3 rounded-xl font-semibold text-sm transition-all cursor-pointer", + features: ["3 active agents", "1,000 tasks / month", "Basic dashboard", "Email support"], popular: false, }, { @@ -103,39 +107,39 @@ const PRICING = [ period: "/ month", color: "border-teal-500/40", popular: true, - buttonClass: "gradient-brand text-white w-full py-3 rounded-xl font-semibold text-sm hover:opacity-90 transition-opacity", - features: ["20 active agents", "50,000 tasks/month", "Advanced ROI analytics", "Priority support", "Full marketplace", "500+ integrations", "90-day audit logs"], + buttonClass: "gradient-brand text-white w-full py-3 rounded-xl font-semibold text-sm hover:opacity-90 transition-opacity cursor-pointer", + features: ["20 active agents", "50,000 tasks / month", "Full ROI analytics", "Priority support", "500+ integrations", "90-day audit logs"], }, { name: "Enterprise", price: "Custom", period: "", color: "border-blue-500/30", - buttonClass: "bg-blue-600 hover:bg-blue-500 text-white w-full py-3 rounded-xl font-semibold text-sm transition-all", - features: ["Unlimited agents", "Unlimited tasks", "Private agent clusters", "Dedicated manager", "SOC2 + HIPAA", "White-label option", "Custom SLA"], + buttonClass: "bg-blue-600/80 hover:bg-blue-600 text-white w-full py-3 rounded-xl font-semibold text-sm transition-all cursor-pointer", + features: ["Unlimited agents", "Unlimited tasks", "Private agent clusters", "Dedicated manager", "SOC2 + HIPAA", "Custom SLA"], popular: false, }, ]; const TESTIMONIALS = [ { - quote: "RevenueMaxx paid for itself in 4 days. We went from $180K to $240K monthly revenue without hiring anyone.", + quote: "RevenueMaxx paid for itself in the first week. Revenue is up 28% and I haven't touched pricing manually since.", name: "Sarah K.", - role: "Founder, eComm brand", + role: "Shopify store owner", avatar: "S", color: "bg-teal-600", }, { - quote: "LeadHunter generates better-qualified leads than our two SDRs combined. At $0.08 per lead, it is not even close.", + quote: "LeadHunter fills my CRM with better-qualified leads than my previous agency — at a fraction of the cost.", name: "Marcus T.", - role: "VP Sales, SaaS startup", + role: "Founder, B2B SaaS", avatar: "M", color: "bg-blue-600", }, { - quote: "We replaced a $12K/mo analyst retainer with ResearchBrain at $600/mo. The output quality is indistinguishable.", + quote: "FlowOptimizer connected our CRM, billing, and Slack in a day. That used to take a developer two weeks.", name: "Priya R.", - role: "Strategy Director, PE firm", + role: "Head of Ops, startup", avatar: "P", color: "bg-violet-600", }, @@ -145,20 +149,22 @@ export default function LandingPage() { const [email, setEmail] = useState(""); return ( -
+
+ {/* Navbar */} -