EJC Neves
Um app web instalável usado por mais de 300 jovens da comunidade do EJC de Neves. Todo dia ele prepara a leitura do Evangelho e cinco perguntas de meditação geradas com o Claude e, em volta desse hábito, traz a agenda das pastorais, um exame de consciência privado e uma camada social construída sobre as próprias pastorais e círculos do EJC.
- Cliente
- EJC Neves · João Pessoa, Brasil
- Tipo
- Webapp
- Feito com
- Next.js, React, TypeScript, Supabase (Postgres, Auth, RLS, Storage), Claude API, Vercel Cron, Web Push, PWA, IndexedDB, Tailwind CSS
- Next.js
- Código próprio
- Feito com IA

O que eu fiz
A comunidade compartilhava as leituras do dia e as datas dos eventos em vários grupos de mensagens, e muita coisa se perdia no caminho. Desenhei e construí um lugar só para isso, de ponta a ponta: produto, interface, banco de dados, pipeline de IA e deploy. É um app Next.js (App Router, Server Components e Server Actions) na Vercel, com Supabase para Postgres, autenticação e armazenamento. Ele se instala no celular como PWA, com notificações Web Push.
O coração é um pipeline de conteúdo que roda sem mim. Toda noite, uma tarefa agendada busca a meditação do dia seguinte naquela data exata, envia o Evangelho para a API do Claude gerar cinco perguntas, valida o resultado e publica o dia. Quando as pessoas abrem o app de manhã, está tudo pronto.
A segurança fica no banco, não só na interface. Toda tabela tem row-level security, leituras entre usuários passam por funções SECURITY DEFINER que devolvem só o que deve ser público, e o que não deve ser visto nem é buscado, em vez de apenas escondido na tela.
O que ele faz
Meditação diária, gerada com o Claude
Às 19h, um cron da Vercel busca na fonte a meditação do dia seguinte, daquela data exata. Depois pede ao Claude cinco perguntas de múltipla escolha respondíveis só com o Evangelho, com alternativas erradas plausíveis. O que precisa valer sempre é garantido no código, não no prompt. A posição da resposta certa é definida depois da geração, com 25% para cada letra. Uma segunda passada reescreve as alternativas erradas sempre que a certa sai visivelmente mais longa que as outras. Uma validação barra dias malformados (menos de cinco perguntas, alternativa faltando, mais de uma correta) antes da publicação automática, e um dia que alguém já respondeu nunca é gerado de novo. Às 6h, outra tarefa confere se o dia está no ar, e revisores aprovam ou rejeitam cada pergunta por um link protegido por token.
Dias seguidos, ranking e medalhas
Cada dia em que a pessoa conclui a meditação soma à sua sequência, mostrada com um foguinho na tela inicial. Se perder um dia, volta a zero. A sequência é calculada na hora a partir do histórico de participação, e não lida de um contador guardado, então o ranking mostra sempre quem está de fato participando. O ranking tem duas abas: a comunidade inteira (top 100, com a sua linha fixada no fim se você estiver fora) e só os seus amigos. Um pódio destaca os três primeiros, e o empate é decidido pela maior sequência já feita e depois por ordem alfabética. Além disso, 11 medalhas premiam a constância, não a competição: o primeiro Evangelho, sequências de 7, 15, 30, 100 e 365 dias, de 50 a 365 Evangelhos meditados e 500 respostas certas. O critério de cada medalha fica guardado como dado no banco, e a medalha é concedida no servidor quando o dia é concluído, então não dá para forjá-la pelo navegador.
Amizades construídas sobre a estrutura da comunidade
Cada perfil tem um @usuário único, o círculo do EJC da pessoa (por ano e cor) e as pastorais de que ela participa. Assim as pessoas reconhecem quem serve com elas e se conectam a partir daí, com pedidos de amizade, perfis públicos e notificações push. Os perfis públicos devolvem só o que é para compartilhar, sem e-mail, telefone ou taxa de acerto.
Agenda das pastorais e reserva de salas
Eventos públicos para a comunidade e internos visíveis só para coordenadores, controlados por papel. Os coordenadores reservam as salas da paróquia por faixa de horário. Um gatilho no Postgres rejeita reservas que se sobrepõem, com o horário de fim exclusivo, para 8h–12h não conflitar com 12h–14h. Uma visão mensal mostra quais salas estão livres, parcialmente reservadas ou cheias.
Um exame de consciência privado
O que a pessoa escreve aqui são os pecados que vai levar à confissão, por isso o texto nunca sai do celular: nem servidor, nem log, nem criptografado. Ele fica no IndexedDB, num banco separado por conta, e o módulo de armazenamento não tem nenhum caminho até a rede. Títulos e anotações ficam em object stores separadas, então a tela de lista nem lê as anotações. O app pede armazenamento persistente ao navegador para reduzir o risco de os dados serem apagados.
Liturgia diária
As leituras completas do dia (primeira leitura, salmo e Evangelho) e um guia das respostas da assembleia para os comentaristas da Missa.
Estudo bíblico em grupo
Um plano de leitura de um capítulo por dia, rezado com a Lectio Divina. Os membros entram no grupo do estudo, marcam cada dia como feito e veem quem está lendo junto, sem chat.
Vamos trabalhar juntos
Um site em Webflow ou Astro, um produto completo ou um agente de IA: me conta o que você tem em mente.
Paraíba, Brasil · trabalhando para o mundo todo