-- Tech Stack Specifications Seed Data
-- Total: 176 tech specs
-- Last updated: 2026-01-24
-- Based on real-world benchmarks and production experience

INSERT OR REPLACE INTO tech_specs (name, category, vcpu_per_users, vcpu_per_users_max, min_memory_mb, max_memory_mb, description, aliases, is_memory_intensive, is_cpu_intensive) VALUES

-- ============================================================================
-- AUTOMATION (1)
-- ============================================================================
('n8n', 'automation', 50, 150, 512, 2048, 'Workflow automation', '[]', 0, 0),

-- ============================================================================
-- BACKUP (3)
-- ============================================================================
('borgbackup', 'backup', 30, 100, 1024, 2048, 'Deduplicating backup', '["borg"]', 0, 1),
('duplicati', 'backup', 30, 100, 1024, 2048, 'Backup with encryption', '[]', 0, 1),
('restic', 'backup', 50, 200, 512, 2048, 'Backup program', '[]', 0, 1),

-- ============================================================================
-- CACHE (2)
-- ============================================================================
('memcached', 'cache', 1000, 2000, 512, 2048, 'Distributed memory caching', '[]', 1, 0),
('redis', 'cache', 500, 1000, 1024, 4096, 'In-memory data store and cache', '["redis-cluster", "keydb"]', 1, 0),

-- ============================================================================
-- CMS (17)
-- ============================================================================
('directus', 'cms', 100, 300, 512, 1024, 'Headless CMS', '[]', 0, 0),
('drupal', 'cms', 50, 150, 1024, 4096, 'Enterprise CMS', '[]', 0, 0),
('erpnext', 'cms', 20, 50, 4096, 8192, 'Open source ERP', '[]', 1, 0),
('ghost', 'cms', 100, 300, 512, 1024, 'Publishing platform', '[]', 0, 0),
('joomla', 'cms', 50, 150, 1024, 2048, 'Content management system', '[]', 0, 0),
('keystone', 'cms', 50, 150, 1024, 2048, 'Node.js headless CMS', '[]', 0, 0),
('magento', 'cms', 20, 50, 4096, 8192, 'E-commerce platform, resource intensive', '["adobe-commerce"]', 1, 1),
('medusa', 'cms', 50, 150, 1024, 2048, 'Open source Shopify alternative', '["medusajs"]', 0, 0),
('odoo', 'cms', 20, 50, 4096, 8192, 'Business ERP suite', '[]', 1, 0),
('payload', 'cms', 50, 150, 1024, 2048, 'Headless CMS', '["payload-cms"]', 0, 0),
('saleor', 'cms', 30, 100, 2048, 4096, 'GraphQL e-commerce', '[]', 1, 0),
('shopify', 'cms', 50, 150, 1024, 2048, 'Shopify app hosting', '[]', 0, 0),
('strapi', 'cms', 50, 150, 1024, 2048, 'Headless CMS', '[]', 0, 0),
('umbraco', 'cms', 30, 100, 2048, 4096, '.NET CMS', '[]', 1, 0),
('wagtail', 'cms', 50, 150, 1024, 2048, 'Django CMS', '[]', 0, 0),
('woocommerce', 'cms', 30, 100, 4096, 8192, 'E-commerce platform on WordPress, needs 4-8GB for stores', '["woo"]', 1, 0),
('wordpress', 'cms', 100, 300, 512, 2048, 'Popular CMS, optimized can run on 512MB', '["wp"]', 0, 0),

-- ============================================================================
-- COMMUNICATION (9)
-- ============================================================================
('discord-bot', 'communication', 100, 500, 256, 512, 'Discord bot hosting', '["discordjs", "discord.py"]', 0, 0),
('jitsi', 'communication', 5, 15, 4096, 8192, 'Video conferencing', '["jitsi-meet"]', 1, 1),
('matrix', 'communication', 50, 150, 1024, 4096, 'Matrix/Synapse chat server', '["synapse", "element"]', 1, 0),
('mattermost', 'communication', 50, 150, 2048, 4096, 'Slack alternative', '[]', 0, 0),
('mumble', 'communication', 100, 500, 256, 512, 'Voice chat server, very lightweight', '[]', 0, 0),
('revolt', 'communication', 30, 100, 1024, 2048, 'Discord alternative', '[]', 0, 0),
('rocketchat', 'communication', 30, 100, 2048, 4096, 'Open source chat', '["rocket-chat"]', 1, 0),
('teamspeak', 'communication', 50, 200, 512, 1024, 'Voice chat server', '["ts3"]', 0, 0),
('zulip', 'communication', 30, 100, 2048, 4096, 'Team chat', '[]', 1, 0),

-- ============================================================================
-- CONTAINER (2)
-- ============================================================================
('docker', 'container', 100, 200, 512, 1024, 'Container runtime overhead', '["containerd", "podman"]', 0, 0),
('kubernetes', 'container', 50, 100, 2048, 4096, 'Container orchestration overhead', '["k8s", "k3s", "microk8s"]', 1, 0),

-- ============================================================================
-- DATABASE (18)
-- ============================================================================
('arangodb', 'database', 30, 80, 4096, 8192, 'Multi-model database', '[]', 1, 0),
('cassandra', 'database', 50, 100, 4096, 8192, 'Distributed wide-column database', '["scylladb"]', 1, 0),
('clickhouse', 'database', 30, 80, 8192, 16384, 'OLAP database, needs 8GB+ for production', '[]', 1, 1),
('cockroachdb', 'database', 20, 50, 4096, 8192, 'Distributed SQL database', '["crdb"]', 1, 0),
('couchdb', 'database', 50, 150, 2048, 4096, 'Document database with sync', '[]', 1, 0),
('elasticsearch', 'database', 20, 50, 8192, 32768, 'Search engine, needs 8GB+ heap for production', '["elastic", "opensearch"]', 1, 1),
('influxdb', 'database', 50, 150, 2048, 8192, 'Time-series database', '[]', 1, 0),
('mongodb', 'database', 80, 200, 2048, 4096, 'Document-oriented database', '["mongo"]', 1, 0),
('mssql', 'database', 50, 100, 4096, 8192, 'Microsoft SQL Server', '["sql-server", "sqlserver"]', 1, 0),
('mysql', 'database', 100, 200, 2048, 4096, 'Popular relational database', '["mariadb", "percona"]', 1, 0),
('neo4j', 'database', 20, 50, 4096, 8192, 'Graph database', '[]', 1, 0),
('nocodb', 'database', 50, 150, 512, 2048, 'Airtable alternative', '[]', 0, 0),
('postgresql', 'database', 100, 200, 2048, 4096, 'Advanced relational database', '["postgres", "pg", "supabase"]', 1, 0),
('questdb', 'database', 30, 100, 4096, 8192, 'Fast time-series database', '[]', 1, 0),
('sqlite', 'database', 500, 1000, 256, 512, 'Embedded relational database', '[]', 0, 0),
('supabase', 'database', 50, 150, 2048, 4096, 'Firebase alternative (self-hosted)', '[]', 1, 0),
('timescaledb', 'database', 30, 100, 4096, 8192, 'Time-series PostgreSQL extension', '[]', 1, 0),
('vitess', 'database', 20, 50, 4096, 8192, 'MySQL clustering system', '[]', 1, 0),

-- ============================================================================
-- DEVOPS (13)
-- ============================================================================
('argocd', 'devops', 30, 100, 1024, 2048, 'GitOps continuous delivery', '[]', 0, 0),
('concourse', 'devops', 20, 50, 2048, 4096, 'CI/CD pipeline', '[]', 1, 0),
('consul', 'devops', 50, 150, 512, 1024, 'Service mesh', '[]', 0, 0),
('drone', 'devops', 50, 150, 512, 2048, 'Lightweight CI/CD', '[]', 0, 0),
('gitea', 'devops', 100, 300, 512, 1024, 'Lightweight Git server', '["forgejo"]', 0, 0),
('gitlab', 'devops', 10, 30, 4096, 8192, 'Git + CI/CD platform', '["gitlab-ce", "gitlab-ee"]', 1, 0),
('gitness', 'devops', 50, 150, 1024, 2048, 'Code hosting platform', '["harness"]', 0, 0),
('harbor', 'devops', 20, 50, 4096, 8192, 'Container registry', '[]', 1, 0),
('jenkins', 'devops', 20, 50, 2048, 4096, 'CI/CD server', '[]', 1, 0),
('nomad', 'devops', 30, 100, 1024, 2048, 'Workload orchestrator', '[]', 0, 0),
('sonarqube', 'devops', 10, 30, 4096, 8192, 'Code quality analysis', '[]', 1, 1),
('vault', 'devops', 50, 150, 1024, 2048, 'Secrets management', '["hashicorp-vault"]', 0, 0),
('woodpecker', 'devops', 50, 150, 512, 1024, 'Lightweight CI/CD', '[]', 0, 0),

