Skip to content

About

Sistema web do Bistrô 2026 (UCS CETEC): venda de ingressos com escolha de lugares, pagamento via Pix (Mercado Pago), painel de relatórios e votação de músicas. Python, Flask e SQLite.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

🍽️ Bistrô 2026

Sistema web do Bistrô 2026, projeto integrador da UCS CETEC que une os cursos técnicos de Informática, Administração e Gastronomia. O sistema cuida da venda de ingressos com escolha de lugares, do pagamento via Pix (Mercado Pago), da entrada no evento por QR code, de um painel administrativo de relatórios e de uma votação de músicas.

Feito em Python/Flask, com banco SQLite compartilhado entre os serviços.


✨ O que o sistema faz

🎟️ Venda de ingressos (mesas-ingressos)

  • Mapa de mesas e cadeiras, com reserva por dia do evento e cronômetro que segura o lugar enquanto o comprador preenche os dados.
  • Identificação do comprador por código de aluno de 6 caracteres, com controle de quantos ingressos ainda podem ser usados por aluno.
  • Três tipos de ingresso (gratuito, meia e inteira), com valor calculado pelo servidor.
  • Pagamento por Pix pela API de Pagamentos do Mercado Pago (Checkout Transparente): o sistema gera o QR code, a tela consulta o status do pagamento e a página de sucesso só abre depois da confirmação.
  • Webhook do Mercado Pago (POST /webhook/mercadopago) com validação da assinatura HMAC (x-signature) como fonte de verdade da aprovação.
  • Quando o Pix falha, expira ou é recusado, os lugares e os usos do código de aluno são liberados.
  • Ingresso em PDF com QR code, dia do evento e lugar (mesa e cadeira), enviado por e-mail depois do pagamento.
  • Validação na portaria: o staff lê o QR code e confirma a entrada com um PIN, e o ingresso fica marcado como utilizado.

📊 Painel Administrativo de Gestão (Dashboard)**

  • Acesso restrito por login de administrador.

  • Visão geral, ingressos vendidos, pagos, não pagos e restantes (inclusive por aluno), resumo financeiro, participantes por curso, restrições e ranking de músicas.

  • Manual do Usuário - Painel Administrativo de Relatórios, com instruções de acesso, filtros, relatórios e geração de PDF.

  • A plataforma inclui um Dashboard Administrativo dedicado, estruturado nos seguintes módulos:

  • Resumo de Participantes: Tabela em tempo real contendo a vinculação do aluno responsável, participante final, valor pago, data da compra, filtro por dia de evento e indicação do lugar/mesa reservado.
  • Visão Geral & Exportação: Filtros dinâmicos por curso técnico, aluno e participante, contando com emissão automatizada de Relatórios em PDF.
  • Métricas Financeiras: Indicadores consolidados de faturamento bruto total, total de ingressos confirmados e ticket médio, com detalhamento de conversão individual por responsável.
  • Controle de Vendas: Monitoramento detalhado de estoque de ingressos (Pagos, Não Pagos e Restantes no inventário geral).
  • Logística de Restrições Alimentares: Relatório direcionado à equipe de cozinha com a identificação exata de restrições (ex: intolerância à lactose, vegetariano, alergias) associadas ao respectivo assento do participante.
  • Engajamento Musical (Top 5 Músicas): Ranking apurado a partir da votação dos compradores para a definição da setlist tocada ao vivo durante o evento.

🎵 Votação de músicas (musicas)

  • Página para votar nas músicas do evento, com contagem de votos gravada no banco compartilhado.

🎯 Resultados e Impacto no Evento Real

O sistema foi colocado em produção e validado durante a execução do evento, alcançando os seguintes marcos:

  • Faturamento Processado: + R$ 15.000,00 em vendas diretas efetuadas na plataforma.
  • Volume de Vendas: +140 ingressos pagos confirmados, com um ticket médio de R$ 119,62 por participante.
  • Eficiência Operacional: Mapeamento completo e centralizado de 100% das restrições alimentares diretamente vinculado às mesas.
  • Gestão de Espaço: Cobertura de assentos mapeados no layout interativo por mesa/lugar sem duplicidade de reservas.

🖼️ Telas

🌐 Site do evento: sinestesiabistro.com.br

Página inicial do site do Bistrô
1. Site do evento

Mapa de mesas e cadeiras
2. Mapa de mesas e escolha do dia

Tela de pagamento via Pix
3. Pagamento via Pix

QR code do Pix para pagamento
4. QR code do Pix

Ingresso em PDF com QR code, dia do evento e lugar
5. Ingresso em PDF com QR code, dia e lugar

Tela de votação de músicas
6. Votação de músicas

