WP Manifestindependent plugin directory
manifest / ecommerce / vemcomer-core

Pedevem Core

Plugin do marketplace VemComer (WordPress)

★ 0stars
0.5.2-test1latest · never

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/staryannfree/vemcomer-core/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

🚨 TRIGGER AUTOMÁTICO: AAA

IMPORTANTE: Se você digitar "AAA" em qualquer mensagem, o assistente será OBRIGADO a analisar todos os logs antes de responder.

AAA = "Analisa Automaticamente Agora"

Veja: AAA-PROTOCOLO-OBRIGATORIO.md para detalhes completos.


Core de marketplace para WordPress com:

  • CPTs: Produtos, Pedidos, Restaurantes, Itens do Cardápio.
  • Admin Menu, REST API, Status de Pedido, Webhooks e Seed via WP‑CLI.
  • Integrações: WooCommerce (sincroniza pedidos/status) e Automator (hooks customizados).

Instalação e Ativação

  1. Copie o plugin para wp-content/plugins/vemcomer-core/.
  2. Ative Pedevem Core no painel do WordPress.
  3. (Opcional) Configure Pedevem ▸ Configurações → Segredo do Webhook e integrações.

Páginas públicas (shortcodes)

Ao ativar o plugin o núcleo cria/atualiza automaticamente as páginas que contêm apenas os shortcodes principais (lista, cardápio e checkout) e elas passam a aparecer em Páginas ▸ Todas como qualquer outra página. Se quiser recriá-las depois — ou gerar versões parametrizadas para um restaurante específico — use VemComer ▸ Instalador, que reaproveita as mesmas rotinas sem duplicar conteúdos existentes.

Shortcodes principais disponíveis:

  • [vemcomer_restaurants] — grade pública de restaurantes cadastrados.
  • [vc_restaurants_map] — mapa público com pins e botão “Perto de mim”.
  • [vemcomer_menu] — lista os itens de um restaurante (usa ?restaurant_id= ou o atributo restaurant_id).
  • [vemcomer_checkout] — checkout simplificado para o carrinho do marketplace.
  • [vemcomer_restaurant_panel] — painel front-end para donos de restaurante (requer login). Inclui botão "Configuração Rápida" para onboarding de novos usuários.
  • [vemcomer_restaurant_signup] — formulário público para restaurantes enviarem seus dados (entradas ficam pendentes para aprovação do admin).
  • [vemcomer_customer_signup] — formulário de criação de conta para clientes finais.

Página de validação de acesso: /validar-acesso/?token={access_url} — página automática onde restaurantes aprovados podem criar sua conta de acesso usando o token recebido no webhook.

Sistema de Onboarding: O painel do restaurante inclui um sistema de onboarding guiado que ajuda novos donos a configurar seus restaurantes. Acessível via botão "⚡ Configuração Rápida" no painel. Veja mais detalhes em docs/ONBOARDING.md.

Todos os shortcodes acima renderizam HTML, CSS e JavaScript próprios do plugin — não há dependência de construtores como o Elementor para exibir as páginas públicas.

Sistema de Onboarding

O sistema de onboarding guia novos donos de restaurantes através dos primeiros passos de configuração:

Como funciona

  1. Acesso: Quando um dono de restaurante acessa o painel pela primeira vez, vê o botão "⚡ Configuração Rápida"
  2. Ativação: Ao clicar no botão, um modal interativo é aberto com 5 steps guiados
  3. Progresso: O progresso é salvo automaticamente e pode ser retomado a qualquer momento
  4. Verificação: Alguns steps são verificados automaticamente (perfil completo, itens no cardápio, etc.)
  5. Conclusão: Ao completar todos os steps, o botão desaparece e o onboarding não aparece mais

Steps do Onboarding

  1. Bem-vindo ao Pedevem! - Tela inicial de boas-vindas
  2. Complete seu perfil - Adicionar WhatsApp, endereço e horários
  3. Adicione itens ao cardápio - Criar pelo menos 3 itens
  4. Configure delivery - Definir se oferece delivery
  5. Veja sua página pública - Visualizar como os clientes veem o restaurante

Recursos

  • ✅ Progresso persistente - Salvo no banco de dados
  • ✅ Verificação automática - Detecta quando tarefas são completadas
  • ✅ Dismissível - Pode ser fechado e retomado depois
  • ✅ Responsivo - Funciona em desktop e mobile
  • ✅ Acessível - Segue boas práticas de acessibilidade

Para mais detalhes, consulte docs/ONBOARDING.md e docs/ONBOARDING_VISUAL.md.

Seed (dados de demonstração)

Cria 1 restaurante e 5 itens de cardápio:

wp vc seed

Integração Frontend PWA

O plugin está configurado para comunicação com frontends PWA (Progressive Web Apps) desenvolvidos em React, Vue ou outras frameworks modernas.

Repositório: https://github.com/Staryannfree/vemcomer-core

Configuração CORS

O plugin inclui um handler CORS configurável que permite requisições cross-origin do frontend. As origens permitidas podem ser configuradas via filtro WordPress:

add_filter( 'vemcomer_rest_allowed_origins', function( $origins ) {
    $origins[] = 'https://seu-frontend.com';
    return $origins;
} );

