export const siteUrl = "https://evandro.dev.br"; export const siteName = "Evandro.dev.br"; export const intentCtas = { hiring: { label: "Avaliar perfil para contratação", href: "/curriculo", }, consulting: { label: "Solicitar consultoria técnica", href: "/#contact", }, } as const; export type CtaIntent = keyof typeof intentCtas; export const regionCities = [ "Garuva", "Joinville", "São Francisco do Sul", "Itapoá", "Balneário Barra do Sul", "Barra Velha", "Jaraguá do Sul", "Curitiba", ]; export interface EvidenceSource { id: string; label: string; url: string; } export interface SourcedStatement { text: string; sourceIds: string[]; } export interface CaseStudyDetail { answer: SourcedStatement; challenge: SourcedStatement; implementation: SourcedStatement[]; boundaries: SourcedStatement[]; sources: EvidenceSource[]; } export interface ServicePageContent { slug: string; navLabel: string; eyebrow: string; seoTitle: string; metaDescription: string; headline: string; intro: string; answer: string; audience: string[]; outcomes: string[]; process: string[]; stack: string[]; ctaIntent: "consulting"; ctaLabel: string; ctaHref: string; relatedCaseIds: string[]; faq?: { question: string; answer: string }[]; } export interface CaseStudyContent { id: string; title: string; subtitle: string; summary: string; impact: string; stack: string[]; demoUrl?: string | null; githubUrl?: string | null; detail?: CaseStudyDetail; } export const servicePages: ServicePageContent[] = [ { slug: "criacao-de-sites", navLabel: "Criação de Sites", eyebrow: "Presença digital", seoTitle: "Criação de Sites e Sistemas Web com Next.js", metaDescription: "Criação de sites institucionais e sistemas web responsivos, com acessibilidade, performance e SEO técnico considerados desde a implementação.", headline: "Criação de sites institucionais e sistemas web com Next.js.", answer: "Crio sites institucionais e sistemas web em Next.js, com escopo definido por objetivos, páginas, integrações e requisitos de acessibilidade, performance e SEO técnico. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Desenvolvo sites e sistemas web responsivos com estrutura técnica para indexação e evolução do produto, sempre dentro do escopo acordado para conteúdo e integrações.", audience: [ "Empresas e profissionais que ainda não têm site ou precisam substituir uma experiência lenta e desatualizada.", "Negócios que precisam organizar conteúdo e fundamentos técnicos para busca orgânica sem criar páginas locais artificiais.", "Marcas que precisam de um site institucional rápido, com boa performance e pronto para escalar para um sistema web completo.", ], outcomes: [ "Site institucional rápido, responsivo e com boa nota em Core Web Vitals.", "Estrutura de SEO técnico (title, metadata, dados estruturados e sitemap) desde o lançamento.", "Presença digital pronta para captar clientes que pesquisam por serviços na sua cidade.", "Base de código organizada, fácil de evoluir para loja, sistema ou painel administrativo.", ], process: [ "Levantamento do objetivo do site, público local e páginas necessárias.", "Definição de estrutura, conteúdo e palavras-chave locais relevantes.", "Implementação em Next.js com foco em performance, acessibilidade e SEO.", "Publicação, configuração de domínio e orientação sobre indexação no Google.", ], stack: ["Next.js", "TypeScript", "Tailwind CSS", "SEO técnico", "Vercel"], ctaIntent: "consulting", ctaLabel: "Conversar sobre o projeto", ctaHref: "/#contact", relatedCaseIds: ["sc-plus", "nutriscan"], faq: [ { question: "Quanto custa um site profissional?", answer: "O custo de um site profissional depende do escopo: número de páginas, funcionalidades, integrações e exigências de SEO técnico e performance. Um site institucional enxuto custa menos do que um sistema web completo. Eu prefiro definir o orçamento depois de entender o objetivo do projeto, em uma conversa inicial sem compromisso.", }, { question: "Site sob medida ou WordPress: qual escolher?", answer: "Escolha WordPress quando o conteúdo muda toda semana e alguém da equipe precisa publicar sem ajuda técnica; escolha um site sob medida quando performance, SEO técnico e evolução futura pesam mais. Sites feitos sob medida em Next.js carregam mais rápido, têm menos superfície de manutenção e escalam para sistema web sem migração. Para muitos negócios locais, o sob medida compensa pela velocidade e pela longevidade.", }, { question: "Você faz manutenção de site depois do lançamento?", answer: "Sim. Além do lançamento, eu estruturo projetos pensando na manutenção do site: atualizações de dependências, ajustes de conteúdo, monitoramento de performance e evolução incremental de funcionalidades. Um site profissional não termina na publicação; ele precisa continuar rápido, seguro e bem posicionado. Por isso a entrega inclui orientação sobre indexação no Google e uma base de código organizada, fácil de evoluir.", }, { question: "Como funciona o atendimento local e remoto?", answer: "Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota. O trabalho segue conversa inicial, levantamento de escopo e entregas acompanhadas de perto; qualquer estratégia local é definida a partir da atuação real de cada negócio.", }, ], }, { slug: "engenharia-de-software", navLabel: "Engenharia de Software", eyebrow: "Serviço principal", seoTitle: "Engenharia de Software para Produtos e Sistemas Críticos", metaDescription: "Engenharia de software para evolução de produtos, integrações complexas e sistemas críticos. Entrega ponta a ponta com foco em arquitetura clara, estabilidade e velocidade de execução.", headline: "Engenharia de software para evoluir produto sem aumentar o caos técnico.", answer: "Atuo no diagnóstico, arquitetura, implementação e sustentação de produtos e sistemas, com entregáveis e limites definidos pelo risco técnico e pelo recorte acordado. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Atuo em discovery, arquitetura, implementação e sustentação de software para equipes que precisam entregar com previsibilidade, sem sacrificar clareza técnica nem operação.", audience: [ "Times que já tem produto em operação e precisam voltar a ganhar velocidade.", "Empresas que sofrem com integrações, retrabalho e backlog técnico acumulado.", "Operações em que confiabilidade e continuidade pesam mais do que velocidade teatral.", ], outcomes: [ "Arquitetura mais legível para manter e escalar.", "Entrega incremental com menos retrabalho entre produto e engenharia.", "Integrações mais robustas entre sistemas, APIs e fluxos internos.", "Base técnica preparada para crescer sem depender de improviso constante.", ], process: [ "Diagnóstico do contexto técnico, do risco e do gargalo principal.", "Definição do recorte de entrega com prioridades e trade-offs claros.", "Implementação com rastreabilidade, code review e critério de produção.", "Handoff ou continuidade com documentação e próximo ciclo recomendado.", ], stack: ["Next.js", "TypeScript", "Node.js", "PostgreSQL", "APIs REST"], ctaIntent: "consulting", ctaLabel: "Conversar sobre o projeto", ctaHref: "/#contact", relatedCaseIds: ["nutriscan", "reddit-explorer", "sc-plus"], faq: [ { question: "Como contratar um desenvolvedor para integração de sistemas?", answer: "Procure um desenvolvedor que comece pelo diagnóstico: entender os dois sistemas, os dados envolvidos e o impacto de falha antes de escrever código. Peça clareza sobre contratos de API, tratamento de erros e observabilidade, não apenas prazo. Na integração de sistemas, o critério principal é reduzir risco operacional; um profissional que explica trade-offs com honestidade costuma entregar com mais previsibilidade.", }, { question: "Quanto custa desenvolver um sistema sob medida?", answer: "O investimento em um sistema sob medida acompanha a complexidade: regras de negócio, integrações, volume de usuários e requisitos de confiabilidade. Antes de qualquer proposta, eu faço um diagnóstico do contexto para dimensionar o recorte certo e evitar pagar por complexidade desnecessária. Assim o orçamento reflete o problema real, e não uma estimativa genérica por hora ou por tela.", }, { question: "Você trabalha com sistemas legados?", answer: "Sim. Parte do trabalho de engenharia de software é justamente evoluir sistemas legados sem parar a operação: mapear acoplamentos, estabilizar pontos críticos e migrar aos poucos, com testes e rastreabilidade. Nem todo legado precisa ser reescrito; muitas vezes a decisão certa é isolar o que funciona e modernizar o que trava a entrega. O diagnóstico define esse recorte antes de qualquer refatoração.", }, { question: "Como funciona o início do trabalho com você?", answer: "Tudo começa com uma conversa objetiva sobre o contexto: o produto, o gargalo e o risco. Depois disso eu proponho um recorte de entrega com prioridades e trade-offs claros, e a implementação segue com code review e critério de produção. Você acompanha o progresso em ciclos curtos, com documentação e handoff estruturado ao final de cada etapa.", }, ], }, { slug: "consultoria-nextjs", navLabel: "Consultoria Next.js", eyebrow: "Stack especializada", seoTitle: "Consultoria Next.js para Produtos, SEO e Performance", metaDescription: "Consultoria Next.js para App Router, SEO técnico, performance, arquitetura e evolução de produto. Ideal para projetos que precisam escalar sem perder clareza e Core Web Vitals.", headline: "Consultoria Next.js para produto, performance e SEO técnico sem gambiarra.", answer: "A consultoria Next.js cobre App Router, separação entre server e client, metadata, performance e arquitetura, com diagnóstico e implementação limitados ao escopo combinado. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Ajudo equipes a usar Next.js com mais critério arquitetural, melhor separação entre server e client, e foco real em performance, indexação e experiência de produto.", audience: [ "Produtos em Next.js que perderam clareza com o crescimento da base.", "Sites e plataformas que dependem de SEO técnico e performance para converter.", "Times que precisam migrar, estabilizar ou revisar arquitetura App Router.", ], outcomes: [ "Estrutura mais consistente para App Router, Server Components e dados.", "Melhoras práticas em title, metadata, schema, semântica e links internos.", "Redução de gargalos em renderização, bundle e fetch.", "Base mais pronta para crescer sem regressão de SEO ou UX.", ], process: [ "Auditoria de arquitetura, rotas, metadata e performance.", "Priorização das correções de maior impacto comercial e técnico.", "Implementação ou acompanhamento do time interno nas partes críticas.", "Validação final com build, semântica e consistência entre páginas.", ], stack: ["Next.js", "React", "TypeScript", "Tailwind CSS", "SEO técnico"], ctaIntent: "consulting", ctaLabel: "Solicitar consultoria", ctaHref: "/#contact", relatedCaseIds: ["nutriscan", "twins-lab", "sc-plus"], faq: [ { question: "Next.js vale a pena para site institucional?", answer: "Vale, principalmente quando o site institucional precisa competir por busca orgânica. Next.js entrega renderização no servidor, Core Web Vitals bons e controle fino de metadata e dados estruturados, fatores que pesam no ranking. Para um site simples demais, pode ser mais stack do que o necessário; para quem quer performance, SEO técnico e caminho para evoluir a plataforma, é uma escolha sólida.", }, { question: "Quando faz sentido contratar uma consultoria de Next.js?", answer: "Faz sentido quando o projeto cresceu e o time perdeu clareza: rotas confusas, mistura excessiva entre client e server, queda de performance ou regressão de SEO. Uma consultoria Next.js audita arquitetura e metadata, prioriza as correções de maior impacto e implementa junto com o time interno nas partes críticas. O retorno aparece em build mais previsível, indexação estável e menos retrabalho.", }, { question: "Quanto custa uma consultoria de Next.js?", answer: "Depende do formato de trabalho: uma auditoria pontual de arquitetura e performance tem peso diferente de um acompanhamento contínuo ou da implementação completa das correções. O que define o investimento é o tamanho da base, o número de rotas críticas e a urgência dos gargalos. Depois de uma leitura inicial do projeto, eu consigo propor um escopo com expectativa clara de esforço.", }, { question: "Como funciona a consultoria remota?", answer: "Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota. A consultoria à distância combina auditoria documentada, sessões de alinhamento com o time e implementação guiada nas partes críticas do escopo.", }, ], }, { slug: "tauri-rust", navLabel: "Tauri + Rust", eyebrow: "Desktop e performance", seoTitle: "Desenvolvimento Tauri e Rust para Apps Desktop", metaDescription: "Desenvolvimento com Tauri e Rust para apps desktop mais leves, seguros e eficientes. Consultoria técnica para produtos que precisam de performance, integração local e distribuição confiável.", headline: "Tauri e Rust para apps desktop mais leves, seguros e prontos para operar.", answer: "Desenvolvo e avalio aplicativos desktop com Tauri, Rust e interface web quando integração local, distribuição e controle de recursos justificam essa arquitetura. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Uso Tauri e Rust quando o produto precisa de executável desktop com footprint menor, melhor controle do ambiente local e mais previsibilidade do que stacks mais pesadas.", audience: [ "Produtos desktop que precisam integrar recursos do sistema operacional.", "Ferramentas internas com demanda por distribuição leve e manutenção simples.", "Times avaliando migração de stack desktop ou construindo um MVP técnico robusto.", ], outcomes: [ "Aplicações desktop com melhor eficiência de recursos.", "Fluxos locais e integrações nativas com critério técnico mais alto.", "Arquitetura preparada para distribuição, atualização e manutenção.", "Menos atrito entre interface moderna e motor de execução confiável.", ], process: [ "Definição da necessidade real de desktop e do papel de Rust no produto.", "Desenho da arquitetura entre frontend, camada nativa e distribuição.", "Implementação dos fluxos críticos com foco em confiabilidade e ergonomia.", "Empacotamento, validação e estratégia de evolução do aplicativo.", ], stack: [ "Tauri", "Rust", "TypeScript", "Desktop apps", "System integration", ], ctaIntent: "consulting", ctaLabel: "Conversar sobre o projeto", ctaHref: "/#contact", relatedCaseIds: ["gcc-installer"], faq: [ { question: "Vale a pena criar app desktop com Tauri e Rust?", answer: "Vale quando o aplicativo precisa ser leve, seguro e próximo do sistema operacional. Apps desktop em Tauri usam o WebView do próprio sistema em vez de embutir um navegador inteiro, o que reduz bastante o tamanho do executável e o consumo de memória. Rust entra onde há processamento local crítico. Se o produto é só um formulário em janela, talvez uma web app resolva.", }, { question: "Tauri ou Electron: qual escolher?", answer: "Prefira Tauri quando distribuição leve, segurança e consumo de recursos importam: o executável final é muito menor porque reaproveita o WebView do sistema. Electron ainda faz sentido quando o time já domina Node.js e precisa de ecossistema maduro. Em projetos novos que exigem integração nativa e desempenho, eu costumo recomendar Tauri com lógica crítica em Rust e interface web moderna.", }, { question: "Rust é difícil de manter para times pequenos?", answer: "Rust tem curva de aprendizado real, mas a manutenção tende a ficar mais fácil no longo prazo: o compilador elimina categorias inteiras de bugs antes da produção. Para times pequenos, a estratégia é usar Rust apenas na camada que justifica o investimento, como integração com o sistema, performance e segurança, e manter a interface em TypeScript. Assim a complexidade fica onde traz retorno.", }, { question: "Como funciona o atendimento para aplicativos desktop?", answer: "Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota. O fluxo cobre arquitetura, definição do papel de Rust, implementação dos fluxos críticos e estratégia de distribuição e atualização do executável.", }, ], }, { slug: "integracao-hardware-software-iot", navLabel: "Hardware + Software + IoT", eyebrow: "Produtos conectados", seoTitle: "Integração Hardware + Software e IoT", metaDescription: "Integração hardware + software, IoT e fluxos conectados para produtos e operações críticas. Da coleta de dados ao painel, com APIs, telemetria e arquitetura de software confiável.", headline: "Integração hardware + software para produtos conectados que precisam operar de verdade.", answer: "Estruturo integrações entre dispositivos, backend, banco e interfaces, com contratos, tratamento de falhas e documentação definidos para o fluxo necessário. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Atuo na camada que costuma quebrar primeiro: a fronteira entre dispositivo, backend, painel e operação. Estruturo esses fluxos para que dados, comando e observabilidade funcionem como produto, não como remendo.", audience: [ "Empresas com dispositivos, sensores ou equipamentos conectados ao software.", "Operações que dependem de telemetria, dashboards e troca de dados em tempo real.", "Times que precisam ligar produto digital a processos físicos com confiabilidade.", ], outcomes: [ "Fluxos mais robustos entre dispositivo, API, banco e interface.", "Menos perda de contexto entre operação física e produto digital.", "Arquitetura com observabilidade e manutenção mais previsível.", "Base melhor para evoluir IA, automação ou analytics em cima dos dados.", ], process: [ "Mapeamento de sinal, eventos, integrações e pontos de falha.", "Definição de contratos entre hardware, backend e interfaces.", "Implementação do fluxo com testes e tratamento de exceções relevantes.", "Entrega com documentação de operação, limites e próximo passo.", ], stack: [ "IoT", "WebSockets", "APIs", "Dashboards", "Integração de sistemas", ], ctaIntent: "consulting", ctaLabel: "Conversar sobre o projeto", ctaHref: "/#contact", relatedCaseIds: ["twins-lab"], faq: [ { question: "Como integrar equipamentos e sistemas legados?", answer: "Comece mapeando o que o equipamento realmente expõe: portas seriais, sinais digitais, arquivos, protocolos industriais ou APIs antigas. A partir desse inventário, eu desenho uma camada de integração com contratos claros entre hardware, backend e interfaces, com tratamento de falha e observabilidade desde o primeiro dia. Sistemas legados raramente precisam ser substituídos; quase sempre precisam ser conectados com segurança.", }, { question: "O que é integração hardware e software na prática?", answer: "É fazer o dado físico virar informação útil: o sensor registra, o backend valida e armazena, o painel mostra e o comando volta para o equipamento quando necessário. Na prática, isso envolve telemetria, WebSockets ou filas para tempo real, contratos de API e tratamento dos casos em que o dispositivo cai. Quando essa fronteira é bem desenhada, a operação física e o produto digital falam a mesma língua.", }, { question: "Vale a pena investir em IoT na indústria?", answer: "Vale quando existe dado físico hoje desperdiçado: leitura manual, planilha isolada ou decisão por estimativa. Projetos de IoT podem transformar esse dado em telemetria e painéis, mas o investimento só compensa quando a integração é tratada como produto, com observabilidade e manutenção previstas.", }, { question: "Como funciona um projeto de integração com você?", answer: "O projeto começa com o mapeamento de sinal, eventos, integrações existentes e pontos de falha. Em seguida eu defino os contratos entre hardware, backend e interfaces, implemento o fluxo com testes e tratamento das exceções relevantes, e entrego com documentação de operação, limites conhecidos e próximo passo recomendado. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", }, ], }, { slug: "arquitetura-de-software", navLabel: "Arquitetura de Software", eyebrow: "Diagnóstico e decisão", seoTitle: "Arquitetura de Software e Consultoria Técnica", metaDescription: "Arquitetura de software para reduzir complexidade, destravar evolução e organizar integrações críticas. Consultoria técnica para produtos que precisam de direção antes de mais código.", headline: "Arquitetura de software para times que precisam de clareza antes de acelerar.", answer: "Realizo diagnóstico de arquitetura com leitura da base, fluxos e integrações, seguido por riscos, trade-offs e um plano de transição executável para o escopo analisado. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota.", intro: "Quando o problema não é falta de código, mas excesso de acoplamento, retrabalho e decisão mal distribuída, a arquitetura certa devolve velocidade, leitura e confiança ao time.", audience: [ "Produtos que cresceram rápido e perderam legibilidade técnica.", "Times travados entre refatorar tudo ou seguir acumulando dívida.", "Operações com muitas dependências, integrações ou regras sensíveis.", ], outcomes: [ "Mapa claro dos gargalos e do risco técnico real.", "Prioridades de arquitetura ligadas a impacto de negócio.", "Plano executável de refatoração, estabilização ou reestruturação.", "Mais qualidade de decisão entre produto, engenharia e operação.", ], process: [ "Leitura da base, fluxos, integrações e dores do time.", "Diagnóstico escrito com pontos de risco, oportunidades e trade-offs.", "Proposta de arquitetura alvo e plano de transição realista.", "Acompanhamento da execução ou handoff estruturado para o time interno.", ], stack: [ "Arquitetura de software", "APIs", "Performance", "Integrações", "Sistemas críticos", ], ctaIntent: "consulting", ctaLabel: "Solicitar diagnóstico", ctaHref: "/#contact", relatedCaseIds: ["nutriscan", "twins-lab", "reddit-explorer"], faq: [ { question: "Quando investir em arquitetura de software?", answer: "Invista quando o custo de mudança começou a crescer mais rápido que o valor entregue: toda feature demora, todo deploy assusta e a dívida técnica vira pauta constante. Arquitetura de software vale o investimento nesse ponto, porque organiza acoplamento, integrações e responsabilidades antes que o problema multiplique. Antes do primeiro produto validado, geralmente basta uma base simples e bem separada.", }, { question: "O que é dívida técnica e como resolver?", answer: "Dívida técnica é o acúmulo de decisões rápidas que hoje custam velocidade: código duplicado, acoplamento excessivo, falta de testes e integrações frágeis. Ela se resolve com diagnóstico antes de refatoração: mapear os gargalos reais, priorizar o que trava entrega e operação, e evoluir em incrementos seguros. Reescrever tudo raramente é a resposta; a maioria dos sistemas melhora com transição planejada.", }, { question: "Como funciona um diagnóstico de arquitetura?", answer: "Eu leio a base de código, os fluxos, as integrações e as dores do time, e devolvo um diagnóstico escrito com pontos de risco, oportunidades e trade-offs explícitos. A partir dele vem a proposta de arquitetura alvo e um plano de transição realista, priorizado por impacto de negócio. O formato funciona tanto para times internos quanto para fundadores técnicos conduzindo a própria evolução.", }, { question: "Como funciona a consultoria de arquitetura remota?", answer: "Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota. O diagnóstico e o acompanhamento funcionam à distância com leitura técnica, alinhamentos e handoff documentado para o time responsável.", }, ], }, ]; export const caseStudies: CaseStudyContent[] = [ { id: "nutriscan", title: "NutriScan", subtitle: "Consulta de produtos por nome e código de barras", summary: "Aplicação web para consultar produtos alimentícios por nome ou código de barras, combinando cache JSON com a API Open Food Facts.", impact: "Reduzir a dependência da API externa e manter um caminho explícito para buscas e consulta por código.", stack: ["Next.js", "TypeScript", "Cache JSON", "Open Food Facts"], demoUrl: "https://nutriscan.evandro.dev.br", githubUrl: "https://github.com/evandrodevbr/nutriscan", detail: { answer: { text: "Aplicação web para consultar produtos alimentícios por nome ou código de barras, combinando cache JSON com a API Open Food Facts.", sourceIds: ["nutri-search", "nutri-barcode", "nutri-wrapper"], }, challenge: { text: "Reduzir a dependência da API externa e manter um caminho explícito para buscas e consulta por código.", sourceIds: ["nutri-search", "nutri-barcode"], }, implementation: [ { text: "A busca consulta o cache primeiro, permite modo somente-cache e recorre ao Open Food Facts quando faltam resultados.", sourceIds: ["nutri-search"], }, { text: "A consulta por código remove caracteres não numéricos, aceita de 8 a 13 dígitos, consulta cache e usa a API externa como fallback.", sourceIds: ["nutri-barcode"], }, { text: "O wrapper cancela requisições após oito segundos e diferencia busca por nome de busca por código.", sourceIds: ["nutri-wrapper"], }, ], boundaries: [ { text: "A página não afirma PWA, MongoDB, histórico de usuários, disponibilidade, volume de produtos ou resultado de saúde, porque as fontes atuais não sustentam esse conjunto de forma consistente.", sourceIds: [ "nutri-search", "nutri-barcode", "nutri-wrapper", "nutri-package", "nutri-prisma", "nutri-readme", ], }, ], sources: [ { id: "nutri-search", label: "Rota de busca", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/app/api/search/route.ts", }, { id: "nutri-barcode", label: "Rota de consulta por código", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/app/api/products/%5Bbarcode%5D/route.ts", }, { id: "nutri-wrapper", label: "Wrapper Open Food Facts", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/lib/openFoodFactsApi.ts", }, { id: "nutri-package", label: "Manifesto do projeto", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/package.json", }, { id: "nutri-prisma", label: "Schema Prisma", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/prisma/schema.prisma", }, { id: "nutri-readme", label: "README do projeto", url: "https://github.com/evandrodevbr/nutriscan/blob/ef0e6d4eca1f8588bb6981c1cfa58e4b7db1302b/README.md", }, ], }, }, { id: "twins-lab", title: "Twins Lab", subtitle: "Protótipo de gêmeo digital industrial com SSE", summary: "Protótipo de gêmeo digital industrial com autenticação, simulador de reator, persistência MongoDB e streaming de eventos do servidor.", impact: "Expor estados simulados do reator a uma interface autenticada e manter histórico/status do simulador.", stack: ["Next.js", "TypeScript", "NextAuth", "MongoDB", "SSE"], githubUrl: "https://github.com/evandrodevbr/twins-lab", detail: { answer: { text: "Protótipo de gêmeo digital industrial com autenticação, simulador de reator, persistência MongoDB e streaming de eventos do servidor.", sourceIds: ["twins-package", "twins-stream", "twins-simulator"], }, challenge: { text: "Expor estados simulados do reator a uma interface autenticada e manter histórico/status do simulador.", sourceIds: ["twins-stream", "twins-simulator"], }, implementation: [ { text: "A rota exige sessão do NextAuth antes de abrir o stream.", sourceIds: ["twins-stream"], }, { text: "A resposta usa `text/event-stream`, envia estados/dados/erros em intervalos de dois segundos e limita a conexão a dez minutos.", sourceIds: ["twins-stream"], }, { text: "O simulador salva dados e estado no MongoDB e notifica clientes quando execução ou cenário mudam.", sourceIds: ["twins-simulator"], }, ], boundaries: [ { text: "O case não usa as alegações de economia, ROI, precisão, manutenção preditiva futura, equipamento real, WebSocket, OpenRouter ou atualização sub-segundo.", sourceIds: [ "twins-package", "twins-stream", "twins-simulator", "twins-readme", ], }, ], sources: [ { id: "twins-package", label: "Manifesto do projeto", url: "https://github.com/evandrodevbr/twins-lab/blob/f83f99a7417f16ece0cd7fe4832ba122e7152d0c/package.json", }, { id: "twins-stream", label: "Rota de streaming do reator", url: "https://github.com/evandrodevbr/twins-lab/blob/f83f99a7417f16ece0cd7fe4832ba122e7152d0c/app/api/reactor/stream/route.ts", }, { id: "twins-simulator", label: "Simulador do reator", url: "https://github.com/evandrodevbr/twins-lab/blob/f83f99a7417f16ece0cd7fe4832ba122e7152d0c/simulators/reactor/reactor-simulator.ts", }, { id: "twins-readme", label: "README do projeto", url: "https://github.com/evandrodevbr/twins-lab/blob/f83f99a7417f16ece0cd7fe4832ba122e7152d0c/README.md", }, ], }, }, { id: "reddit-explorer", title: "Reddit Posts Explorer", subtitle: "Aplicação orientada a dados com API, cache e busca", summary: "Projeto em Astro e MongoDB para explorar conteúdo com filtros, ordenação e cache, mantendo boa experiência em consultas frequentes.", impact: "Mostra capacidade de desenhar consumo de API, camada de persistência e experiência de busca sem sobrecarregar a aplicação.", stack: ["Astro.js", "MongoDB", "Mongoose", "TypeScript", "Reddit API"], githubUrl: "https://github.com/evandrodevbr/reddit-search", }, { id: "sc-plus", title: "SC Plus Aquicultura", subtitle: "Site institucional em Next.js com foco em performance e SEO", summary: "Landing page em Next.js 15 otimizada para Core Web Vitals, metadata e estrutura técnica de indexação.", impact: "Exemplo de projeto em que clareza de mensagem, velocidade e SEO técnico trabalham juntos.", stack: ["Next.js 15", "React 19", "Tailwind CSS 4", "TypeScript"], demoUrl: "https://scplus.evandro.dev.br", githubUrl: "https://github.com/evandrodevbr/scplus", }, { id: "gcc-installer", title: "MinGW GCC Installer", subtitle: "Ferramenta desktop para automação de ambiente de desenvolvimento", summary: "Aplicação em Python para simplificar setup local no Windows, com download assíncrono, checagem de compatibilidade e integração com PATH.", impact: "Mostra familiaridade com software desktop, integração com sistema operacional e automação de setup técnico.", stack: ["Python", "Tkinter", "Win32 API", "Threading", "7-Zip"], githubUrl: "https://github.com/evandrodevbr/gcc-installer", }, { id: "as-servicos", title: "AS Serviços", subtitle: "Site institucional com cena 3D procedural", summary: "Site institucional em Next.js 16 que representa quatro frentes de engenharia com uma cena Three.js gerada em código: uma casa wireframe e uma placa-mãe ligadas ao progresso da rolagem.", impact: "Representar engenharia física e software na mesma narrativa visual sem depender de um modelo 3D pronto.", stack: ["Next.js 16", "Three.js", "TypeScript"], demoUrl: "https://asservicos.com", githubUrl: "https://github.com/evandrodevbr/as-servicos", detail: { answer: { text: "Site institucional em Next.js 16 que representa quatro frentes de engenharia com uma cena Three.js gerada em código: uma casa wireframe e uma placa-mãe ligadas ao progresso da rolagem.", sourceIds: ["as-readme", "as-package", "as-engine"], }, challenge: { text: "Representar engenharia física e software na mesma narrativa visual sem depender de um modelo 3D pronto.", sourceIds: ["as-readme", "as-engine"], }, implementation: [ { text: "O motor monta casa, instalação elétrica e placa-mãe com geometrias e linhas do Three.js.", sourceIds: ["as-engine"], }, { text: "O canvas converte a rolagem em progresso de 0 a 1 e o entrega ao motor da cena.", sourceIds: ["as-canvas"], }, { text: "A qualidade pode cair para `static`, `low`, `medium` ou `high` conforme WebGL, reduced motion, economia de dados, conexão e capacidade do dispositivo.", sourceIds: ["as-engine"], }, ], boundaries: [ { text: "O case demonstra implementação e decisões técnicas; não atribui geração de leads, ranking ou ganho de performance.", sourceIds: [], }, ], sources: [ { id: "as-readme", label: "README do projeto", url: "https://github.com/evandrodevbr/as-servicos/blob/abeb9946a704139336942bfd41ad163ccfe1e685/README.md", }, { id: "as-package", label: "Manifesto do projeto", url: "https://github.com/evandrodevbr/as-servicos/blob/abeb9946a704139336942bfd41ad163ccfe1e685/package.json", }, { id: "as-engine", label: "Motor da cena Three.js", url: "https://github.com/evandrodevbr/as-servicos/blob/abeb9946a704139336942bfd41ad163ccfe1e685/lib/three/engine.ts", }, { id: "as-canvas", label: "Canvas e progresso da cena", url: "https://github.com/evandrodevbr/as-servicos/blob/abeb9946a704139336942bfd41ad163ccfe1e685/components/scene/scene-canvas.tsx", }, ], }, }, ]; export const serviceHubLinks = servicePages.map((service) => ({ href: `/servicos/${service.slug}`, label: service.navLabel, description: service.metaDescription, })); export function getServicePage(slug: string) { return servicePages.find((service) => service.slug === slug); } export function getRelatedCases(caseIds: string[]) { return caseStudies.filter((caseStudy) => caseIds.includes(caseStudy.id)); } export function getRelatedServices(caseId: string): ServicePageContent[] { return servicePages.filter(({ relatedCaseIds }) => relatedCaseIds.includes(caseId), ); }