Página de agradecimento após a votação
7. Página de agradecimento

Leitura do QR code do ingresso na portaria
8. Leitura do QR code na portaria

Painel Administrativo de Gestão (Dashboard)
9. Painel Administrativo de Gestão (Dashboard)


🛠️ Tecnologias

Python · Flask · SQLite · Flask-Login · Flask-WTF/WTForms · SDK do Mercado Pago · xhtml2pdf · qrcode · Gunicorn · HTML, CSS e JavaScript


📂 Estrutura

.
├── mesas-ingressos-app.py     # inicia ingressos + mapa de lugares (porta 8080)
├── relatorios-app.py          # inicia o painel de relatórios (porta 5003)
├── app_musicas.py             # inicia a votação de músicas (porta 4444)
├── criar_admin_relatorios.py  # cria um administrador para o painel
├── baixar_musicas.py          # downloader incremental de músicas
├── mesas-ingressos/           # backend (ingressos, mapa_mesas) e frontend
├── relatorios/                # backend e frontend do painel
├── musicas/                   # aplicação da votação
├── docs/img/                  # capturas de tela usadas neste README
├── requirements.txt
└── .env.example

Os três serviços leem o mesmo arquivo .env da raiz e usam o mesmo banco SQLite (database/bistro.db, criado automaticamente na primeira execução).


🚀 Como rodar

Requisitos: Python 3 e pip.

git clone https://github.com/gmatte-dev/Bistro-Sinestesia.git
cd Bistro-Sinestesia
git checkout deploy

python -m venv .venv
source .venv/bin/activate        # no Windows: .venv\Scripts\activate
pip install -r requirements.txt

cp .env.example .env             # no Windows: copy .env.example .env
                                 # depois preencha os valores (veja abaixo)

Iniciar cada serviço, cada um em um terminal:

python mesas-ingressos-app.py    # http://127.0.0.1:8080
python relatorios-app.py         # http://127.0.0.1:5003
python app_musicas.py            # http://127.0.0.1:4444

Para acessar o painel, crie um administrador primeiro:

python criar_admin_relatorios.py

🔐 Variáveis de ambiente

Copie .env.example para .env. O arquivo .env está no .gitignore e nunca deve ser enviado ao repositório.

Variável Para que serve
SECRET_KEY Chave de sessão do Flask na venda de ingressos
RELATORIOS_SECRET_KEY Chave de sessão do painel de relatórios
MP_ACCESS_TOKEN Token privado do Mercado Pago (somente no backend)
MP_PUBLIC_KEY Chave pública do Mercado Pago
MP_WEBHOOK_SECRET Segredo usado para validar a assinatura do webhook
MAIL_SERVER, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_DEFAULT_SENDER Envio do ingresso por e-mail (SMTP)
STAFF_PIN PIN usado pela portaria para confirmar a entrada
CSV_ALUNOS Caminho, a partir de mesas-ingressos/, do CSV com os alunos e seus códigos
MUSICAS_REDIRECT_URL Endereço da votação de músicas, para onde o comprador é enviado depois do pagamento confirmado
HOME_REDIRECT_URL Endereço da página inicial do evento, usado no link da página de agradecimento da votação

Opcionais: BISTRO_DATABASE_PATH, INGRESSOS_HOST, INGRESSOS_PORT, RELATORIOS_HOST, MUSICAS_HOST, MUSICAS_PORT e FLASK_DEBUG.

Para testar pagamentos, use as credenciais de teste do Mercado Pago. Para o webhook funcionar, a URL /webhook/mercadopago precisa ser pública e estar cadastrada no painel do Mercado Pago.


🛒 Fluxo de compra

  1. O comprador informa o código de aluno e escolhe os lugares e a data no mapa.
  2. O sistema reserva os lugares por tempo limitado.
  3. O comprador preenche os dados de cada ingresso (nome, tipo, e-mail, telefone).
  4. O sistema cria o pagamento Pix e mostra o QR code.
  5. O Mercado Pago avisa o resultado pelo webhook, e o sistema confirma o pagamento.
  6. O ingresso em PDF, com QR code, é enviado por e-mail.
  7. Na portaria, o QR code é validado e o ingresso passa a constar como utilizado.

👥 Equipe

Projeto desenvolvido por alunos do Curso Técnico de T.I - CETEC/UCS.


📄 Licença

Veja os arquivos LICENSE dentro de cada módulo.

About

Sistema web do Bistrô 2026 (UCS CETEC): venda de ingressos com escolha de lugares, pagamento via Pix (Mercado Pago), painel de relatórios e votação de músicas. Python, Flask e SQLite.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages