Ducktix
Plataforma de ingressos com lotes, pedidos, cupons e check-in, modelada em PostgreSQL para Banco de Dados II.

Sobre o projeto
Trabalho da disciplina de Banco de Dados II na UDESC que virou um produto completo: organizadores publicam eventos presenciais, online ou híbridos, vendem ingressos em lotes e fazem o check-in na porta; participantes compram, aplicam cupons e recebem os ingressos.
A entrega cobriu o caminho inteiro do banco: modelo conceitual, modelo lógico com dicionário de dados, DDL e a aplicação usando esse esquema. As regras que não podem ser quebradas, como não vender mais do que existe ou não ter evento online com endereço, ficam em CHECK constraints no PostgreSQL.
A venda trava a linha do lote com SELECT ... FOR UPDATE dentro de uma transação, para que dois compradores disputando a última vaga não passem os dois. Em produção o banco é o Neon, com um driver que mantém a sessão para essas transações.
Leia o artigo: SQLO que foi entregue
- Modelo conceitual, lógico e DDL documentados com o porquê de cada mudança
- Regras de negócio como CHECK constraints no banco e no schema do Drizzle
- Controle de estoque concorrente com SELECT ... FOR UPDATE
- Valores em centavos e datas com fuso horário
- Cupons por evento, pagamento simulado e emissão de ingressos com QR Code
- Check-in lendo o QR Code pela câmera
- Painel do organizador com ocupação e receita por lote
Como funciona
- Organizadores
- Participantes
- Next.js
- Server actions
- Drizzle ORM
- PostgreSQL (Neon)
- CHECK constraints
- SELECT ... FOR UPDATE
- Vercel Blob
- Resend (e-mail)
- QR Code