Sistema de check-in por QR Code desenvolvido para controle de uso de vouchers de refeição em ambiente hoteleiro.
O projeto foi criado como uma solução prática para um problema real: pessoas cadastradas em uma planilha apresentavam um QR Code na hora da refeição, e o sistema validava o voucher e registrava o uso para controle operacional.
O QR Voucher Check-in é uma aplicação Node.js/Express integrada ao Google Sheets.
A solução permite validar vouchers por QR Code, consultar os dados em uma planilha e registrar o check-in quando o voucher é utilizado.
O projeto também chegou a ser testado em ambiente de deploy com Docker/EasyPanel.
Em um hotel, havia a necessidade de controlar quais pessoas já haviam utilizado seus vouchers de refeição.
A conferência manual podia gerar erros, retrabalho ou dificuldade para acompanhar o uso dos vouchers em tempo real.
A solução criada permite:
- manter os dados dos vouchers em uma planilha;
- validar o QR Code apresentado na refeição;
- registrar o uso do voucher;
- evitar reutilização indevida;
- centralizar o controle em uma base simples com Google Sheets.
- Validação de voucher por QR Code
- Integração com Google Sheets
- Registro de check-in
- Controle de status do voucher
- Interface de leitura/validação
- Autenticação básica para acesso à área de scan
- Configuração por variáveis de ambiente
- Suporte a execução local e via Docker
- Node.js
- Express
- Google Sheets API
- JavaScript
- HTML
- Docker
- Os dados das pessoas e vouchers são cadastrados em uma planilha.
- Cada registro possui um token associado a um QR Code.
- No momento da refeição, o QR Code é apresentado.
- O sistema valida o código recebido.
- Se o voucher for válido, o check-in é registrado.
- A planilha é atualizada com status e data/hora de uso.
checkin/
├── scan/
│ └── index.html
├── server.js
├── package.json
├── Dockerfile
├── .dockerignore
├── .env.example
├── .gitignore
└── README.md
Crie um arquivo .env com base no .env.example.
Variáveis obrigatórias para o fluxo real:
GOOGLE_SA_JSON_B64=
EVENTS_DB_SHEET_ID=Variáveis operacionais recomendadas:
ADMIN_USER=
ADMIN_PASS=
EVENTS_DB_TAB=
PORT=3000GOOGLE_SA_JSON_B64: credencial da service account do Google codificada em Base64.EVENTS_DB_SHEET_ID: ID da planilha utilizada como base de dados.ADMIN_USER: usuário para acesso à área de scan.ADMIN_PASS: senha para acesso à área de scan.EVENTS_DB_TAB: aba da planilha utilizada pelo sistema.PORT: porta em que a aplicação será executada.
Nunca inclua credenciais reais, tokens, QR Codes reais ou dados de hóspedes no repositório.
- Node.js instalado
- Conta de serviço configurada no Google Cloud
- Google Sheets API habilitada
- Planilha do Google Sheets configurada no formato esperado pelo projeto
npm installPORT=3000 npm startA aplicação ficará disponível em:
http://localhost:3000
GET /Retorna uma resposta simples para validar que o servidor está ativo.
GET /scanÁrea protegida por autenticação básica para leitura/validação de vouchers.
POST /api/checkinEndpoint responsável por receber o QR Code, validar o voucher e registrar o uso na planilha.
O projeto possui Dockerfile para execução em container, usado em testes de deploy.
docker build -t checkin-qrcode .docker run --rm -p 3000:80 --env-file .env checkin-qrcodePara execução em Docker, ajuste a variável
PORTconforme a porta esperada no container.
Durante a revisão do projeto, foram validados os seguintes pontos:
- Sintaxe do
server.js; - Inicialização local do servidor;
- Resposta da rota
/; - Proteção da rota
/scan; - Rejeição de QR Code malformado em
/api/checkin; - Ausência de arquivos
.envcom credenciais reais; - Ausência de service account real no repositório;
- Ausência de QR Codes reais ou dados reais de hóspedes;
- Criação de
.env.example; - Criação de
.gitignore; - Criação de
.dockerignore.
O Dockerfile foi revisado, mas o build não foi validado localmente porque o Docker daemon não estava ativo no ambiente de teste.
Este projeto pode depender de credenciais sensíveis e dados pessoais, dependendo da planilha utilizada.
Antes de publicar ou reutilizar este repositório, verifique se não existem:
- arquivos
.envcom valores reais; - credenciais de service account;
- tokens reais;
- QR Codes reais;
- nomes reais de hóspedes ou participantes;
- planilhas reais expostas;
- arquivos compactados contendo dados sensíveis.
Projeto desenvolvido como solução prática para uma necessidade real de controle operacional.
O repositório foi mantido como registro de um projeto aplicado, envolvendo validação por QR Code, integração com Google Sheets, controle de uso de vouchers e teste de deploy com Docker/EasyPanel.
- Criar dashboard administrativo
- Exibir total de vouchers utilizados
- Adicionar logs de auditoria
- Melhorar feedback visual da tela de scan
- Adicionar testes automatizados
- Criar dados fictícios para demonstração pública
- Documentar o formato esperado da planilha
- Suportar múltiplos eventos, refeições ou unidades
Este repositório não deve conter dados reais de hóspedes, participantes, vouchers ou credenciais.
Para demonstração pública, utilize apenas dados fictícios.