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:
1 parent
3756905a1b
commit
6e1022b58c
44 files changed
+2691
-1424
No files matched your search
+67
-66
@@ -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]",
|
||||
|
||||
Reference in new issue
Block a user