Catedral - Uma comunidade viva e presente

Projeto

Catedral - Uma comunidade viva e presente

Catedral Santo Antonio e uma plataforma web institucional com duas frentes: um site publico para a comunidade e um painel administrativo para gestao de conteudo. O projeto foi desenvolvido para transformar um site institucional estatico em uma experiencia digital viva, atualizavel e alinhada com a identidade visual da Catedral.

A solucao une uma Home publica editorial, rotas dinamicas de conteudo e um dashboard protegido, permitindo que a equipe administrativa gerencie informacoes importantes sem depender de alteracoes diretas no codigo.

Next.jsReactTypeScriptTailwind CSSPrismaPostgreSQLShadcn

Informações sobre o projeto

Problema que o projeto resolve

Instituições com comunicação frequente precisam atualizar horários, notícias, páginas, histórias, banners e conteúdos da Home com agilidade. Em um site tradicional, cada mudança tende a depender de um desenvolvedor, o que torna a rotina mais lenta e dificulta manter a comunicação atualizada.

Este projeto resolve esse problema criando um ambiente em que conteúdo institucional e pastoral pode ser administrado por um painel próprio, com persistência em banco de dados, validação, autenticação e publicação no site público.

Para que serve

O sistema serve para centralizar a presença digital da Catedral:

  • Apresenta a identidade institucional para visitantes;
  • Organiza informações públicas como agenda, notícias, histórias e páginas;
  • Permite publicar conteúdo editorial sem mexer no código;
  • Oferece um painel administrativo para gestão do site;
  • Protege operações sensíveis com autenticação e controle de usuários.

Site público

O site público foi construído como uma experiência visual completa, com foco em acolhimento, conteúdo institucional e acesso rápido a informações importantes.

Ele inclui:

  • Home dinâmica conectada ao banco de dados;
  • Hero institucional configurável;
  • Banners e destaques;
  • Programação e agenda pública;
  • Notícias e histórias com páginas de listagem e detalhe;
  • Posts publicados por slug;
  • Páginas públicas criadas no painel;
  • Navegação integrada ao conteúdo publicado;
  • Rodapé institucional alimentado por conteúdo gerenciável.

A Home usa uma composição server-first no Next.js, buscando os dados no servidor e renderizando seções públicas a partir das informações cadastradas no painel.

Painel administrativo

O painel administrativo é uma área autenticada para gerenciar o conteúdo do site. Ele valida a sessão e o usuário ativo no servidor antes de liberar o dashboard.

Principais módulos implementados:

  • Gestão da Home por seções e itens;
  • Edição do Hero e do vídeo principal;
  • CRUD de banners, destaques, agenda, notícias e histórias;
  • Gestão de páginas públicas com status, visibilidade, SEO e preview;
  • Gestão de posts com editor rico, categorias, tags, imagem destacada e publicação;
  • CRUD de usuários administrativos com papéis, status, foto e paginação;
  • Uploads de imagens e vídeos nos fluxos que exigem mídia;
  • Feedbacks de sucesso, erro e carregamento com toasts.

Principais funcionalidades

  • Site público dinâmico com conteúdo persistido.
  • Dashboard protegido por login.
  • Editor rico com TipTap para páginas e posts.
  • Server Actions para operações de criação, edição, publicação e exclusão.
  • Data access separado da interface.
  • Validação com Zod e React Hook Form.
  • Upload de imagens para conteúdos da Home e usuários via Cloudinary.
  • Upload local para imagem destacada de posts.
  • Upload assinado de vídeo para o Hero via Cloudinary.
  • Suporte a vídeo do YouTube no card de mensagem mais recente.
  • Controle de papéis de usuário (ADMIN, LEADERSHIP, STAFF e MEMBER).
  • Registro de eventos de autenticação e bloqueio temporário após falhas de login.
  • Rotas públicas dinâmicas para páginas, posts, notícias e histórias.

Tecnologias utilizadas

Área Tecnologias
Front-end e full-stack Next.js 16, React 19, TypeScript
Interface Tailwind CSS 4, componentes locais no padrão shadcn/ui, Radix UI, Vaul Drawer
Formulários React Hook Form, Zod, @hookform/resolvers
Editor de conteúdo TipTap
Animações Framer Motion
Autenticação Auth.js / NextAuth v5, bcrypt
Banco de dados PostgreSQL, Prisma 7, @prisma/adapter-pg
Uploads e mídia Cloudinary, upload local para posts
Feedback de UI Sonner
Sanitização sanitize-html
Qualidade ESLint, TypeScript, Prisma CLI

Decisões técnicas

Uma das principais decisões foi manter o projeto com arquitetura server-first. As páginas carregam dados no servidor sempre que possível, enquanto componentes cliente ficam restritos a interações, formulários, estados locais, drawer, motion e editores.

O fluxo de dados segue uma divisão clara:

UI → Server Action → Data Access → Prisma → PostgreSQL

Essa separação ajuda a manter o código mais previsível: a interface não acessa o banco diretamente, as Server Actions concentram validação e autorização, e as consultas ficam isoladas em arquivos de data access.

Outras decisões importantes:

  • Co-localizar componentes, actions, schemas e data access por módulo do dashboard;
  • Usar Zod tanto para validar formulários quanto para proteger entradas no servidor;
  • Proteger o dashboard no layout administrativo, validando sessão e usuário ativo antes da renderização;
  • Registrar eventos de autenticação para dar rastreabilidade ao login;
  • Usar modelos flexíveis (HomeSection e HomeContentItem) para permitir evolução da Home sem criar uma tabela nova para cada bloco visual;
  • Preservar uma experiência pública visualmente rica sem sacrificar a manutenção do conteúdo;
  • Manter componentes reutilizáveis de UI em src/components/ui, seguindo o estilo shadcn/ui adotado no projeto.

Meu papel no desenvolvimento

Atuei na construção full-stack do projeto, cobrindo desde a arquitetura da aplicação até a implementação das telas públicas e administrativas.

Meu trabalho envolveu:

  • Estruturar o projeto com Next.js App Router e TypeScript;
  • Modelar o banco de dados com Prisma e PostgreSQL;
  • Implementar autenticação administrativa com Auth.js;
  • Criar o painel protegido e seus módulos de conteúdo;
  • Desenvolver os fluxos de criação, edição, publicação, preview, exclusão e upload;
  • Integrar o conteúdo administrado ao site público;
  • Organizar a arquitetura em camadas para manter o código sustentável;
  • Cuidar da experiência de uso com feedbacks, loading states, responsividade e componentes reutilizáveis;
  • Documentar o estado real do projeto sem expor credenciais ou detalhes sensíveis.

Resultado

O resultado é uma plataforma institucional completa, com um site público visualmente trabalhado e um painel administrativo funcional para manutenção de conteúdo. O projeto demonstra domínio de desenvolvimento full-stack moderno com Next.js, integração com banco de dados, autenticação, upload de mídia, editor de conteúdo e organização de código orientada à manutenção.