Por padrão, as seguintes origens são permitidas:

  • http://localhost:3000
  • http://localhost:5173
  • http://localhost:8080
  • http://127.0.0.1:3000
  • http://127.0.0.1:5173
  • http://pedevem-local.local (ambiente local)
  • https://hungry-hub-core.lovable.app (frontend Lovable produção)
  • https://47191717-b1f5-4559-bdab-f069bc62cec6.lovableproject.com (frontend Lovable desenvolvimento)
  • https://periodic-symbol.localsite.io (Live Link Local by Flywheel)

Documentação da API

A documentação completa da API REST está disponível em:

Links no GitHub:

  • API_ENDPOINTS.md
  • LOVABLE_INTEGRATION.md
    • Configuração de variáveis de ambiente
    • Cliente API (fetch wrapper) pronto para uso
    • Estrutura de dados TypeScript
    • Tratamento de erros
    • Exemplos de uso completos

Exemplo Rápido

// Configuração básica
// Para desenvolvimento local: http://pedevem-local.local/wp-json/vemcomer/v1
// Para produção: https://pedevem.com/wp-json/vemcomer/v1
const API_URL = 'http://pedevem-local.local/wp-json/vemcomer/v1';

// Listar restaurantes
const restaurants = await fetch(`${API_URL}/restaurants?per_page=20`)
  .then(res => res.json());

// Obter detalhes de um restaurante
const restaurant = await fetch(`${API_URL}/restaurants/123`)
  .then(res => res.json());

// Obter cardápio
const menuItems = await fetch(`${API_URL}/restaurants/123/menu-items`)
  .then(res => res.json());

Para mais detalhes e exemplos completos, consulte a documentação de integração.

Endpoints REST

Restaurantes

  • GET /wp-json/vemcomer/v1/restaurants - Lista restaurantes (suporta filtros: cuisine, delivery, is_open, search, orderby, order, per_page, page)
  • GET /wp-json/vemcomer/v1/restaurants/{id} - Detalhes de um restaurante
  • GET /wp-json/vemcomer/v1/restaurants/{id}/menu-items - Lista itens do cardápio de um restaurante
  • GET /wp-json/vemcomer/v1/restaurants/{id}/menu-categories - Lista categorias do cardápio
  • GET /wp-json/vemcomer/v1/restaurants/{id}/schedule - Horários estruturados do restaurante (inclui feriados)
  • GET /wp-json/vemcomer/v1/restaurants/{id}/is-open?timestamp={opcional} - Verifica se restaurante está aberto (retorna próximo horário de abertura se fechado)
  • GET /wp-json/vemcomer/v1/restaurants/{id}/reviews - Lista avaliações aprovadas de um restaurante
  • GET /wp-json/vemcomer/v1/restaurants/{id}/rating - Retorna rating agregado (média e total)

Modificadores de Produtos

  • GET /wp-json/vemcomer/v1/menu-items/{id}/modifiers - Lista modificadores de um item do cardápio (público)
  • POST /wp-json/vemcomer/v1/menu-items/{id}/modifiers - Criar modificador vinculado a um item (admin)
  • PATCH /wp-json/vemcomer/v1/modifiers/{id} - Atualizar modificador (admin)
  • DELETE /wp-json/vemcomer/v1/modifiers/{id} - Deletar modificador (admin)

Avaliações e Ratings

  • GET /wp-json/vemcomer/v1/restaurants/{id}/reviews?per_page={opcional}&page={opcional} - Lista avaliações aprovadas de um restaurante (público)
  • GET /wp-json/vemcomer/v1/restaurants/{id}/rating - Retorna rating agregado (média e total) de um restaurante (público)
  • POST /wp-json/vemcomer/v1/reviews - Criar avaliação (requer autenticação, body: restaurant_id, rating (1-5), comment (opcional), order_id (opcional))

Favoritos

  • GET /wp-json/vemcomer/v1/favorites/restaurants - Lista restaurantes favoritos do usuário autenticado
  • POST /wp-json/vemcomer/v1/favorites/restaurants/{id} - Adicionar restaurante aos favoritos (requer autenticação)
  • DELETE /wp-json/vemcomer/v1/favorites/restaurants/{id} - Remover restaurante dos favoritos (requer autenticação)
  • GET /wp-json/vemcomer/v1/favorites/menu-items - Lista itens do cardápio favoritos do usuário autenticado
  • POST /wp-json/vemcomer/v1/favorites/menu-items/{id} - Adicionar item do cardápio aos favoritos (requer autenticação)
  • DELETE /wp-json/vemcomer/v1/favorites/menu-items/{id} - Remover item do cardápio dos favoritos (requer autenticação)

Pedidos

  • GET /wp-json/vemcomer/v1/orders?status={opcional}&data_inicio={opcional}&data_fim={opcional}&restaurant_id={opcional}&per_page={opcional}&page={opcional} - Lista pedidos do usuário autenticado com filtros
  • GET /wp-json/vemcomer/v1/orders/{id} - Detalhes completos de um pedido (requer autenticação, apenas dono ou admin)

Analytics

  • GET /wp-json/vemcomer/v1/restaurants/{id}/analytics?period={today|week|month|custom}&date_from={opcional}&date_to={opcional} - Métricas de analytics do restaurante (requer autenticação, apenas dono ou admin)

WhatsApp

  • POST /wp-json/vemcomer/v1/orders/prepare-whatsapp - Gera mensagem formatada para WhatsApp (body: restaurant_id, items, customer, fulfillment)

Pedidos

  • POST /wp-json/vemcomer/v1/pedidos

  • Body: { "restaurant_id": 123, "itens": [ {"produto_id": 123, "qtd": 2} ], "subtotal": "49,90", "fulfillment": { "method": "flat_rate_delivery", "ship_total": "9,90" } }

