
Estudo de caso PassNow
Da página do evento até à entrada, um bilhete no telemóvel.
- Cliente
- PassNow
- Tipo
- Plataforma de bilhética
- Papel
- Produto e desenvolvimento full-stack
- Ano
- 2026
01Visão geral
Uma plataforma de venda e gestão de bilhetes: catálogo público e checkout para quem compra, painéis para organizadores, promotores e administradores, e um leitor de check-in que continua a funcionar offline. Uma única base de código para a web, uma PWA e uma app Android.
02O problema
Um bilhete passa por muitas mãos: quem compra e paga, o organizador que precisa de acompanhar as vendas, o promotor que recebe comissão, a equipa à porta. Qualquer um deles pode ser o ponto fraco, e um bilhete que pode ser copiado ou lido duas vezes não vale nada.
02A abordagem
Pôr todas as regras no servidor e tratar o bilhete como um segredo. O frontend nunca toca na base de dados; é a API que decide quem pode ver, vender, levantar pagamentos ou deixar entrar, e cada bilhete só pode ser usado uma vez, mesmo quando a porta não tem rede.
03A construção
O que foi de facto construído
- 01
Um frontend Next.js 16 que comunica apenas com uma API REST, e um backend NestJS 11 com Prisma e PostgreSQL que é o único processo com o URL da base de dados: 25 módulos sobre um esquema de 48 modelos, com JWT de curta duração e refresh tokens rotativos e revogáveis em cookies HTTP-only.
- 02
Um checkout em quatro passos com PIX, cartão de crédito e de débito através da Canvi. O número do cartão e o CVV seguem diretamente para o fornecedor; a PassNow guarda apenas a marca e os quatro últimos dígitos. Os tokens dos bilhetes ficam guardados como hash SHA-256 com pepper e uma cópia cifrada em AES-256-GCM para apresentação autorizada, e quem compra sem conta abre o bilhete com uma chave de acesso.
- 03
Um check-in que não deixa o mesmo bilhete entrar duas vezes: a primeira leitura é uma atualização condicional dentro de uma transação, o operador tem de pertencer à organização do evento e cada entrada fica registada num log de auditoria. Sem rede, as leituras ficam em fila no IndexedDB e são sincronizadas mais tarde, com as colisões marcadas como conflito.
- 04
Perfis por organização (proprietário, administrador, financeiro, marketing, check-in, apoio), promotores e levantamentos, e uma área de administração. O início de sessão com Google está reservado a compradores. A mesma aplicação é distribuída como PWA com aviso de atualização e como APK Android através do Capacitor.
Tecnologia
- Next.js
- TypeScript
- React
- Tailwind CSS
- NestJS
- Prisma
- PostgreSQL
- Zod
- Capacitor
- Docker
04A experiência





05Em que ponto está
A versão 1.0.0 foi lançada em junho de 2026, com PWA e APK Android assinado. As capturas de ecrã vêm de um build local a correr com dados de demonstração.
