feat(cases): cases de clientes, serviços ligados à prova e SEO por página

Cases da SEV Moda Íntima e da Lavação 047; case no formato cliente, problema, entrega, mídia e contato, com detalhes técnicos recolhidos; sem GitHub, ressalvas e fontes de commit. /cases separa clientes e Laboratório. Serviços mostram o case de cliente certo e o bloco de investimento e prazo só aparece preenchido. Metadata social própria por página, not-found com noindex, sitemap com /ia.
This commit is contained in:
Evandro Fonseca Junior committed 2026-10-14 03:31:57 -03:00
1 parent 3756905a1b
commit 6e1022b58c
44 files changed
+2691 -1424

No files matched your search

+67 -66
View File
@@ -4,9 +4,8 @@
"title": "Engenheiro da Computação e Desenvolvedor de Software",
"location": "Garuva, Santa Catarina, Brasil",
"email": "[email protected]",
"phone": "Disponivel pelo botao de WhatsApp",
"linkedin": "https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/",
"github": "https://github.com/evandrodevbr",
"phone": "Disponível pelo botão de WhatsApp",
"linkedin": "https://www.linkedin.com/in/evandrodevbr/",
"summary": "Engenheiro da Computação e desenvolvedor de software com 5 anos de experiência, especializado em soluções web modernas e inovadoras. Formado em Engenharia da Computação, com conhecimentos sólidos em computação em nuvem e inteligência artificial. Busco constantemente novos desafios onde possa aplicar minha paixão por tecnologia e resolver problemas de forma criativa."
},
"experiences": [
@@ -62,10 +61,11 @@
"projects": [
{
"id": "sev-modaintima",
"kind": "cliente",
"title": "SEV Moda Íntima",
"subtitle": "Catálogo Digital & E-commerce",
"description": "Plataforma de e-commerce completa desenvolvida com Next.js App Router, TypeScript, Prisma e Tailwind CSS. Inclui vitrine pública com experiência cinematográfica, sistema de pedidos via WhatsApp, área administrativa e busca inteligente com ranking de relevância.",
"longDescription": "Catálogo digital avançado com multi-filtros, busca inteligente com ranking de relevância e integração híbrida de geocoding. Inclui dark mode, animações fluidas com Framer Motion e área administrativa completa para produtos, estoque e pedidos.",
"subtitle": "Catálogo digital e loja virtual",
"description": "Loja virtual completa desenvolvida com Next.js App Router, TypeScript, Prisma e Tailwind CSS. Inclui vitrine pública com experiência cinematográfica, sistema de pedidos via WhatsApp, área administrativa e busca inteligente com ranking de relevância.",
"longDescription": "Catálogo digital avançado com multi-filtros, busca inteligente com ranking de relevância e integração híbrida de geocodificação. Inclui modo escuro, animações fluidas com Framer Motion e área administrativa completa para produtos, estoque e pedidos.",
"technologies": [
"Next.js 16",
"TypeScript",
@@ -82,12 +82,12 @@
"Painel Administrativo completo",
"Gestão de estoque por tamanho"
],
"category": "e-commerce",
"category": "loja virtual",
"level": "senior",
"status": "Em Produção",
"demoUrl": "https://sevmodaintima.com.br",
"githubUrl": null,
"badges": ["E-commerce", "Em Produção"],
"githubUrl": "",
"badges": ["Loja virtual", "Em Produção"],
"featured": true,
"metrics": {
"complexity": 5,
@@ -96,10 +96,11 @@
},
{
"id": "lavacao-047",
"kind": "cliente",
"title": "Lavação 047",
"subtitle": "Site e painel para lavação automotiva",
"description": "Site da Lavação 047, em Garuva-SC, com tabela de preços por porte do veículo, pedido direto pelo WhatsApp, mapa de localização e painel do dono para editar preços, textos e fotos sem novo deploy.",
"longDescription": "Landing page em Next.js 16 com cena de rolagem do sujo ao brilho, galeria de trabalhos por serviço e FAQ montado a partir dos dados reais do negócio. O conteúdo salvo no painel alimenta a página, os dados estruturados, o sitemap e o cartão de compartilhamento. Respeita prefers-reduced-motion e guarda conteúdo e imagens em Redis e Blob privado, com arquivo local como alternativa.",
"description": "Site da Lavação 047, em Garuva-SC, com tabela de preços por porte do veículo, pedido direto pelo WhatsApp, mapa de localização e painel do dono para editar preços, textos e fotos sem nova publicação.",
"longDescription": "Página em Next.js 16 com cena de rolagem do sujo ao brilho, galeria de trabalhos por serviço e perguntas frequentes montadas a partir dos dados reais do negócio. O conteúdo salvo no painel alimenta a página, os dados estruturados, o sitemap e o cartão de compartilhamento. Respeita a preferência do sistema por menos movimento e guarda conteúdo e imagens em Redis e Blob privado, com arquivo local como alternativa.",
"technologies": [
"Next.js 16",
"React 19",
@@ -117,11 +118,11 @@
"SEO com JSON-LD, sitemap e llms.txt",
"Mapa de localização com OpenStreetMap"
],
"category": "web",
"category": "site",
"level": "senior",
"status": "Em Produção",
"demoUrl": "https://landing-page-lavacao047.vercel.app",
"githubUrl": null,
"githubUrl": "",
"badges": ["Site e painel", "Em Produção"],
"featured": true,
"metrics": {
@@ -131,10 +132,11 @@
},
{
"id": "nutriscan",
"kind": "laboratorio",
"title": "NutriScan",
"subtitle": "Consulta de produtos por nome e código de barras",
"description": "Aplicação web para consultar produtos alimentícios por nome ou código de barras, combinando cache JSON com a API Open Food Facts.",
"longDescription": "A busca consulta o cache JSON primeiro e recorre ao Open Food Facts quando faltam resultados. A consulta por código aceita de 8 a 13 dígitos, e o wrapper diferencia buscas por nome e código com timeout de oito segundos.",
"longDescription": "A busca consulta o cache JSON primeiro e recorre ao Open Food Facts quando faltam resultados. A consulta por código aceita de 8 a 13 dígitos, e a camada de acesso à base diferencia buscas por nome e código, com limite de oito segundos por consulta.",
"technologies": [
"Next.js",
"TypeScript",
@@ -144,16 +146,16 @@
"features": [
"Busca por nome ou código",
"Cache JSON consultado antes da API externa",
"Fallback para Open Food Facts",
"Consulta ao Open Food Facts quando faltam resultados",
"Validação de códigos com 8 a 13 dígitos",
"Timeout de oito segundos"
"Limite de oito segundos por consulta"
],
"category": "full-stack",
"category": "aplicação web",
"level": "senior",
"status": "Código público",
"status": "Em Produção",
"demoUrl": "https://nutriscan.evandro.dev.br",
"githubUrl": "https://github.com/evandrodevbr/nutriscan",
"badges": ["Open Food Facts", "Código público"],
"githubUrl": "",
"badges": ["Open Food Facts", "Em Produção"],
"featured": true,
"metrics": {
"complexity": 5,
@@ -162,22 +164,23 @@
},
{
"id": "twins-lab",
"kind": "laboratorio",
"title": "Twins Lab",
"subtitle": "Protótipo de Gêmeo Digital Industrial",
"description": "Protótipo de gêmeo digital industrial com autenticação, simulador de reator, persistência MongoDB e streaming SSE de eventos do servidor a cada dois segundos.",
"longDescription": "A rota exige sessão do NextAuth antes de abrir o stream SSE. O simulador salva dados e estado no MongoDB e notifica clientes quando execução ou cenário mudam.",
"description": "Protótipo de gêmeo digital industrial com autenticação, simulador de reator, persistência MongoDB e transmissão de eventos do servidor (SSE) a cada dois segundos.",
"longDescription": "A rota exige sessão do NextAuth antes de abrir a transmissão SSE. O simulador salva dados e estado no MongoDB e notifica clientes quando execução ou cenário mudam.",
"technologies": ["Next.js", "TypeScript", "NextAuth", "MongoDB", "SSE"],
"features": [
"Autenticação com NextAuth",
"Simulador de reator",
"Persistência no MongoDB",
"Stream SSE a cada dois segundos"
"Transmissão SSE a cada dois segundos"
],
"category": "iot",
"category": "IoT",
"level": "senior",
"status": "Protótipo",
"githubUrl": "https://github.com/evandrodevbr/twins-lab",
"badges": ["IoT", "SSE", "Código público"],
"githubUrl": "",
"badges": ["IoT", "SSE", "Protótipo"],
"featured": true,
"metrics": {
"complexity": 5,
@@ -186,30 +189,31 @@
},
{
"id": "reddit-explorer",
"kind": "laboratorio",
"title": "Reddit Posts Explorer",
"subtitle": "Posts do r/artificial em MongoDB, filtrados por período",
"description": "Aplicação Astro SSR que coleta os posts em alta do r/artificial pela API pública do Reddit, grava no MongoDB com upsert por id e permite filtrar por período e ordenar por upvotes ou comentários.",
"longDescription": "O serviço consulta r/artificial/hot.json e grava os posts em lote, atualizando os existentes em vez de duplicar. O endpoint de filtro valida as datas e o campo de ordenação. O projeto não tem paginação, busca textual, autenticação, testes automatizados nem CI.",
"description": "Aplicação Astro SSR que coleta os posts em alta do r/artificial pela API pública do Reddit, grava no MongoDB sem duplicar, pelo id, e permite filtrar por período e ordenar por votos ou comentários.",
"longDescription": "O serviço consulta r/artificial/hot.json e grava os posts em lote, atualizando os existentes em vez de duplicar. O endpoint de filtro valida as datas e o campo de ordenação.",
"technologies": [
"Astro",
"MongoDB",
"Mongoose",
"TypeScript",
"Reddit API"
"API do Reddit"
],
"features": [
"Coleta dos posts em alta do r/artificial",
"Upsert por id no MongoDB",
"Gravação por id no MongoDB, sem duplicar",
"Filtro por período",
"Ordenação por upvotes ou comentários",
"Ordenação por votos ou comentários",
"API própria com validação de parâmetros"
],
"category": "api",
"category": "integração com API",
"level": "pleno",
"status": "Concluído",
"demoUrl": null,
"githubUrl": "https://github.com/evandrodevbr/reddit-search",
"badges": ["API Integration", "MongoDB", "Código público"],
"githubUrl": "",
"badges": ["Integração com API", "MongoDB", "Concluído"],
"featured": true,
"metrics": {
"complexity": 3,
@@ -218,9 +222,10 @@
},
{
"id": "sc-plus",
"kind": "cliente",
"title": "SC Plus Aquicultura",
"subtitle": "Landing page institucional em Next.js 15",
"description": "Landing page institucional em Next.js 15, React 19 e Tailwind CSS 4, com metadados e dados estruturados para indexação.",
"subtitle": "Página institucional em Next.js 15",
"description": "Página institucional em Next.js 15, React 19 e Tailwind CSS 4, com metadados e dados estruturados para indexação.",
"longDescription": "Site institucional em Next.js 15 com React 19 e Tailwind CSS 4. A página publica título, descrição, URL canônica, imagem social e dados estruturados.",
"technologies": [
"Next.js 15",
@@ -229,16 +234,16 @@
"TypeScript"
],
"features": [
"Landing page institucional",
"Página institucional",
"Metadados e URL canônica",
"Dados estruturados"
],
"category": "web",
"category": "site",
"level": "pleno",
"status": "Concluído",
"demoUrl": "https://scplus.evandro.dev.br",
"githubUrl": "https://github.com/evandrodevbr/scplus",
"badges": ["Landing page", "Next.js 15"],
"githubUrl": "",
"badges": ["Página institucional", "Next.js 15"],
"featured": true,
"metrics": {
"complexity": 2,
@@ -247,24 +252,25 @@
},
{
"id": "gcc-installer",
"kind": "laboratorio",
"title": "MinGW GCC Installer",
"subtitle": "Instalador gráfico de MinGW-w64/GCC para Windows",
"description": "Aplicativo Python com interface tkinter que lê as builds publicadas do MinGW-w64, baixa o pacote .7z escolhido, instala em C:\\mingw64 e adiciona o toolchain ao PATH do usuário no registro do Windows.",
"longDescription": "A lista de versões vem da API de releases do niXman/mingw-builds-binaries, com as builds ucrt e posix destacadas. A instalação extrai o pacote com o 7-Zip, move para C:\\mingw64 e renomeia mingw32-make.exe para make.exe. Funciona só no Windows e o caminho do 7-Zip é fixo.",
"description": "Aplicativo Python com interface tkinter que lê as builds publicadas do MinGW-w64, baixa o pacote .7z escolhido, instala em C:\\mingw64 e adiciona o compilador ao PATH do usuário no registro do Windows.",
"longDescription": "A lista de versões vem da API de releases do niXman/mingw-builds-binaries, com as builds ucrt e posix destacadas. A instalação extrai o pacote com o 7-Zip, move para C:\\mingw64 e renomeia mingw32-make.exe para make.exe. Feito para Windows, com o 7-Zip no caminho padrão.",
"technologies": ["Python", "Tkinter", "Win32 API", "GitHub API", "7-Zip"],
"features": [
"Lista as builds publicadas do MinGW-w64",
"Destaca builds ucrt e posix",
"Baixa e instala em C:\\mingw64",
"Adiciona o toolchain ao PATH do usuário",
"Adiciona o compilador ao PATH do usuário",
"Testes do núcleo (23)"
],
"category": "desktop",
"category": "aplicativo desktop",
"level": "pleno",
"status": "Concluído",
"demoUrl": null,
"githubUrl": "https://github.com/evandrodevbr/gcc-installer",
"badges": ["Desktop", "Windows", "Código público"],
"githubUrl": "",
"badges": ["Desktop", "Windows", "Concluído"],
"featured": true,
"metrics": {
"complexity": 4,
@@ -273,22 +279,23 @@
},
{
"id": "as-servicos",
"kind": "cliente",
"title": "AS Serviços",
"subtitle": "Site Institucional com Cena 3D Procedural",
"description": "Site institucional em Next.js 16 com cena Three.js gerada em código: uma casa wireframe e uma placa-mãe ligadas ao progresso da rolagem.",
"longDescription": "O motor monta casa, instalação elétrica e placa-mãe com geometrias e linhas do Three.js. O canvas converte a rolagem em progresso de 0 a 1, e a qualidade se adapta conforme WebGL, reduced motion, economia de dados, conexão e capacidade do dispositivo.",
"subtitle": "Site institucional com cena 3D gerada em código",
"description": "Site institucional em Next.js 16 com cena Three.js gerada em código: uma casa desenhada em linhas e uma placa-mãe ligadas ao progresso da rolagem.",
"longDescription": "O motor monta casa, instalação elétrica e placa-mãe com geometrias e linhas do Three.js. O canvas converte a rolagem em progresso de 0 a 1, e a qualidade se adapta conforme WebGL, preferência por menos movimento, economia de dados, conexão e capacidade do dispositivo.",
"technologies": ["Next.js 16", "TypeScript", "Three.js"],
"features": [
"Casa, instalação elétrica e placa-mãe geradas com Three.js",
"Rolagem convertida em progresso de 0 a 1",
"Qualidade static, low, medium ou high"
"Qualidade em quatro níveis: estático, baixo, médio ou alto"
],
"category": "web",
"category": "site",
"level": "senior",
"status": "Código público",
"status": "Concluído",
"demoUrl": null,
"githubUrl": "https://github.com/evandrodevbr/as-servicos",
"badges": ["Three.js", "WebGL", "Código público"],
"githubUrl": "",
"badges": ["Three.js", "WebGL", "Concluído"],
"featured": true,
"metrics": {
"complexity": 5,
@@ -328,7 +335,7 @@
]
},
{
"category": "DevOps & Tools",
"category": "DevOps e ferramentas",
"icon": "GitBranch",
"color": "text-blue-400",
"bgColor": "bg-blue-500/20",
@@ -340,7 +347,7 @@
"color": "text-blue-400",
"bgColor": "bg-blue-500/20",
"skills": [
"Cloud Computing",
"Computação em nuvem",
"Inteligência Artificial",
"IoT",
"Energia Renovável"
@@ -372,23 +379,17 @@
},
"contact": {
"email": "[email protected]",
"phone": "Disponivel pelo botao de WhatsApp",
"whatsapp": "Disponivel pelo botao de WhatsApp",
"linkedin": "https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/",
"github": "https://github.com/evandrodevbr",
"phone": "Disponível pelo botão de WhatsApp",
"whatsapp": "Disponível pelo botão de WhatsApp",
"linkedin": "https://www.linkedin.com/in/evandrodevbr/",
"location": "Garuva, Santa Catarina, Brasil"
},
"social": [
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/in/evandro-fonseca-junior-0969aa1b0/",
"url": "https://www.linkedin.com/in/evandrodevbr/",
"icon": "linkedin"
},
{
"name": "GitHub",
"url": "https://github.com/evandrodevbr",
"icon": "github"
},
{
"name": "Email",
"url": "mailto:[email protected]",