-- ============================================================================
-- GAME (19)
-- ============================================================================
('7daystodie', 'game', 3, 10, 8192, 16384, '7 Days to Die dedicated server', '["7dtd", "7-days-to-die"]', 1, 1),
('ark', 'game', 3, 10, 8192, 16384, 'ARK: Survival Evolved server', '["ark-survival"]', 1, 1),
('conanexiles', 'game', 3, 8, 8192, 16384, 'Conan Exiles dedicated server', '["conan-exiles"]', 1, 1),
('csgo', 'game', 10, 30, 2048, 4096, 'Counter-Strike server', '["cs2"]', 0, 1),
('dayz', 'game', 3, 10, 8192, 16384, 'DayZ dedicated server', '[]', 1, 1),
('enshrouded', 'game', 3, 10, 8192, 16384, 'Enshrouded dedicated server', '[]', 1, 1),
('factorio', 'game', 5, 20, 2048, 4096, 'Factory simulation server', '[]', 0, 1),
('gmod', 'game', 5, 15, 4096, 8192, 'Garry''s Mod server', '["garrysmod"]', 1, 0),
('l4d2', 'game', 10, 30, 2048, 4096, 'Left 4 Dead 2 server', '["left4dead2"]', 0, 0),
('minecraft', 'game', 5, 20, 4096, 8192, 'Minecraft server (Java edition)', '["minecraft-java", "paper", "spigot", "bukkit"]', 1, 1),
('minecraft-bedrock', 'game', 10, 30, 2048, 4096, 'Minecraft Bedrock server', '["bedrock"]', 0, 1),
('palworld', 'game', 3, 10, 8192, 16384, 'Palworld dedicated server', '[]', 1, 1),
('projectzomboid', 'game', 3, 10, 4096, 8192, 'Project Zomboid server', '["pz", "project-zomboid"]', 1, 0),
('rust-game', 'game', 3, 10, 8192, 16384, 'Rust game server', '[]', 1, 1),
('satisfactory', 'game', 3, 10, 6144, 12288, 'Satisfactory dedicated server', '[]', 1, 1),
('terraria', 'game', 10, 30, 1024, 2048, 'Terraria server', '["tmodloader"]', 0, 0),
('unturned', 'game', 10, 30, 2048, 4096, 'Unturned server, lightweight', '[]', 0, 0),
('valheim', 'game', 5, 15, 4096, 8192, 'Valheim dedicated server', '[]', 1, 1),
('vrising', 'game', 5, 15, 6144, 12288, 'V Rising dedicated server', '["v-rising"]', 1, 1),

-- ============================================================================
-- IOT (1)
-- ============================================================================
('homeassistant', 'iot', 50, 200, 1024, 2048, 'Home automation', '["hass", "home-assistant"]', 0, 0),

-- ============================================================================
-- MEDIA (4)
-- ============================================================================
('ffmpeg', 'media', 5, 20, 2048, 8192, 'Video transcoding, CPU intensive', '[]', 0, 1),
('jellyfin', 'media', 3, 10, 2048, 4096, 'Open source media server', '[]', 1, 1),
('obs', 'media', 5, 10, 4096, 8192, 'Streaming software', '["obs-studio"]', 1, 1),
('plex', 'media', 3, 10, 2048, 8192, 'Media server with transcoding', '[]', 1, 1),

