Pular para o conteúdo
Mauricio Pereira BragaDesenvolvedor full stack
Trabalhos

Categoriza Brasil

Ecossistema para classificação sanitária de serviços de alimentação, conectando conteúdo público, estabelecimentos e gestão institucional.

Visitar plataforma

Papel
Desenvolvimento full stack
Período
2023 – 2025
Tipo
Plataforma pública
Página inicial do Categoriza Brasil com os selos A, B e C de qualidade sanitária

O problema

A classificação sanitária de bares, restaurantes e padarias precisava sair do papel e virar informação pública consultável, sem perder o controle institucional de quem emite e mantém cada selo.

Requisitos

Funcionais

  • Cadastrar estabelecimentos com selo A, B ou C, categoria, endereço, coordenadas, contato, data da inspeção e foto de capa.
  • Preencher o cadastro pela busca do Google Places e ajustar a posição arrastando o marcador no mapa.
  • Mostrar ao público o mapa dos estabelecimentos publicados, com agrupamento dos marcadores.
  • Publicar notícias com galeria, publicações e páginas institucionais pelo painel.
  • Organizar a mídia em pastas, com arquivos no storage S3.
  • Manter uma newsletter com descadastro por link.
  • Criar contas com verificação de e-mail por PIN, com acesso ao painel liberado por um administrador.

Não funcionais

  • Separar os domínios em módulos dentro de um único monólito.
  • Aplicar CSP, rate limit no login e no cadastro e validação de uploads pelo conteúdo do arquivo.
  • Registrar as ações administrativas com usuário, ação, alvo e IP.
  • Recusar a inicialização contra um banco sem migrações e bloquear comandos destrutivos fora do ambiente local.

Minha contribuição

Desenvolvi a plataforma como um monólito modular em Laravel, com seis domínios separados (site público, painel administrativo, identidade, contas, clientes de aplicação e área institucional). A peça central é o cadastro de estabelecimentos integrado à API do Google Places. A busca com autocomplete traz nome, endereço quebrado em campos, coordenadas, telefone, site e foto de capa, e ainda traduz as categorias do Google para as categorias sanitárias da plataforma. Arrastar o marcador no mapa dispara geocodificação reversa. A primeira versão da interface usava Vue com Pinia, e migrei tudo para Livewire 4, o que removeu cerca de 2 mil linhas e deixou a aplicação em uma única stack. Também construí o CMS de publicações e mídia com storage S3, o mapa público com clusterização em Leaflet e a camada de segurança, com CSP, rate limit no login e no cadastro, upload validado pelo conteúdo do arquivo, verificação de e-mail por PIN e registro das ações administrativas. Em produção, a aplicação se recusa a subir contra um banco sem migrações e bloqueia comandos que apagariam um banco que não seja local.

Destaques do projeto

  • 6domínios no mesmo monólito
  • 1 buscapreenche o cadastro do estabelecimento
  • −2 millinhas na troca de Vue por Livewire

Tecnologias

Laravel 12, Livewire 4, Alpine.js, PostgreSQL, Google Places API, Leaflet, Tailwind CSS, S3, Docker

Modelo de dados

Estabelecimentos, notícias, publicações, páginas e mídia registram quem os criou, e o log de auditoria guarda o id e o nome do usuário sem chave estrangeira, então o registro permanece mesmo se a conta for excluída.
Estabelecimentos, notícias, publicações, páginas e mídia registram quem os criou, e o log de auditoria guarda o id e o nome do usuário sem chave estrangeira, então o registro permanece mesmo se a conta for excluída.

Telas do sistema

Mapa de georreferenciamento com clusterização, filtros por selo e localização, e a lista sincronizada com a viewport.
Mapa de georreferenciamento com clusterização, filtros por selo e localização, e a lista sincronizada com a viewport.