Este é um sistema desenvolvido em Django para a gestão de check-in em eventos. A aplicação permite cadastrar participantes, gerar QR Codes únicos para cada um, gerenciar eventos e realizar o check-in de forma rápida utilizando a câmera de um computador ou totem.
- Gestão de Participantes: Cadastro manual ou em massa via upload de arquivo CSV.
- QR Codes Permanentes: Geração automática de um QR Code único para cada participante no momento do cadastro.
- Check-in Versátil em Tempo Real: Página de "totem" que permite o registro de presença por QR Code (usando a câmera com espelhamento inteligente para desktops) ou manualmente, através do número de matrícula do participante.
- Gestão de Eventos: Crie eventos e inscreva participantes a partir da base geral, com controle de vagas e listas de presentes, inscritos e de espera.
- Sistema de E-mail Completo:
- Envio Automático: O QR Code é enviado por e-mail assim que um participante é cadastrado manualmente.
- Envio Inteligente: Botão para enviar e-mails apenas para participantes com envios pendentes.
- Envio em Massa e Individual: Opções para reenviar o e-mail para todos os participantes ou para um único indivíduo, conforme a necessidade.
- Rastreamento de Envios: O sistema registra e exibe o status de envio do e-mail para cada participante.
- Exportação de Dados: Exporte a lista de presença de um evento para um arquivo CSV.
- Suporte a HTTPS local: Roda em um servidor de desenvolvimento seguro para permitir o uso da câmera em navegadores modernos.
- Backend: Python, Django
- Frontend: HTML, Tailwind CSS
- Bibliotecas Python:
pandaspara manipulação de arquivos CSV.qrcodeepillowpara geração das imagens de QR Code.django-extensions,werkzeug,pyOpenSSLpara rodar um servidor de desenvolvimento com HTTPS.python-dotenvpara gerenciar variáveis de ambiente de forma segura.
Antes de começar, garanta que você tem os seguintes softwares instalados:
- Python 3.8+
- Git
pipevenv(geralmente inclusos no Python)
Siga os passos abaixo para configurar o ambiente de desenvolvimento.
1. Clone o Repositório
git clone <url-do-seu-repositorio>
cd <nome-da-pasta-do-projeto>2. Crie e Ative um Ambiente Virtual
# Para Windows
python -m venv venv
.\venv\Scripts\activate
# Para macOS/Linux
python3 -m venv venv
source venv/bin/activate3. Instale as Dependências
Crie um arquivo requirements.txt na raiz do projeto com o seguinte conteúdo:
Django
pandas
qrcode
pillow
django-extensions
werkzeug
pyOpenSSL
python-dotenv
Em seguida, instale todas as dependências com um único comando:
pip install -r requirements.txt4. Execute as Migrações do Banco de Dados
python manage.py migrate5. Crie um Superusuário
python manage.py createsuperuser6. Gere o Certificado SSL Local (para HTTPS)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj "/CN=localhost"Para testar o envio de e-mails, configure o sistema para usar um servidor SMTP do Gmail.
1. Gere uma "Senha de App" no Google Por segurança, o Google exige uma senha específica para aplicações.
- Ative a Verificação em Duas Etapas na sua Conta Google.
- Vá para a página de Senhas de App.
- Selecione "E-mail" como app e "Computador Windows" como dispositivo, e clique em Gerar.
- Copie a senha de 16 caracteres gerada. Você usará esta senha, e não a sua senha principal do Gmail.
2. Crie um Arquivo .env para as Credenciais
Nunca coloque senhas diretamente no código.
- Na raiz do projeto, crie um arquivo chamado
.env. - Adicione suas credenciais a ele:
# .env EMAIL_HOST_USER='seu-email@gmail.com' EMAIL_HOST_PASSWORD='sua-senha-de-app-de-16-caracteres'
3. Adicione os Arquivos Sensíveis ao .gitignore
Garanta que suas chaves e senhas não sejam enviadas para o Git. Abra ou crie o arquivo .gitignore e adicione as seguintes linhas:
# Arquivos de ambiente
.env
# Certificados SSL de desenvolvimento
*.pem
4. Configure o settings.py
No seu arquivo settings.py, adicione o código para carregar as variáveis de ambiente e configurar o serviço de e-mail.
# settings.py
import os
from dotenv import load_dotenv
from pathlib import Path # Certifique-se que Path está importado
# ...
BASE_DIR = Path(__file__).resolve().parent.parent
# Carrega as variáveis de ambiente do arquivo .env
load_dotenv(os.path.join(BASE_DIR, '.env'))
# ...
# CONFIGURAÇÃO DE E-MAIL
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER1. Inicie o Servidor de Desenvolvimento
O endereço 0.0.0.0 torna o servidor acessível para outros dispositivos na mesma rede (como seu celular).
python manage.py runserver_plus --cert-file cert.pem --key-file key.pem 0.0.0.0:80002. Acesse a Aplicação
- No seu computador:
https://localhost:8000 - Em outro dispositivo na mesma rede:
https://<ip-do-seu-computador>:8000
Aviso de Segurança: O navegador exibirá um alerta de "conexão não particular". Isso é esperado. Clique em "Avançado" e depois em "Ir para o site (não seguro)" para continuar.
3. Painel de Administração
Acesse em https://localhost:8000/admin e faça login com o superusuário criado.