-- ============================================================================
-- ML (10)
-- ============================================================================
('comfyui', 'ml', 1, 3, 8192, 16384, 'Node-based Stable Diffusion UI', '[]', 1, 1),
('langchain', 'ml', 10, 30, 2048, 4096, 'LLM application framework', '[]', 1, 0),
('localai', 'ml', 1, 5, 4096, 16384, 'OpenAI-compatible local AI', '[]', 1, 1),
('ollama', 'ml', 1, 5, 8192, 32768, 'Local LLM inference', '["llama", "llm"]', 1, 1),
('pytorch', 'ml', 5, 20, 8192, 16384, 'Deep learning framework', '["torch"]', 1, 1),
('stable-diffusion', 'ml', 1, 3, 8192, 16384, 'Image generation, needs GPU or lots of RAM', '["sd", "automatic1111", "a1111"]', 1, 1),
('tensorflow', 'ml', 5, 20, 8192, 16384, 'Machine learning framework', '["tf", "keras"]', 1, 1),
('text-generation-webui', 'ml', 1, 3, 8192, 32768, 'LLM web interface', '["oobabooga", "tgwui"]', 1, 1),
('vllm', 'ml', 1, 2, 16384, 65536, 'High-throughput LLM serving', '[]', 1, 1),
('whisper', 'ml', 1, 5, 4096, 8192, 'Speech recognition', '["openai-whisper"]', 1, 1),

-- ============================================================================
-- MONITORING (9)
-- ============================================================================
('grafana', 'monitoring', 100, 300, 512, 2048, 'Visualization dashboard', '[]', 0, 0),
('jaeger', 'monitoring', 30, 100, 2048, 4096, 'Distributed tracing', '[]', 1, 0),
('loki', 'monitoring', 30, 100, 2048, 4096, 'Log aggregation', '[]', 1, 0),
('nagios', 'monitoring', 50, 150, 1024, 2048, 'Infrastructure monitoring', '[]', 0, 0),
('netdata', 'monitoring', 50, 150, 512, 1024, 'Real-time performance monitoring', '[]', 0, 0),
('prometheus', 'monitoring', 50, 150, 2048, 8192, 'Metrics monitoring', '[]', 1, 0),
('uptime-kuma', 'monitoring', 100, 500, 256, 512, 'Uptime monitoring', '[]', 0, 0),
('zabbix', 'monitoring', 30, 100, 2048, 4096, 'Enterprise monitoring', '[]', 1, 0),
('zipkin', 'monitoring', 30, 100, 1024, 2048, 'Distributed tracing', '[]', 0, 0),

-- ============================================================================
-- NETWORK (7)
-- ============================================================================
('cloudflared', 'network', 500, 2000, 128, 256, 'Cloudflare Tunnel', '["argo-tunnel"]', 0, 0),
('openvpn', 'network', 100, 500, 256, 512, 'Traditional VPN', '[]', 0, 0),
('squid', 'network', 100, 500, 1024, 4096, 'Caching proxy', '[]', 1, 0),
('tailscale', 'network', 500, 2000, 128, 256, 'Zero-config VPN', '[]', 0, 0),
('varnish', 'network', 200, 1000, 2048, 8192, 'HTTP accelerator cache', '[]', 1, 0),
('wireguard', 'network', 500, 2000, 64, 256, 'Modern VPN, very lightweight', '[]', 0, 0),
('zerotier', 'network', 500, 2000, 128, 256, 'Software-defined networking', '[]', 0, 0),

-- ============================================================================
-- QUEUE (2)
-- ============================================================================
('kafka', 'queue', 100, 300, 4096, 8192, 'Distributed event streaming', '["kafka-connect"]', 1, 0),
('rabbitmq', 'queue', 100, 500, 2048, 4096, '1GB per 10k connections, 2-4 cores for 10k msg/s', '["amqp"]', 1, 0),

