import type { Metadata } from "next"; import { compactHero, heroWithMediaGrid, } from "@/app/cases/_components/hero-styles"; import { getMosaicPosters, PosterMosaic, } from "@/app/cases/_components/PosterMosaic"; import { Breadcrumb } from "@/app/components/Breadcrumb"; import { pageTop, primaryButton, secondaryButtonDark, } from "@/app/components/button-styles"; import { Faq } from "@/app/components/Faq"; import HoverPrefetchLink from "@/app/components/HoverPrefetchLink"; import WhatsAppLink from "@/app/components/WhatsAppLink"; import { safeJsonLd } from "@/lib/jsonld"; import { buildBreadcrumbList, buildPageSocialMetadata } from "@/lib/seo"; import { buttonLabels, clientCasesForListing, serviceHubLinks, serviceOffers, siteUrl, } from "@/lib/site-content"; import { SERVICES_SUBJECT } from "@/lib/whatsapp"; import { ServiceOfferCards } from "./_components/ServiceOfferCards"; const pageUrl = `${siteUrl}/servicos`; const pageTitle = "Sites, sistemas e aplicativos sob medida"; const pageDescription = "Sites, sistemas web e aplicativos sob medida para apresentar seu negócio e organizar a operação. Garuva e Joinville (SC), remoto em todo o Brasil."; /** Cliente que não entra no mosaico do topo: a lista de /cases abre com a SEV (ordem da vitrine), mas o hub mostra os outros três. */ const MOSAIC_EXCLUDED_ID = "sev-modaintima"; /** Páginas que as três ofertas já abrem; os demais serviços ficam na lista "Outros serviços". */ const offerHrefs = new Set(serviceOffers.map(({ href }) => href)); const otherServices = serviceHubLinks.filter( ({ href }) => !offerHrefs.has(href), ); const hubFaq = [ { question: "Quanto custa e quanto tempo leva?", answer: "Depende das funcionalidades, conteúdo e integrações. O valor e o prazo são definidos depois de entender os requisitos, antes de iniciar o desenvolvimento.", }, { question: "Preciso estar em Joinville ou em Garuva?", answer: "Não. O atendimento é remoto, com conversas, demonstrações e revisões on-line para projetos em todo o Brasil.", }, { question: "E se eu já tiver um site ou sistema?", answer: "Avalio a base atual para propor melhorias, correções ou integrações. Recomeçar do zero não é uma condição para trabalhar comigo.", }, ]; export const metadata: Metadata = { title: pageTitle, description: pageDescription, ...buildPageSocialMetadata({ url: pageUrl, title: pageTitle, description: pageDescription, type: "website", }), }; export default function ServicesIndexPage() { // três pôsteres dos clientes na coluna ao lado do título, que ficaria vazia; a SEV fica de fora (o hub não abre com ela) // e nenhum cliente se repete mais abaixo, onde as ofertas citam os cases só por link const posters = getMosaicPosters( clientCasesForListing .map(({ id }) => id) .filter((id) => id !== MOSAIC_EXCLUDED_ID), ); const hasMosaic = posters.length > 0; const jsonLd = { "@context": "https://schema.org", "@graph": [ { "@type": "CollectionPage", "@id": `${pageUrl}#page`, name: pageTitle, url: pageUrl, description: pageDescription, }, { "@type": "ItemList", itemListElement: serviceHubLinks.map((service, index) => ({ "@type": "ListItem", position: index + 1, url: `${siteUrl}${service.href}`, name: service.label, })), }, buildBreadcrumbList(pageUrl, [ ["Início", siteUrl], ["Serviços", pageUrl], ] as const), ], }; return (

Sites, sistemas e aplicativos sob medida.

Apresente seu negócio, organize a operação ou conecte ferramentas que hoje dão trabalho. Desenvolvo a solução a partir do que você precisa resolver, não de uma lista de tecnologias.

{buttonLabels.contact} {buttonLabels.allCases}

Sou Evandro, desenvolvedor de software, e a conversa é comigo.

Garuva e Joinville (SC) · atendimento remoto em todo o Brasil

Três jeitos de começar.

Não precisa chegar com um projeto técnico pronto. Escolha o que mais se parece com o seu caso; começamos pela sua rotina e pelo que precisa mudar.

Outros serviços

Consultoria em Next.js, aplicativos desktop, integração de equipamentos e diagnóstico de arquitetura. Cada página explica o que posso fazer por você.

    {otherServices.map((service) => (
  • {service.label}

    {service.description}

  • ))}

Como saímos da conversa para a entrega.

  1. Entender o problema. Conversamos sobre o negócio, quem vai usar e o que já existe.
  2. Combinar o escopo. Definimos prioridades, plataformas, responsabilidades, orçamento e prazo na proposta.
  3. Construir e revisar. Você acompanha as etapas. Validamos a entrega e combinamos publicação, suporte e evolução.

Conte o que você quer resolver.

Pode ser uma ideia nova, uma rotina manual ou um sistema que precisa melhorar. Me conte pelo WhatsApp; não precisa preencher um formulário para começar.

{buttonLabels.contact}
); }