feat(seo): add useHead to all landing pages with Command as Service titles and descriptions
This commit is contained in:
parent
022b45d44f
commit
5482283727
@ -49,7 +49,6 @@ spec:
|
||||
name: {{ $fullName }}-frontend
|
||||
port:
|
||||
number: 80
|
||||
# Dedicated API host
|
||||
- host: api.gitdata.ai
|
||||
http:
|
||||
paths:
|
||||
@ -60,7 +59,6 @@ spec:
|
||||
name: {{ $fullName }}-app
|
||||
port:
|
||||
number: {{ .Values.app.service.port }}
|
||||
# Gitserver HTTP
|
||||
- host: git.gitdata.ai
|
||||
http:
|
||||
paths:
|
||||
@ -71,7 +69,6 @@ spec:
|
||||
name: {{ $fullName }}-gitserver-http
|
||||
port:
|
||||
number: {{ .Values.gitserver.service.http.port }}
|
||||
# Static files
|
||||
- host: static.gitdata.ai
|
||||
http:
|
||||
paths:
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {ArrowRight, Book} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const TEAM = [
|
||||
{name: 'Alex Chen', role: 'Founder & CEO', initials: 'AC'},
|
||||
{name: 'Sarah Kim', role: 'CTO', initials: 'SK'},
|
||||
@ -10,6 +11,8 @@ const TEAM = [
|
||||
];
|
||||
|
||||
export default function AboutPage() {
|
||||
|
||||
useHead({ title: 'About — GitDataAI', description: 'We believe every engineering action should be a versioned command. GitDataAI: Where Humans & Agents Engineer Together.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Book, Code2, Command, FileText, Layers} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const DOCS_SECTIONS = [
|
||||
{
|
||||
icon: Book,
|
||||
@ -36,6 +37,8 @@ const DOCS_SECTIONS = [
|
||||
];
|
||||
|
||||
export default function DocsPage() {
|
||||
|
||||
useHead({ title: 'Documentation — GitDataAI', description: 'Everything you need to build, deploy, and scale agentic workflows via GitDataAI Command as Service.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Globe, Key, Terminal} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const ENDPOINTS = [
|
||||
{method: 'GET', path: '/v1/agents', desc: 'List all agents in your workspace'},
|
||||
{method: 'POST', path: '/v1/rooms', desc: 'Create a command-first room for humans and agents'},
|
||||
@ -10,6 +11,8 @@ const ENDPOINTS = [
|
||||
];
|
||||
|
||||
export default function NetworkApiPage() {
|
||||
|
||||
useHead({ title: 'Developer API — GitDataAI', description: 'Emit commands, stream agent results, and orchestrate your AI workforce via a unified REST API.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {Bot, Lock, Network, Users} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const STATS = [
|
||||
{value: '12,400+', label: 'Active Agents'},
|
||||
{value: '840+', label: 'Workspaces'},
|
||||
@ -15,6 +16,8 @@ const FEATURED_ROOMS = [
|
||||
];
|
||||
|
||||
export default function NetworkPage() {
|
||||
|
||||
useHead({ title: 'The Network — GitDataAI', description: 'A growing ecosystem of agents, workspaces, and skills collaborating through a unified command stream. Every agent action is a command.' });
|
||||
return (
|
||||
<LandingLayout>
|
||||
<section className="pt-24 pb-32">
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Bot, Users} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const PUBLIC_ROOMS = [
|
||||
{title: 'OSS Security Audit: actix-web', agents: 5, participants: 24, tags: ['security', 'rust', 'audit'], live: true},
|
||||
{title: 'React Performance Deep Dive', agents: 3, participants: 12, tags: ['frontend', 'react', 'performance'], live: true},
|
||||
@ -12,6 +13,8 @@ const PUBLIC_ROOMS = [
|
||||
];
|
||||
|
||||
export default function NetworkRoomsPage() {
|
||||
|
||||
useHead({ title: 'Public Rooms — GitDataAI', description: 'Join open rooms where developers and AI agents execute engineering commands together on real problems.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {ArrowRight, Check} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const FEATURES = [
|
||||
'Unlimited agents and memory',
|
||||
'Dedicated compute infrastructure',
|
||||
@ -16,6 +17,8 @@ const FEATURES = [
|
||||
];
|
||||
|
||||
export default function PricingEnterprisePage() {
|
||||
|
||||
useHead({ title: 'Enterprise — GitDataAI', description: 'Command as Service at enterprise scale. Custom deployment, granular command-stream governance, and dedicated SLA for your agent fleet.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -3,6 +3,7 @@ import {useNavigate} from 'react-router-dom';
|
||||
import {ChevronDown} from 'lucide-react';
|
||||
import {useState} from 'react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const FAQS = [
|
||||
['How does billing work?', 'You are billed monthly based on your active tier. Upgrades take effect immediately; downgrades apply at the next billing cycle.'],
|
||||
['What counts as a token?', 'Tokens are the sum of all input and output tokens consumed by your agents executing commands across all models. Memory storage is billed separately.'],
|
||||
@ -15,6 +16,8 @@ const FAQS = [
|
||||
];
|
||||
|
||||
export default function PricingFaqPage() {
|
||||
|
||||
useHead({ title: 'Billing FAQ — GitDataAI', description: 'Answers to common questions about pricing, billing, and command stream usage on GitDataAI.' });
|
||||
const navigate = useNavigate();
|
||||
const [open, setOpen] = useState<number | null>(0);
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ import {useNavigate} from 'react-router-dom';
|
||||
import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {Check} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const TIERS = [
|
||||
{
|
||||
name: 'Free',
|
||||
@ -49,6 +50,8 @@ const TIERS = [
|
||||
];
|
||||
|
||||
export default function PricingPage() {
|
||||
|
||||
useHead({ title: 'Pricing — GitDataAI', description: 'Simple, transparent pricing. Start free. Scale as your agent fleet grows. Command as Service for every team.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {BookOpen, Code2, Terminal} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const SECTIONS = [
|
||||
{icon: BookOpen, title: 'Skill Manifest', desc: 'Define skill metadata, tools, prompts, and trigger conditions.'},
|
||||
{icon: Code2, title: 'Tool Definitions', desc: 'Register custom tools that your skill agents can call.'},
|
||||
@ -9,6 +10,8 @@ const SECTIONS = [
|
||||
];
|
||||
|
||||
export default function SkillsDocsPage() {
|
||||
|
||||
useHead({ title: 'Building Skills — GitDataAI', description: 'A skill is a versioned package of prompts, tools, and behavior patterns — invoked by command, composable into any workflow.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Bot, Code2, Globe, Layers, Search, Star} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const FEATURED_SKILLS = [
|
||||
{
|
||||
icon: Code2,
|
||||
@ -44,6 +45,8 @@ const FEATURED_SKILLS = [
|
||||
const CATEGORIES = ['All', 'Frontend', 'Backend', 'DevOps', 'Security', 'Data', 'Testing'];
|
||||
|
||||
export default function SkillsPage() {
|
||||
|
||||
useHead({ title: 'Skill Registry — GitDataAI', description: 'Reusable, versioned agent behaviors packaged as skills — invoked by command, deployed across your entire agent fleet.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {ArrowRight, BookOpen, Code2, Star} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const STEPS = [
|
||||
{icon: Code2, title: '1. Write your skill', desc: 'Define prompts, tools, and behaviors in a skill manifest YAML file.'},
|
||||
{icon: BookOpen, title: '2. Test locally', desc: 'Use the CLI to simulate agent runs and validate outputs before publishing.'},
|
||||
@ -9,6 +10,8 @@ const STEPS = [
|
||||
];
|
||||
|
||||
export default function SkillsPublishPage() {
|
||||
|
||||
useHead({ title: 'Publish a Skill — GitDataAI', description: 'Turn your best agent behaviors into reusable, versioned skills — invoked by command, composable into any workflow.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Cpu} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const LIMITS = [
|
||||
{tier: 'Free', tokens: '100K', compute: '1x', agents: '3'},
|
||||
{tier: 'Pro', tokens: '10M', compute: '4x', agents: 'Unlimited'},
|
||||
@ -9,6 +10,8 @@ const LIMITS = [
|
||||
];
|
||||
|
||||
export default function SolutionsGovernancePage() {
|
||||
|
||||
useHead({ title: 'Compute Governance — GitDataAI', description: 'Unified management of LLM tokens and compute resources. Every AI command has a cost — full visibility into your command stream spend.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,7 +2,10 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Brain, GitBranch, RotateCcw} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
export default function SolutionsMemoryPage() {
|
||||
|
||||
useHead({ title: 'Agent Memory — GitDataAI', description: 'Git-native long-term memory for AI agents — versioned command context that travels with every command.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Bot, Code2, GitBranch, Network, Workflow} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const SOLUTIONS = [
|
||||
{
|
||||
icon: Workflow,
|
||||
@ -48,6 +49,8 @@ const SOLUTIONS = [
|
||||
];
|
||||
|
||||
export default function SolutionsPage() {
|
||||
|
||||
useHead({ title: 'Command as Service — GitDataAI', description: 'Every action is a versioned command. GitDataAI: where humans and AI agents engineer together via a unified command stream.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
@ -2,6 +2,7 @@ import {LandingLayout} from '@/components/landing/landing-layout';
|
||||
import {useNavigate} from 'react-router-dom';
|
||||
import {Bot, ShieldCheck, Users} from 'lucide-react';
|
||||
|
||||
import {useHead} from '@/hooks/useHead';
|
||||
const FEATURES = [
|
||||
{title: 'Command-first Multi-modal', desc: 'Text, code, and structured command data shared simultaneously in a single room.'},
|
||||
{title: 'Human-in-the-Loop', desc: 'Approve, reject, or modify any agent action before it executes.'},
|
||||
@ -12,6 +13,8 @@ const FEATURES = [
|
||||
];
|
||||
|
||||
export default function SolutionsRoomsPage() {
|
||||
|
||||
useHead({ title: 'Collaborative Rooms — GitDataAI', description: 'Command-first rooms where humans and AI agents execute engineering tasks together via shared command streams.' });
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<LandingLayout>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user