-- ============================================================================
-- RUNTIME (28)
-- ============================================================================
('adonis', 'runtime', 100, 300, 1024, 2048, 'Node.js MVC framework', '["adonisjs"]', 0, 0),
('angular', 'runtime', 100, 300, 512, 1024, 'Angular SSR', '[]', 0, 0),
('appwrite', 'runtime', 50, 150, 1024, 2048, 'Backend as a Service', '[]', 0, 0),
('astro', 'runtime', 300, 800, 256, 512, 'Static-first framework, very efficient', '[]', 0, 0),
('bun', 'runtime', 300, 600, 512, 1024, 'Fast JavaScript runtime with bundler', '[]', 0, 0),
('deno', 'runtime', 200, 500, 512, 1024, 'Secure JavaScript/TypeScript runtime', '["deno2"]', 0, 0),
('dotnet', 'runtime', 100, 300, 1024, 2048, '.NET runtime', '["csharp", "c#", "asp.net", "aspnet", ".net", "dotnet-core", "blazor"]', 0, 0),
('elixir', 'runtime', 500, 1000, 512, 2048, 'Functional language on BEAM VM', '["phoenix", "erlang", "beam"]', 0, 0),
('elysia', 'runtime', 500, 1500, 256, 512, 'Bun web framework', '[]', 0, 0),
('fastify', 'runtime', 300, 800, 512, 1024, 'Fast Node.js framework', '[]', 0, 0),
('go', 'runtime', 300, 800, 512, 1024, 'Compiled language with built-in concurrency', '["golang", "gin", "echo", "fiber"]', 0, 0),
('graphql', 'runtime', 150, 400, 512, 1024, 'GraphQL server', '["apollo", "hasura"]', 0, 0),
('grpc', 'runtime', 200, 500, 512, 1024, 'gRPC server', '[]', 0, 0),
('hono', 'runtime', 500, 1500, 256, 512, 'Lightweight web framework', '[]', 0, 0),
('java', 'runtime', 50, 150, 2048, 4096, 'Enterprise-grade JVM runtime', '["spring", "spring-boot", "tomcat", "jetty", "quarkus", "micronaut"]', 1, 0),
('kotlin', 'runtime', 50, 150, 2048, 4096, 'Modern JVM language', '["ktor"]', 1, 0),
('nextjs', 'runtime', 100, 300, 512, 2048, 'React SSR framework, SSR needs 500MB+', '["next", "next.js"]', 1, 0),
('nodejs', 'runtime', 200, 500, 1024, 2048, 'JavaScript runtime for server-side applications', '["node", "node.js", "express", "express.js", "nestjs", "fastify", "koa"]', 0, 0),
('nuxt', 'runtime', 100, 300, 512, 2048, 'Vue SSR framework', '["nuxt.js", "nuxtjs"]', 1, 0),
('php', 'runtime', 100, 300, 1024, 2048, 'Server-side scripting language', '["php-fpm", "laravel", "symfony", "wordpress", "drupal", "codeigniter"]', 0, 0),
('python', 'runtime', 100, 300, 1024, 2048, 'General-purpose programming language', '["django", "flask", "fastapi", "gunicorn", "uvicorn", "celery"]', 0, 0),
('remix', 'runtime', 150, 400, 512, 1024, 'React full-stack framework', '[]', 0, 0),
('ruby', 'runtime', 80, 200, 1024, 2048, 'Dynamic programming language', '["rails", "ruby-on-rails", "sinatra", "puma", "unicorn"]', 0, 0),
('rust', 'runtime', 400, 1000, 256, 512, 'Systems programming language', '["actix", "actix-web", "rocket", "axum"]', 0, 0),
('scala', 'runtime', 40, 100, 2048, 4096, 'Functional JVM language', '["akka", "play"]', 1, 0),
('spring-boot', 'runtime', 30, 100, 512, 2048, 'Spring Boot needs 512MB-2GB per instance', '["spring", "springboot"]', 1, 0),
('svelte', 'runtime', 200, 500, 256, 512, 'Svelte SSR', '[]', 0, 0),
('sveltekit', 'runtime', 200, 500, 256, 1024, 'Svelte SSR framework, efficient', '[]', 0, 0),