Fulfillment e Checkout

  • O checkout público trabalha somente com um restaurante por vez e exige um método de fulfillment válido.
  • Cada método implementa VC\Checkout\FulfillmentMethod (inc/Checkout/FulfillmentMethod.php).
  • Registre seus métodos no action vemcomer_register_fulfillment_method — o registro padrão (inc/Checkout/Methods/FlatRateDelivery.php) aplica o frete fixo + pedido mínimo dos metadados do restaurante.
  • Use os helpers JS em assets/js/checkout.js para testar rapidamente as rotas de frete/pedido (window.VemComerCheckoutExamples.exampleQuote() e .exampleOrder()).

Cotação de Frete

  • GET /wp-json/vemcomer/v1/shipping/quote?restaurant_id={id}&subtotal={valor}&lat={lat}&lng={lng}&address={endereco}&neighborhood={bairro}
  • Parâmetros obrigatórios: restaurant_id, subtotal
  • Parâmetros opcionais: lat, lng, address, neighborhood (para cálculo por distância)
  • Retorna: array de métodos disponíveis, distância calculada, se está no raio, se restaurante está aberto

Banners

  • GET /wp-json/vemcomer/v1/banners - Lista banners ativos da home (público)
  • Parâmetros opcionais: restaurant_id - Filtrar banners de um restaurante específico

Exemplo de registro:

add_action( 'vemcomer_register_fulfillment_method', function () {
    \VC\Checkout\FulfillmentRegistry::register( new My_Custom_Method(), 'my-method' );
} );

Webhook de Pagamento (entrada)

  • POST /wp-json/vemcomer/v1/webhook/payment
  • Header: X-VemComer-Signature: sha256=<hmac_hex_do_corpo>
  • Body: { "order_id": 10, "status": "paid|refunded|failed", "amount": "99,90", "ts": 1690000000 }

Mercado Pago → VemComer

O plugin expõe um handler dedicado para notificações do Mercado Pago (/wp-json/vemcomer/v1/mercadopago/webhook).

  1. Execute composer require mercadopago/dx-php no diretório do plugin e garanta que vendor/autoload.php esteja presente.
  2. Em VemComer ▸ Configurações configure:
    • Gateway de pagamento: mercadopago.
    • Segredo do webhook (HMAC): gere pelo botão "Gerar novo segredo" e compartilhe com o serviço intermediário.
    • Token do Mercado Pago: cole o access_token do APP (APP_USR-...).
  3. No checkout do Mercado Pago informe external_reference = <ID do vc_pedido> (ou metadata.vemcomer_order_id).
  4. Cadastre a URL /wp-json/vemcomer/v1/mercadopago/webhook nas notificações do Mercado Pago.

O handler valida o id recebido junto ao SDK oficial, resolve o pedido e encaminha o payload assinado para /wp-json/vemcomer/v1/webhook/payment. Após o processamento você pode ouvir vemcomer_mercadopago_payment_processed para executar automações adicionais (envio de comprovantes, atualização de painel, etc.).

Status de Pedido

Os pedidos (vc_pedido) podem ter: vc-pending, vc-paid, vc-preparing, vc-delivering, vc-completed, vc-cancelled. Você pode mudar pelo metabox lateral do pedido ou via integrações.

Integrações

WooCommerce (opcional)

  • Sincroniza status: processing → vc-paid, completed → vc-completed, cancelled → vc-cancelled, on-hold → vc-pending.
  • Se um pedido WooCommerce não tiver vínculo, o plugin cria automaticamente um vc_pedido espelhando itens e total, e vincula via meta _vc_wc_order_id (WC) e _vc_linked_wc_order (VC).

Automator (Uncanny/AutomatorWP)

O plugin expõe actions que podem ser usadas como gatilhos de hook personalizado:

  • vemcomer/order_status_changed, args: (int $vc_order_id, string $new_status, string $old_status)
  • vemcomer/order_paid, args: (int $vc_order_id)
  • vemcomer/webhook_payment_processed, args: (int $vc_order_id, array $payload)
  • vemcomer/restaurant_created, args: (int $restaurant_id)

Use esses nomes nos "Custom Action Hook" dos automators para disparar receitas.

SMClick (Webhooks de Restaurantes)

O plugin integra com SMClick para notificações de eventos relacionados a restaurantes:

  • Webhook de Cadastro: restaurant_registered — dispara quando um restaurante envia o formulário (status pendente).
  • Webhook de Aprovação: restaurant_approved — dispara quando o restaurante é aprovado (status muda para publicado).

Sistema de Token de Acesso (access_url)

