all repos — red-anatomia @ main

red-anatomia

src/knowledge/tecnologias.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
export interface Verbete {
  significado: string;
  sinonimos?: string[];
  aprenderEmOrdem?: string[];
}

export const TECNOLOGIAS: Record<string, Verbete> = {
  WordPress: {
    significado:
      'CMS (sistema de gestão de conteúdo) executado no servidor. O tema controla grande parte da apresentação; plugins adicionam formulários, SEO, cache e outras funções.',
    sinonimos: ['wp', 'wordpress'],
    aprenderEmOrdem: [
      'HTML e CSS',
      'PHP básico',
      'como funciona um CMS',
      'temas do WordPress',
      'plugins e hooks',
      'banco de dados MySQL',
    ],
  },
  WooCommerce: {
    significado:
      'Plugin de e-commerce para WordPress. Adiciona carrinho, produtos, checkout e pagamentos a um site WordPress.',
    aprenderEmOrdem: ['WordPress', 'modelagem de produtos', 'checkout e pagamentos', 'gestão de pedidos'],
  },
  PHP: {
    significado:
      'Linguagem de programação executada no servidor, muito comum em CMSs. Gera o HTML antes de enviá-lo ao navegador.',
    sinonimos: ['php'],
    aprenderEmOrdem: ['lógica de programação', 'sintaxe PHP', 'requisição/resposta HTTP', 'acesso a banco de dados'],
  },
  MySQL: {
    significado:
      'Banco de dados relacional onde o site guarda conteúdo, usuários e configurações. Normalmente fica atrás do servidor de aplicação.',
    aprenderEmOrdem: ['modelo relacional', 'SQL básico', 'consultas e índices'],
  },
  'Next.js': {
    significado:
      'Framework baseado em React que renderiza páginas no servidor e/ou gera páginas estáticas, com roteamento e otimizações prontas.',
    sinonimos: ['nextjs', 'next'],
    aprenderEmOrdem: [
      'HTML semântico',
      'JavaScript moderno',
      'componentes React',
      'roteamento',
      'renderização no servidor (SSR) e estática (SSG)',
      'chamadas a APIs',
      'implantação em plataforma serverless',
    ],
  },
  React: {
    significado:
      'Biblioteca de interfaces que monta a tela a partir de componentes reutilizáveis, atualizando o DOM conforme o estado muda.',
    sinonimos: ['react', 'reactjs'],
    aprenderEmOrdem: ['HTML e CSS', 'JavaScript moderno', 'componentes e props', 'estado e efeitos', 'hooks'],
  },
  'Vue.js': {
    significado:
      'Framework de interfaces progressivo. Como o React, monta a tela por componentes reativos ao estado.',
    sinonimos: ['vue', 'vuejs'],
    aprenderEmOrdem: ['HTML e CSS', 'JavaScript moderno', 'componentes Vue', 'reatividade', 'roteamento'],
  },
  'Nuxt.js': {
    significado: 'Framework sobre Vue.js com renderização no servidor, roteamento e estrutura de projeto prontos.',
    sinonimos: ['nuxt'],
    aprenderEmOrdem: ['Vue.js', 'roteamento', 'renderização no servidor', 'implantação'],
  },
  Angular: {
    significado:
      'Framework completo de interfaces mantido pelo Google, com estrutura opinativa, injeção de dependências e TypeScript.',
    aprenderEmOrdem: ['TypeScript', 'componentes', 'módulos e serviços', 'injeção de dependências', 'roteamento'],
  },
  Svelte: {
    significado:
      'Framework de interfaces que compila os componentes em JavaScript enxuto na etapa de build, sem framework em runtime.',
    aprenderEmOrdem: ['HTML e CSS', 'JavaScript moderno', 'componentes Svelte', 'reatividade', 'stores'],
  },
  Gatsby: {
    significado: 'Gerador de site estático baseado em React, focado em performance e conteúdo pré-renderizado.',
    aprenderEmOrdem: ['React', 'GraphQL', 'geração estática', 'implantação'],
  },
  'Tailwind CSS': {
    significado:
      'Sistema de classes utilitárias de CSS. Em vez de escrever CSS próprio, você compõe estilos direto no HTML com classes pequenas.',
    sinonimos: ['tailwind', 'tailwindcss'],
    aprenderEmOrdem: ['CSS (box model, flexbox, grid)', 'classes utilitárias', 'responsividade', 'customização de tema'],
  },
  Bootstrap: {
    significado: 'Framework CSS com componentes e grid prontos para montar layouts responsivos rapidamente.',
    aprenderEmOrdem: ['CSS básico', 'sistema de grid', 'componentes', 'customização'],
  },
  jQuery: {
    significado:
      'Biblioteca JavaScript clássica que simplifica manipular o DOM e fazer requisições. Muito comum em sites mais antigos.',
    aprenderEmOrdem: ['JavaScript básico', 'seleção e manipulação do DOM', 'eventos', 'AJAX'],
  },
  Cloudflare: {
    significado:
      'Camada de DNS, CDN e proteção que fica na frente do site: acelera a entrega, protege contra ataques e esconde o servidor de origem.',
    sinonimos: ['cloudflare'],
    aprenderEmOrdem: ['DNS', 'como funciona uma CDN', 'proxy reverso', 'cache de borda'],
  },
  Vercel: {
    significado:
      'Plataforma de hospedagem e execução serverless, muito usada com Next.js. Cuida de build, CDN e funções sob demanda.',
    aprenderEmOrdem: ['git e deploy contínuo', 'serverless', 'CDN', 'variáveis de ambiente'],
  },
  Netlify: {
    significado: 'Plataforma de hospedagem para sites estáticos e funções serverless, com deploy contínuo a partir do git.',
    aprenderEmOrdem: ['git e deploy contínuo', 'sites estáticos', 'funções serverless'],
  },
  Nginx: {
    significado:
      'Servidor web e proxy reverso. Entrega arquivos, encaminha requisições para a aplicação e faz cache e balanceamento.',
    aprenderEmOrdem: ['HTTP', 'servidor web vs. aplicação', 'proxy reverso', 'configuração do Nginx'],
  },
  Apache: {
    significado: 'Servidor web tradicional que entrega páginas e encaminha requisições para a aplicação (ex.: PHP).',
    aprenderEmOrdem: ['HTTP', 'servidor web', 'virtual hosts', '.htaccess'],
  },
  'Google Analytics': {
    significado: 'Ferramenta de analytics que mede visitas e comportamento dos usuários. Roda no navegador via script.',
    aprenderEmOrdem: ['como sites medem tráfego', 'eventos', 'privacidade e consentimento'],
  },
  'Google Tag Manager': {
    significado: 'Gerenciador de tags que injeta scripts de marketing/analytics sem alterar o código do site.',
    aprenderEmOrdem: ['analytics', 'tags e gatilhos', 'camada de dados (dataLayer)'],
  },
  Shopify: {
    significado: 'Plataforma de e-commerce hospedada (SaaS). Cuida de loja, produtos, checkout e pagamentos.',
    aprenderEmOrdem: ['conceitos de e-commerce', 'temas Liquid', 'apps', 'checkout'],
  },
  Stripe: {
    significado: 'Processador de pagamentos. O script no navegador coleta os dados do cartão com segurança e cobra via API.',
    aprenderEmOrdem: ['HTTP e APIs', 'tokenização de cartão', 'webhooks', 'segurança de pagamentos'],
  },
  'Node.js': {
    significado: 'Runtime que executa JavaScript no servidor. Base de muitos frameworks backend e ferramentas de build.',
    aprenderEmOrdem: ['JavaScript', 'módulos e npm', 'requisição/resposta HTTP', 'assíncrono e eventos'],
  },
};