-- ============================================================================
-- SECURITY (5)
-- ============================================================================
('authelia', 'security', 100, 300, 256, 512, 'Authentication server', '[]', 0, 0),
('authentik', 'security', 30, 100, 1024, 2048, 'Identity provider', '[]', 0, 0),
('crowdsec', 'security', 100, 500, 512, 1024, 'Collaborative IPS', '[]', 0, 0),
('fail2ban', 'security', 500, 2000, 128, 256, 'Intrusion prevention', '[]', 0, 0),
('keycloak', 'security', 20, 50, 2048, 4096, 'Identity and access management', '[]', 1, 0),

-- ============================================================================
-- SELFHOSTED (17)
-- ============================================================================
('audiobookshelf', 'selfhosted', 50, 150, 512, 1024, 'Audiobook and podcast server', '[]', 0, 0),
('bookstack', 'selfhosted', 50, 150, 512, 1024, 'Documentation wiki', '[]', 0, 0),
('calibre-web', 'selfhosted', 50, 150, 512, 1024, 'E-book library', '["calibre"]', 0, 0),
('excalidraw', 'selfhosted', 100, 300, 256, 512, 'Whiteboard collaboration', '[]', 0, 0),
('freshrss', 'selfhosted', 100, 300, 256, 512, 'RSS reader', '[]', 0, 0),
('hedgedoc', 'selfhosted', 50, 150, 512, 1024, 'Collaborative markdown', '["codimd"]', 0, 0),
('immich', 'selfhosted', 10, 30, 4096, 8192, 'Self-hosted Google Photos alternative', '[]', 1, 1),
('linkding', 'selfhosted', 200, 500, 128, 256, 'Bookmark manager', '[]', 0, 0),
('mealie', 'selfhosted', 100, 300, 256, 512, 'Recipe manager', '[]', 0, 0),
('nextcloud', 'selfhosted', 30, 100, 1024, 4096, 'Self-hosted cloud storage', '[]', 1, 0),
('outline', 'selfhosted', 50, 150, 1024, 2048, 'Knowledge base', '[]', 0, 0),
('paperless', 'selfhosted', 20, 50, 2048, 4096, 'Document management system', '["paperless-ngx"]', 1, 0),
('photoprism', 'selfhosted', 10, 30, 4096, 8192, 'AI-powered photo management', '[]', 1, 1),
('seafile', 'selfhosted', 50, 150, 1024, 2048, 'File sync and share', '[]', 0, 0),
('vaultwarden', 'selfhosted', 100, 500, 256, 512, 'Bitwarden compatible password manager', '["bitwarden"]', 0, 0),
('wallabag', 'selfhosted', 100, 300, 256, 512, 'Read-it-later service', '[]', 0, 0),
('wiki-js', 'selfhosted', 50, 150, 512, 1024, 'Modern wiki', '["wikijs"]', 0, 0),

-- ============================================================================
-- STATIC (1)
-- ============================================================================
('static', 'static', 2000, 5000, 128, 256, 'Static file serving', '["jamstack", "hugo", "jekyll", "gatsby", "nextjs-static", "astro"]', 0, 0),

-- ============================================================================
-- WEB_SERVER (8)
-- ============================================================================
('apache', 'web_server', 200, 500, 512, 2048, 'Traditional web server with mod_php support', '["httpd", "apache2"]', 0, 0),
('caddy', 'web_server', 800, 1500, 256, 512, 'Modern web server with automatic HTTPS', '["caddy2"]', 0, 0),
('envoy', 'web_server', 800, 2000, 256, 1024, 'Cloud-native proxy', '[]', 0, 0),
('haproxy', 'web_server', 2000, 5000, 256, 1024, 'High-performance TCP/HTTP load balancer', '[]', 0, 0),
('kong', 'web_server', 500, 1500, 512, 2048, 'API Gateway', '[]', 0, 0),
('nginx', 'web_server', 1000, 2000, 512, 1024, 'High-performance reverse proxy and web server', '["nginx-plus", "openresty"]', 0, 0),
('nginx-proxy-manager', 'web_server', 300, 1000, 256, 512, 'Reverse proxy with UI', '["npm"]', 0, 0),
('traefik', 'web_server', 500, 1000, 256, 512, 'Cloud-native reverse proxy and load balancer', '["traefik2"]', 0, 0);