Quando um restaurante é aprovado:

  1. Token único gerado: Um token único (access_url) é gerado automaticamente e armazenado no meta vc_restaurant_access_url.
  2. Webhook enviado: O webhook restaurant_approved é enviado para a URL configurada (padrão: https://api.smclick.com.br/integration/wordpress/5f98815b-640d-44c9-88b4-f17d6b059b35/) contendo:
    • Todos os dados do restaurante
    • Campo access_url: token único para acesso
    • Campo access_url_validation: URL completa para validação (/validar-acesso/?token={access_url})
  3. Página de validação: O restaurante pode acessar /validar-acesso/?token={access_url} para:
    • Criar uma conta de acesso (email e senha)
    • Validar que as senhas coincidem (confirmação)
    • Fazer login automático após criação
    • Ser redirecionado para o painel do restaurante

Configuração: Em VemComer ▸ Configurações, configure as URLs dos webhooks SMClick para cada evento. O token access_url aparece automaticamente no metabox do restaurante após aprovação.

Changelog

v0.35 - Página de Teste de Reverse Geocoding no Admin

Nova implementação:

  • Página de Teste no Admin: Interface para testar o reverse geocoding (conversão de coordenadas em endereço)
  • Formulário de Coordenadas: Campos para inserir latitude e longitude
  • Exibição de Resultados: Mostra rua, número, bairro, cidade, estado, CEP, país e endereço completo
  • Integração com Nominatim: Usa a mesma API do OpenStreetMap usada no frontend
  • Dados Brutos: Exibe JSON completo retornado pela API em um detalhes colapsável

Arquivos criados:

  • inc/Admin/Geocoding_Test.php - Classe para renderizar a página de teste

Arquivos modificados:

  • vemcomer-core.php - Inicialização da classe Geocoding_Test
  • README.md - Documentação da funcionalidade

Funcionalidades implementadas:

  • Formulário com validação de coordenadas (lat: -90 a 90, lng: -180 a 180)
  • Botão "Testar Geocoding" que faz requisição à API Nominatim
  • Exibição de resultados formatados (rua, cidade, estado, etc.)
  • Tratamento de erros com mensagens amigáveis
  • Loading state durante processamento
  • Reutiliza a função VemComerReverseGeocode.reverseGeocode() se disponível, ou faz requisição direta

Como usar:

  1. Acesse o admin do WordPress
  2. Vá em Pedevem → Teste Geocoding
  3. Informe a latitude e longitude (ex: -16.6864, -49.2643 para Goiânia)
  4. Clique em "Testar Geocoding"
  5. Veja os resultados exibidos abaixo do formulário

Exemplo de coordenadas para teste:

  • Goiânia: Lat: -16.6864, Lng: -49.2643
  • São Paulo: Lat: -23.5505, Lng: -46.6333
  • Rio de Janeiro: Lat: -22.9068, Lng: -43.1729

v0.34 - Mobile UI Moderno (Design Estilo iFood)

Nova implementação:

  • Design Mobile Completo: Interface moderna estilo iFood para dispositivos móveis
  • Top Bar Aprimorado: Logo, seletor de localização (com bairro) e botão de notificações
  • Hero Banner Carousel: Carrossel de banners promocionais com navegação por dots e swipe
  • Stories Section: Seção de stories estilo Instagram (estrutura pronta, aguardando integração com API)
  • Quick Actions: Botões rápidos para Delivery, Reservas, Eventos e Promoções
  • Search Bar: Barra de busca com filtros integrada
  • Seções de Conteúdo:
    • Pratos do Dia (carrossel horizontal)
    • Restaurantes em Destaque (grid)
    • Todos os Restaurantes (grid com cards)
  • Cart Button Flutuante: Botão de carrinho fixo com badge de quantidade
  • Story Viewer Modal: Modal completo para visualização de stories com progress bars e navegação
  • Meta Tags Mobile: Viewport otimizado, apple-mobile-web-app-capable, viewport-fit=cover

Arquivos criados:

  • theme-vemcomer/assets/css/mobile-ui.css - Estilos completos do mobile UI (baseado no HTML fornecido)
  • theme-vemcomer/assets/js/mobile-ui.js - JavaScript para funcionalidades (carousel, stories, notificações, cart)
  • theme-vemcomer/template-parts/home/mobile-home.php - Template partial com HTML completo do design fornecido

Arquivos modificados:

  • theme-vemcomer/header.php - Adicionado botão de notificações no top bar mobile e meta tags mobile otimizadas
  • theme-vemcomer/functions.php - Enqueue de mobile-ui.css e mobile-ui.js
  • templates/page-home.php - Detecção de mobile (wp_is_mobile()) e renderização do template mobile

Como funciona:

  • Quando wp_is_mobile() retorna true na página home, o template mobile-home.php é carregado automaticamente
  • O template renderiza o HTML completo baseado no design fornecido
  • CSS e JavaScript são carregados automaticamente via WordPress enqueue
  • O template busca dados reais do WordPress (banners, restaurantes, pratos) e renderiza dinamicamente

Funcionalidades implementadas:

  • Banner carousel com auto-play e navegação por swipe
  • Estrutura de stories (aguardando integração com API)
  • Sistema de notificações (badge com contagem)
  • Botão de carrinho com atualização dinâmica
  • Cards de restaurantes com favoritos
  • Cards de pratos com preços e badges
  • JavaScript inline no template para stories viewer completo

Próximos passos (Backend):

  • Integrar stories com API REST
  • Implementar sistema de notificações
  • Conectar pratos do dia com menu items destacados
  • Integrar eventos gastronômicos
  • Conectar favoritos com API

v0.33.2 - Top Bar Mobile Exibe Bairro ao Invés de Cidade

Novas funcionalidades:

  • Top Bar Mobile - Exibição de Bairro:
    • Prioriza exibição do bairro sobre a cidade no top bar mobile
    • Salva bairro no localStorage (vc_user_neighborhood) e cookie (vc_user_neighborhood)
    • Atualização automática quando localização é obtida via reverse geocoding
    • Fallback: se não houver bairro, exibe cidade; se não houver cidade, exibe endereço completo
  • Integração com Reverse Geocoding:
    • Extrai bairro do Nominatim (suburb, neighbourhood, quarter)
    • Salva bairro em todas as funções de geolocalização
    • Sincroniza bairro entre localStorage e cookies

Arquivos modificados:

  • theme-vemcomer/header.php - Prioriza bairro na exibição do top bar
  • theme-vemcomer/assets/js/mobile-app.js - Busca bairro primeiro, depois cidade
  • theme-vemcomer/assets/js/home-improvements.js - Função saveNeighborhood() para salvar bairro
  • assets/js/reverse-geocoding.js - Salva bairro no localStorage
  • theme-vemcomer/functions.php - Todas as funções de geolocalização agora salvam bairro

Resultado: Top bar mobile agora exibe o nome do bairro (ex: "Centro", "Jardim América") ao invés da cidade, proporcionando informação mais específica e útil para o usuário.

v0.33.1 - Página de Categorias e Menu Mobile Atualizado

Novas funcionalidades:

  • Item "Categorias" no Menu Mobile:
    • Adicionado entre "Buscar" e "Pedidos" na bottom navigation
    • Link para /categorias/ com ícone de grid
    • Estado ativo destacado quando na página de categorias
  • Shortcode [vc_categories]:
    • Lista todas as categorias de restaurantes (taxonomia vc_cuisine)
    • Grid responsivo com cards de categoria
    • Exibe ícone ou imagem da categoria
    • Mostra contagem de restaurantes por categoria
    • Links para filtrar restaurantes por categoria
    • Suporte a imagens customizadas (meta _vc_category_image)
    • Ícones padrão para categorias comuns (pizza, brasileira, lanches, etc.)

Arquivos modificados:

  • theme-vemcomer/footer.php - Adicionado item "Categorias" na bottom nav
  • inc/Frontend/Shortcodes.php - Novo shortcode sc_categories() com grid de categorias

Próximos passos:

  • Criar página /categorias/ no WordPress com o shortcode [vc_categories]

v0.33 - Navegação Mobile App Nativo (Estilo iFood)

Novas funcionalidades:

  • Estrutura CSS Mobile-First (mobile-app.css):
    • Ocultação de header padrão (.site-header, #masthead), footer padrão (.site-footer) e sidebars em telas < 768px
    • Ajuste do body: padding-top: 60px e padding-bottom: 80px para não esconder conteúdo atrás das barras fixas
    • Top bar fixa: position: fixed; top: 0; z-index: 999 com fundo branco e sombra suave
    • Bottom nav fixa: position: fixed; bottom: 0; z-index: 1000 com suporte a safe-area-inset-bottom (iPhone X+)
  • Bottom Navigation Bar (4 itens - estilo iFood):
    • Renderizada apenas com wp_is_mobile() no PHP
    • 4 ícones SVG inline: Início (Casa), Buscar (Lupa), Pedidos (Lista/Documento), Perfil (Usuário)
    • Lógica de UX: Item da página atual recebe classe .active (cor #ea1d2c)
    • Links: / (Início), /busca (Buscar), /meus-pedidos (Pedidos), /minha-conta (Perfil)
  • Header Minimalista (Mobile Only):
    • Exibido apenas com wp_is_mobile() no PHP
    • Barra simples com Logo pequeno (à esquerda) e texto "Entregar em: [Endereço Atual] ▾"
    • Integrado com sistema de geolocalização (atualização automática)
  • Categorias Estilo Pílulas (Carrossel Horizontal):
    • CSS: display: flex; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch;
    • Estilo: Botões arredondados (border-radius: 20px), fundo cinza claro (#f2f2f2), texto preto
    • Item ativo: Fundo vermelho (#ea1d2c), texto branco
    • Scrollbar oculta: ::-webkit-scrollbar { display: none; }

Arquivos novos:

  • theme-vemcomer/assets/css/mobile-app.css - Estilos completos para navegação mobile app
  • theme-vemcomer/assets/js/mobile-app.js - JavaScript para integração e funcionalidades mobile

Arquivos modificados:

  • theme-vemcomer/footer.php - Bottom navigation bar com ícones SVG e estados ativos
  • theme-vemcomer/header.php - Top bar minimalista com seletor de endereço
  • theme-vemcomer/template-parts/home/section-categories.php - Categorias estilo pílulas para mobile
  • theme-vemcomer/functions.php - Enfileiramento de CSS e JS mobile app
  • theme-vemcomer/assets/js/home-improvements.js - Disparo de evento customizado para atualização de endereço

Resultado: Experiência mobile idêntica a um app nativo, com navegação controlada pelo polegar na parte inferior da tela, top bar minimalista e categorias em carrossel horizontal estilo pílulas.

v0.32 - PWA (Progressive Web App) - Infraestrutura Completa

Novas funcionalidades:

  • Manifest.json: Arquivo de manifesto PWA configurado
    • Nome: "VemComer"
    • Display: standalone (remove barra do navegador)
    • Theme Color: #ea1d2c (vermelho iFood)
    • Background: #ffffff
    • Ícones: 192x192 e 512x512 (placeholders configurados)
    • Shortcuts: Atalho para "Restaurantes"
  • Service Worker (sw.js): Estratégia de cache híbrida
    • Cache Name: vemcomer-pwa-v1
    • App Shell Pré-cacheado: Home, CSS críticos (style.css, main.css, product-modal.css)
    • Estratégias de Cache:
      • Network First para APIs REST (/wp-json/): Tenta rede primeiro, fallback para cache, retorna erro JSON se offline
      • Cache First para Assets (imagens, CSS, JS): Retorna cache imediatamente, atualiza em background (stale-while-revalidate)
      • Network First para Navegação HTML: Tenta rede primeiro, fallback para App Shell se offline
    • Ignora: Não intercepta /wp-admin/ ou /wp-login.php
    • Instalação e Ativação: Auto-install, skip waiting, clients claim
  • Integração WordPress:
    • Meta Tags PWA: Injetadas no wp_head (manifest, theme-color, apple-touch-icon, apple-mobile-web-app)
    • Registro do Service Worker: Script inline no footer para registrar SW automaticamente
    • Rota Virtual /sw.js: Rewrite rule para servir SW em escopo global
      • Query var vemcomer_sw para identificar requisição
      • Template redirect para servir arquivo com Content-Type: application/javascript
      • Flush automático de rewrite rules na ativação do tema

Arquivos novos:

  • theme-vemcomer/manifest.json - Manifesto PWA
  • theme-vemcomer/assets/js/sw.js - Service Worker com estratégia de cache
  • theme-vemcomer/PWA_SETUP.md - Documentação de configuração e setup

Arquivos modificados:

  • theme-vemcomer/functions.php - Integração PWA completa (meta tags, registro SW, rewrite rules)

Próximos passos:

  • Criar ícones PWA (192x192 e 512x512) e salvar em theme-vemcomer/assets/images/
  • Fazer flush de rewrite rules (Configurações → Links Permanentes → Salvar)
  • Testar instalação PWA no mobile e desktop

v0.31 - Modal de Upgrade e Pricing (10.3)

Novas funcionalidades:

  • Modal de Pricing (Tabela de Preços):
    • Interface moderna com 3 colunas (Vitrine, Delivery Pro, Growth).
    • Destaque visual para o plano "Delivery Pro" (Recomendado).
    • Lista de recursos comparativa (check/cross).
  • Fluxo de Assinatura:
    • Botões de "Assinar" redirecionam para o WhatsApp do suporte com mensagem pré-formatada contendo o nome do restaurante e o plano desejado.
  • Pontos de Entrada:
    • Links de upgrade espalhados pelo painel (widget lateral, alerta de limite, blur de analytics) abrem o modal automaticamente.

Arquivos novos:

  • assets/js/admin-panel.js - Lógica de interação do painel e modal

Arquivos modificados:

  • inc/Frontend/RestaurantPanel.php - Inclusão do HTML do modal e enfileiramento do JS
  • assets/css/admin-panel-basic.css - Estilos do modal e tabela de preços

v0.30 - Frontend e Dashboard para Plano Vitrine/Básico (10.1 + 10.2)

Novas funcionalidades:

  • Layout de Loja Pública Simplificado (Plano Vitrine):
    • CSS específico para plano básico (frontend-basic-plan.css).
    • Botão "Adicionar" direto (sem modal complexo).
    • Layout de cards de itens simplificado (lista).
    • Rodapé "Powered by VemComer" obrigatório.
  • Painel do Restaurante Limitado:
    • Widget "Seu Plano: VITRINE" com barra de progresso de itens usados.
    • Alerta visual quando o limite de itens está próximo (80%).
    • Card de Analytics com efeito "Blur Overlay" e botão de upgrade para bloquear acesso a dados avançados.
    • Bloqueio visual de itens de menu não permitidos no plano.

Arquivos novos:

  • assets/css/frontend-basic-plan.css - Estilos para a loja pública básica
  • assets/css/admin-panel-basic.css - Estilos para o painel admin limitado

Arquivos modificados:

  • inc/Frontend/RestaurantPanel.php - Integração de widgets de plano e restrições visuais
  • inc/Frontend/Shortcodes.php - Renderização condicional do layout simplificado

v0.29 - Sistema de Planos/Assinaturas SaaS - Enforcers e Seed (9.1 + 9.2 + 9.3)

Novas funcionalidades:

  • Gestão de Planos:
    • Planos criados automaticamente via seed: Vitrine (Grátis), Delivery Pro e Gestão & Growth.
    • Menu de gestão de planos exposto para o Admin ("VemComer > Planos de Assinatura").
    • Atribuição de plano ao restaurante via metabox lateral no editor do restaurante.
  • Limites e Restrições (Enforcers):
    • Limite de Itens: Bloqueia criação de novos itens no cardápio se o limite do plano for atingido (ex: 20 itens no Vitrine).
    • Permissão de Modificadores: Bloqueia criação de modificadores se o plano não permitir (ex: Vitrine não tem modificadores).
    • Mensagem WhatsApp Dinâmica:
      • Vitrine: Envia mensagem de texto simples.
      • Pro/Growth: Envia mensagem formatada rica (negrito, separadores, detalhes).
  • Integração Frontend:
    • O checkout detecta o plano e ajusta a mensagem enviada ao WhatsApp automaticamente.

Arquivos novos:

  • inc/Utils/Plan_Seeder.php - Criação automática dos planos padrão

Arquivos modificados:

  • inc/Admin/Menu_Restaurant.php - Adicionado submenu de Planos
  • inc/Model/CPT_Restaurant.php - Metabox de seleção de plano
  • inc/Model/CPT_MenuItem.php - Validação de limite de itens
  • inc/Model/CPT_ProductModifier.php - Validação de permissão de modificadores
  • inc/WhatsApp/Message_Formatter.php - Templates dinâmicos (simples vs rico)
  • inc/REST/Orders_Controller.php - Passagem de dados para formatação
  • vemcomer-core.php - Execução do seed automático

v0.28+ - Implementação Completa de Recursos Backend (Seções 8-25.1)

Todas as seções de 8 a 25.1 foram implementadas:

  • ✅ Seção 8: Sistema de Banners da Home (CPT, REST API completa)
  • ✅ Seção 9: Sistema de Planos/Assinaturas SaaS (CPT, limites, validação, REST API)
  • ✅ Seção 10: Sistema de Geração de Mensagem WhatsApp (Message_Formatter, REST API)
  • ✅ Seção 11: Sistema de Endereços de Entrega (Helper, REST API, Geocodificação)
  • ✅ Seção 12: Sistema de Disponibilidade em Tempo Real (Helper, REST API)
  • ✅ Seção 13: Sistema de Categorias de Cardápio Robusto (ordem, imagem, REST API)
  • ✅ Seção 14: Sistema de Busca Avançada (full-text, filtros, ordenação)
  • ✅ Seção 15: Sistema de Notificações (Manager, REST API)
  • ✅ Seção 16: Sistema de Tempo Estimado de Entrega Dinâmico (Calculator, REST API)
  • ✅ Seção 17: Sistema de Preços por Bairro (já implementado, melhorado)
  • ✅ Seção 18: Sistema de Múltiplos Métodos de Fulfillment (Pickup adicionado)
  • ✅ Seção 19: Sistema de Gestão de Imagens Otimizadas (Image_Optimizer)
  • ✅ Seção 20: Sistema de Validação de Pedido Antes do WhatsApp (Validator, REST API)
  • ✅ Seção 21: Sistema de Cache Inteligente (Cache_Manager, REST API de invalidação)
  • ✅ Seção 22: Sistema de Relatórios Avançados (Restaurant_Reports, REST API)
  • ✅ Seção 23: Sistema de Cupons/Descontos Completo (CPT, Validator, REST API)
  • ✅ Seção 24: Sistema de Gestão de Usuários Super Admin (Admin_Controller)
  • ✅ Seção 25.1: Sistema de Logs e Auditoria Avançado (Audit_Controller, export CSV)

Total de arquivos criados/modificados: 50+ arquivos Total de endpoints REST adicionados: 30+ endpoints Todas as funcionalidades críticas e importantes implementadas!

v0.44 - Frontend Completo - Integração Total com Backend

Implementação completa do frontend cobrindo todas as funcionalidades backend:

Fase 1: Core do Checkout

  • ✅ Modal de Produto com Modificadores (Fase 1.1)

    • Modal responsivo (bottom sheet no mobile, centralizado no desktop)
    • Carrega modificadores via REST API /menu-items/{id}/modifiers
    • Valida modificadores obrigatórios e min/max
    • Adiciona itens com modificadores ao carrinho
    • Cálculo correto de preços incluindo modificadores
  • ✅ Checkout Completo com WhatsApp (Fase 1.2)

    • Validação de pedido antes de finalizar (/orders/validate)
    • Geração de mensagem WhatsApp formatada (/orders/prepare-whatsapp)
    • Coleta dados do cliente (nome, telefone, endereço)
    • Abre WhatsApp automaticamente com mensagem pronta
    • Remove criação de pedido direto (usa validação + WhatsApp)
  • ✅ Múltiplos Métodos de Fulfillment (Fase 1.3)

    • UI de seleção entre Delivery e Pickup
    • Exibe preço e ETA de cada método
    • Atualiza cálculo de frete baseado na escolha

Fase 2: Social Proof

  • ✅ Ratings nos Cards (Fase 2.1)

    • Exibe estrelas e avaliação média nos cards de restaurante
    • Integrado com Rating_Helper
    • Formatação visual consistente
  • ✅ Seção de Reviews (Fase 2.2)

    • Shortcode [vc_reviews] integrado no template single
    • Carrega reviews via REST API
    • Formulário para criar nova avaliação
    • Paginação de resultados

Fase 3: Disponibilidade

  • ✅ Status Aberto/Fechado (Fase 3.1)

    • Badges visuais nos cards (Aberto/Fechado)
    • Mostra próximo horário de abertura se fechado
    • Bloqueia checkout se restaurante fechado
    • Verificação em tempo real via Schedule_Helper
  • ✅ Horários Estruturados (Fase 3.2)

    • Migração de campo texto para JSON estruturado
    • Suporta múltiplos períodos por dia
    • Formatação legível nos shortcodes
    • Fallback para campo legado

Fase 4: Engajamento

  • ✅ Sistema de Favoritos (Fase 4.1)

    • Botões de favorito nos cards de restaurante e itens
    • Shortcode [vc_favorites] para listar favoritos
    • Integração com REST API /favorites/*
    • Atualização visual em tempo real
  • ✅ Endereços de Entrega (Fase 4.2)

    • Interface para gerenciar endereços salvos
    • Seleção de endereço no checkout
    • Preenchimento automático de campos
    • Suporta criar, editar, deletar e definir principal

Fase 5: Descoberta

  • ✅ Busca Avançada (Fase 5.1)

    • Filtros: min_rating, is_open_now, has_delivery, price_range
    • Busca full-text em restaurantes e itens
    • UI organizada e responsiva
  • ✅ Filtros Combinados (Fase 5.2)

    • Suporta múltiplos filtros simultâneos
    • Filtros aplicados no shortcode [vc_restaurants]
    • Botão para limpar filtros

Fase 6: Funcionalidades Extras

  • ✅ Banners (Fase 6.1)

    • Shortcode [vc_banners] para exibir banners
    • Layout responsivo com grid
    • Suporta links e imagens
    • Filtro por restaurante
  • ✅ Notificações (Fase 6.2)

    • Shortcode [vc_notifications] para exibir notificações
    • Badge com contador de não lidas
    • Marcar como lida e marcar todas como lidas
    • Formatação de data relativa
  • ✅ Histórico de Pedidos (Fase 6.3)

    • Shortcode [vc_orders_history] para listar pedidos
    • Filtro por status
    • Paginação de resultados
    • Exibe detalhes completos (itens, total, frete, desconto)

Fase 7: Melhorias e Otimizações

  • ✅ Cálculo Correto de Preços
    • Inclui modificadores no cálculo do subtotal
    • Exibe preço total por item no carrinho
    • Cálculo correto no checkout

Arquivos criados:

  • assets/css/product-modal.css, assets/js/product-modal.js
  • assets/css/favorites.css, assets/js/favorites.js
  • assets/css/addresses.css, assets/js/addresses.js, assets/js/checkout-addresses.js
  • assets/css/banners.css
  • assets/css/notifications.css, assets/js/notifications.js
  • assets/css/orders-history.css, assets/js/orders-history.js
  • inc/shortcodes/favorites.php, inc/shortcodes/banners.php
  • inc/shortcodes/notifications.php, inc/shortcodes/orders-history.php

Total de funcionalidades frontend implementadas: 15 fases completas Cobertura do backend: 100% das funcionalidades críticas e importantes integradas

v0.27 - Sistema de Geração de Mensagem WhatsApp (10.1 + 10.2 + 10.3)

Novas funcionalidades:

  • Classe Message_Formatter: Formatador de mensagens WhatsApp
    • Template configurável via filtro vemcomer/whatsapp_message_template
    • Suporte a itens com modificadores
    • Formatação de valores monetários
    • Geração de URL do WhatsApp (wa.me)
  • Endpoint REST: POST /orders/prepare-whatsapp
    • Valida: restaurante existe, está aberto, tem WhatsApp configurado
    • Retorna: mensagem formatada e URL do WhatsApp
    • Suporta: delivery e pickup, modificadores, cálculo de totais

Arquivos novos:

  • inc/WhatsApp/Message_Formatter.php - Formatador de mensagens

Arquivos modificados:

  • inc/REST/Orders_Controller.php - Adicionado endpoint prepare-whatsapp

v0.26 - Sistema de Banners da Home (8.1 + 8.2)

Novas funcionalidades:

  • CPT vc_banner: Custom Post Type para banners da home
    • Campos: imagem (thumbnail), título, link, restaurante_id (opcional), ordem, ativo
    • Meta fields: _vc_banner_link, _vc_banner_restaurant_id, _vc_banner_order, _vc_banner_active
  • REST API completa:
    • GET /banners - Lista banners ativos (público, ordenados)
    • POST /banners - Criar banner (admin)
    • PATCH /banners/{id} - Atualizar banner (admin)
    • DELETE /banners/{id} - Deletar banner (admin)
  • Interface admin: Metabox completo e colunas customizadas

Arquivos novos:

  • inc/Model/CPT_Banner.php - CPT de banners
  • inc/REST/Banners_Controller.php - Controller REST

Arquivos modificados:

  • inc/Admin/Menu_Restaurant.php - Adicionado submenu "Banners"
  • vemcomer-core.php - Registro do CPT e controller

v0.25 - Sistema de Analytics - Middleware de Tracking (7.3)

Novas funcionalidades:

  • Tracking automático de eventos:
    • Visualização de restaurante: hook em template_redirect para single de restaurante
    • Visualização de cardápio: hook em template_redirect quando há restaurant_id na URL
    • Tracking via REST API: hooks em rest_prepare_* para visualizações via API
  • JavaScript de tracking: Script inline no footer para eventos do lado do cliente
    • Cliques no WhatsApp: detecta links wa.me, whatsapp.com, api.whatsapp.com
    • Adições ao carrinho: detecta botões com data-action="add-to-cart"
    • Início de checkout: detecta botões com data-action="checkout"
    • Usa navigator.sendBeacon para não bloquear navegação
  • Endpoint REST para tracking: POST /analytics/track para receber eventos via JavaScript
  • Processamento assíncrono: Todos os eventos são logados via shutdown hook (não bloqueiam requisições)

Arquivos novos:

  • inc/Analytics/Tracking_Middleware.php - Hooks automáticos para tracking
  • inc/Analytics/Tracking_Controller.php - Endpoint REST para tracking via JS

Arquivos modificados:

  • vemcomer-core.php - Registro dos novos controllers

v0.24 - Sistema de Analytics - Dashboard (7.2)

Novas funcionalidades:

  • Endpoint REST de Analytics: GET /restaurants/{id}/analytics
    • Métricas: visualizações de restaurante, visualizações de cardápio, cliques WhatsApp, adições ao carrinho, inícios de checkout
    • Taxa de conversão: cliques WhatsApp / visualizações de restaurante
    • Clientes únicos: total de clientes distintos que interagiram
    • Itens mais vistos: top 10 itens do cardápio mais visualizados
  • Filtros de período: today, week, month, custom (com date_from e date_to)
  • Controle de acesso: Apenas dono do restaurante ou admin pode ver analytics
  • Cálculo de métricas: Agregaçã

This README is longer than the copy stored here. Read the rest on GitHub →

Releases

1 release.

Tag
Published
0.5.2-test1 latest
Oct 2, 2025 1 year ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.