export interface ServiceCard {
  icon: string; // emoji
  name: string;
  subdomain: string;
  url: string;
  description: string;
  status: 'operational' | 'degraded' | 'offline';
  tags?: string[];
}

export interface ServiceCategory {
  id: string;
  title: string;
  icon: string; // emoji
  services: ServiceCard[];
}

export interface StatItem {
  value: number;
  suffix: string;
  label: string;
  icon: string;
}

export const categories: ServiceCategory[] = [
  {
    id: 'media',
    title: 'Media & Photos',
    icon: '🎬',
    services: [
      {
        icon: '📸',
        name: 'Photo Storage',
        subdomain: 'photos.filipe.uk',
        url: 'https://photos.filipe.uk',
        description:
          'Immich — self-hosted Google Photos alternative. Stores photos in Cloudflare R2 encrypted with AES-256 SSE-C via a custom Go proxy (8.6MB scratch Docker image). Supports mobile backup, facial recognition, timeline view.',
        status: 'operational',
        tags: ['photos', 'storage', 'R2'],
      },
      {
        icon: '🔍',
        name: 'Web Search',
        subdomain: 'search.filipe.uk',
        url: 'https://search.filipe.uk',
        description:
          'SearXNG metasearch engine. Queries Google, DuckDuckGo, Brave, Startpage, Wikipedia simultaneously. Privacy-first, no tracking, local Valkey cache.',
        status: 'operational',
        tags: ['search', 'privacy'],
      },
    ],
  },
  {
    id: 'security',
    title: 'Security & Passwords',
    icon: '🔒',
    services: [
      {
        icon: '🔑',
        name: 'Password Vault',
        subdomain: 'passwords.filipe.uk',
        url: 'https://passwords.filipe.uk',
        description:
          'Vaultwarden (Bitwarden-compatible). Self-hosted, encrypted password manager. Accessible from any Bitwarden client.',
        status: 'operational',
        tags: ['passwords', 'encryption'],
      },
      {
        icon: '🛡️',
        name: 'SSH Access',
        subdomain: 'ssh.filipe.uk',
        url: 'https://ssh.filipe.uk',
        description:
          'Secure SSH through Cloudflare Tunnel. Zero open ports, Cloudflare Access authentication, fail2ban protection. ED25519 keys only.',
        status: 'operational',
        tags: ['ssh', 'access'],
      },
    ],
  },
  {
    id: 'knowledge',
    title: 'Notes & Knowledge',
    icon: '🧠',
    services: [
      {
        icon: '📝',
        name: 'Obsidian Sync',
        subdomain: 'obsidian.filipe.uk',
        url: 'https://obsidian.filipe.uk',
        description:
          'CouchDB-powered real-time sync for Obsidian notes. End-to-end encrypted LiveSync across all devices. Indexed by AnythingLLM for AI-powered search.',
        status: 'operational',
        tags: ['notes', 'sync', 'AI'],
      },
      {
        icon: '📚',
        name: 'Wiki',
        subdomain: 'wiki.filipe.uk',
        url: 'https://wiki.filipe.uk',
        description:
          'BookStack self-hosted wiki. Organized into books, chapters, and pages for documenting infrastructure and procedures.',
        status: 'operational',
        tags: ['wiki', 'docs'],
      },
      {
        icon: '📰',
        name: 'Blog',
        subdomain: 'blog.filipe.uk',
        url: 'https://blog.filipe.uk',
        description:
          'WordPress self-hosted blog for technical articles, infrastructure updates, and personal content.',
        status: 'operational',
        tags: ['blog', 'content'],
      },
      {
        icon: '📰',
        name: 'News Reader',
        subdomain: 'news.filipe.uk',
        url: 'https://news.filipe.uk',
        description:
          'Newscope AI-powered RSS feed reader. Curates and summarizes articles using DeepSeek/GLM.',
        status: 'operational',
        tags: ['RSS', 'AI'],
      },
    ],
  },
  {
    id: 'development',
    title: 'Development & Code',
    icon: '💻',
    services: [
      {
        icon: '📂',
        name: 'Git Repos',
        subdomain: 'git.filipe.uk',
        url: 'https://git.filipe.uk',
        description:
          'Gitea self-hosted Git server. Auto-mirrors GitHub repositories daily. Private repos for sensitive code. Searchable by AI agents via MCP tools.',
        status: 'operational',
        tags: ['git', 'code'],
      },
      {
        icon: '🗄️',
        name: 'Database Browser',
        subdomain: 'data.filipe.uk',
        url: 'https://data.filipe.uk',
        description:
          'Datasette web UI for browsing SQLite databases. Run SQL queries directly in the browser.',
        status: 'operational',
        tags: ['database', 'SQL'],
      },
      {
        icon: '🧬',
        name: 'Vector Database',
        subdomain: 'vectors.filipe.uk',
        url: 'https://vectors.filipe.uk',
        description:
          'LanceDB Viewer for browsing vector embeddings. Visualize semantic search results and AI agent memories.',
        status: 'operational',
        tags: ['vectors', 'AI'],
      },
      {
        icon: '📋',
        name: 'Task Management',
        subdomain: 'tasks.filipe.uk',
        url: 'https://tasks.filipe.uk',
        description:
          'Vikunja task manager. Kanban boards, calendar views, team collaboration. Organize by project, priority, and due date.',
        status: 'operational',
        tags: ['tasks', 'kanban'],
      },
    ],
  },
  {
    id: 'project-mgmt',
    title: 'Project Management',
    icon: '📈',
    services: [
      {
        icon: '📊',
        name: 'Huly Platform',
        subdomain: 'huly.filipe.uk',
        url: 'https://huly.filipe.uk',
        description:
          'Enterprise project management. Issue tracking, sprint planning, team chat, document collaboration. Self-hosted alternative to Jira/Linear/Notion. 10 microservices.',
        status: 'operational',
        tags: ['project', 'agile', 'enterprise'],
      },
    ],
  },
  {
    id: 'files',
    title: 'File Management',
    icon: '📂',
    services: [
      {
        icon: '☁️',
        name: 'Cloud Sync',
        subdomain: 'sync.filipe.uk',
        url: 'https://sync.filipe.uk',
        description:
          'Nextcloud — files, contacts, calendar, tasks sync across all devices. Self-hosted Google alternative. WebDAV as network drive.',
        status: 'operational',
        tags: ['files', 'sync', 'WebDAV'],
      },
      {
        icon: '📁',
        name: 'File Browser',
        subdomain: 'filestash.filipe.uk',
        url: 'https://filestash.filipe.uk',
        description:
          'Filestash — web-based file manager with polished UI. Browse, upload, edit, share files. Connects to S3, WebDAV, SFTP.',
        status: 'operational',
        tags: ['files', 'browser'],
      },
    ],
  },
  {
    id: 'monitoring',
    title: 'Monitoring & Analytics',
    icon: '📡',
    services: [
      {
        icon: '📊',
        name: 'System Monitor',
        subdomain: 'monitor.filipe.uk',
        url: 'https://monitor.filipe.uk',
        description:
          'Netdata real-time monitoring. CPU, RAM, disk, network, containers — per-second metrics with ML anomaly detection.',
        status: 'operational',
        tags: ['monitoring', 'metrics'],
      },
    ],
  },
  {
    id: 'ai',
    title: 'AI Infrastructure',
    icon: '🤖',
    services: [
      {
        icon: '🧩',
        name: 'AI MCP Hub',
        subdomain: 'mcp.filipe.uk',
        url: 'https://mcp.filipe.uk',
        description:
          'MetaMCP — central aggregator exposing 10+ MCP tools (web search, vector memory, git, databases, calendar, contacts, system monitoring) for any AI agent. All agents share memory through LanceDB.',
        status: 'operational',
        tags: ['MCP', 'AI', 'tools'],
      },
      {
        icon: '🤖',
        name: 'A2A Agent',
        subdomain: 'agent.filipe.uk',
        url: 'https://agent.filipe.uk',
        description:
          'Google Agent-to-Agent protocol server. Enables agent-to-agent task delegation across platforms. Supports web_search and system_status skills.',
        status: 'operational',
        tags: ['A2A', 'agents'],
      },
      {
        icon: '🦞',
        name: 'OpenClaw Gateway',
        subdomain: 'openclaw.filipe.uk',
        url: 'https://openclaw.filipe.uk',
        description:
          'OpenClaw AI agent gateway. QR pairing for Android app, Telegram integration, web chat. Model: DeepSeek (with GLM-4.7 tested).',
        status: 'operational',
        tags: ['gateway', 'chat', 'Telegram'],
      },
    ],
  },
  {
    id: 'charlotte',
    title: 'Charlotte Tucker Ecosystem',
    icon: '🌟',
    services: [
      {
        icon: '🎨',
        name: 'Dev Site',
        subdomain: 'dev.charlottetucker.com',
        url: 'https://dev.charlottetucker.com',
        description: 'Charlotte Tucker development/staging site.',
        status: 'operational',
        tags: ['Charlotte Tucker', 'dev'],
      },
      {
        icon: '🌐',
        name: 'Web V2',
        subdomain: 'web2.charlottetucker.com',
        url: 'https://web2.charlottetucker.com',
        description: 'Charlotte Tucker website v2.',
        status: 'operational',
        tags: ['Charlotte Tucker', 'web'],
      },
      {
        icon: '🔌',
        name: 'API',
        subdomain: 'api.charlottetucker.com',
        url: 'https://api.charlottetucker.com',
        description: 'API backend for Charlotte Tucker services.',
        status: 'operational',
        tags: ['Charlotte Tucker', 'API'],
      },
      {
        icon: '🔮',
        name: 'Web V3',
        subdomain: 'web3.charlottetucker.com',
        url: 'https://web3.charlottetucker.com',
        description: 'Charlotte Tucker website v3 — latest iteration.',
        status: 'operational',
        tags: ['Charlotte Tucker', 'web'],
      },
    ],
  },
];

export const statsData: StatItem[] = [
  { value: 23, suffix: '+', label: 'Services', icon: '🚀' },
  { value: 50, suffix: '', label: 'Containers', icon: '📦' },
  { value: 3, suffix: '', label: 'AI Agents', icon: '🤖' },
  { value: 0, suffix: '', label: 'Open Ports', icon: '🚫' },
  { value: 1, suffix: '', label: 'Zero Trust', icon: '🛡️' },
  { value: 4500, suffix: '+', label: 'Obsidian Notes', icon: '📝' },
];