export function significadoGenerico(categorias: string[]): string {
  const c = categorias[0] ?? '';
  const mapa: Record<string, string> = {
    CMS: 'Sistema de gestão de conteúdo: organiza páginas e conteúdo, normalmente no servidor.',
    Ecommerce: 'Plataforma de comércio eletrônico: cuida de produtos, carrinho e checkout.',
    Analytics: 'Ferramenta de analytics: mede visitas e comportamento dos usuários.',
    'JavaScript frameworks': 'Framework de interface: organiza a tela em componentes reativos.',
    'JavaScript libraries': 'Biblioteca JavaScript: adiciona funções prontas ao frontend.',
    'Web frameworks': 'Framework web: estrutura o backend/frontend da aplicação.',
    'Web servers': 'Servidor web: entrega páginas e encaminha requisições.',
    CDN: 'Rede de distribuição de conteúdo: acelera a entrega e protege o site.',
    'UI frameworks': 'Framework de UI/CSS: fornece estilos e componentes prontos.',
    'Static site generator': 'Gerador de site estático: pré-renderiza páginas na etapa de build.',
    'Payment processors': 'Processador de pagamentos: cobra cartões/pix com segurança.',
    Fonts: 'Serviço de fontes: fornece tipografia ao site.',
    Security: 'Camada de segurança: protege o site contra abusos e ataques.',
    PaaS: 'Plataforma de hospedagem/execução da aplicação.',
    'Live chat': 'Widget de atendimento/chat ao vivo.',
    'Programming languages': 'Linguagem de programação usada no servidor.',
    Databases: 'Banco de dados onde o site guarda suas informações.',
  };
  return mapa[c] ?? 'Tecnologia identificada no site.';
}

export function acharVerbete(consulta: string): { nome: string; verbete: Verbete } | undefined {
  const alvo = consulta.trim().toLowerCase();
  for (const [nome, verbete] of Object.entries(TECNOLOGIAS)) {
    if (nome.toLowerCase() === alvo) return { nome, verbete };
    if (verbete.sinonimos?.some((s) => s.toLowerCase() === alvo)) return { nome, verbete };
  }
  for (const [nome, verbete] of Object.entries(TECNOLOGIAS)) {
    if (nome.toLowerCase().includes(alvo)) return { nome, verbete };
  }
  return undefined;
}