Bem-vindo à documentação do sistema de sorteios! Este projeto é um sistema completo para criar e gerenciar sorteios de forma segura e eficiente, oferecendo funcionalidades para diferentes perfis de usuários: administradores, entidades e participantes. Este repositório está aberto à colaboração de desenvolvedores para expandir suas funcionalidades. Contribua e ajude-nos a melhorar!
Este sistema foi projetado para permitir que entidades criem sorteios e que usuários participem deles de forma justa, com funcionalidades robustas para segurança, relatórios e notificações automáticas.
- Cadastro e autenticação segura de usuários.
- Gerenciamento de perfis: diferentes permissões para participantes, entidades e administradores.
- Criação e gestão de sorteios: inclusão de itens, categorias e políticas de participação.
- Participação controlada: cada participante pode concorrer a um único item por sorteio.
- Condução de sorteios e notificações automáticas aos vencedores.
- Histórico e relatórios em PDF.
- Sistema de reclamações: com gerenciamento por administradores.
- Segurança aprimorada: criptografia de senhas, validação de documentos e controle de acesso.
- Node.js com Express.js para o backend.
- MySQL como banco de dados.
- JWT para autenticação e segurança.
- Bibliotecas auxiliares: bcrypt para criptografia de senhas, nodemailer para envio de emails e cron para agendamento de tarefas.
- Gerador de PDFs: para relatórios e listas de vencedores.
- TypeScript: para tipagem e manutenção do código.
git clone https://github.com/seu-usuario/sorteios-api.git
cd sorteios-api
npm install
Crie um arquivo .env
com as seguintes variáveis:
DATABASE_URL=
PORT=
MAIL_MAILER=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=
JWT_SECRET=
API_KEY=
AUTH_DOMAIN=
PROJECT_ID=
STORAGE_BUCKET=
MESSAGEIN_SENDER_ID=
APP_ID=
MEASUREMENT_ID=
Execute as migrações para configurar o banco de dados:
npm run vercel-build
npm start
A API estará disponível em http://localhost:3000
.
Requisição:
{
"name": "João Silva",
"email": "joao@email.com",
"password": "senhaSegura123"
}
Resposta:
{
"message": "Usuário registrado com sucesso!"
}
Requisição:
{
"name": "Sorteio de Natal",
"date": "2024-12-25",
"policy": "Um item por participante"
}
Resposta:
{
"message": "Sorteio criado com sucesso!",
"raffleId": "12345"
}
Requisição:
{
"raffleId": "12345",
"itemId": "67890"
}
Resposta:
{
"message": "Inscrição realizada com sucesso!"
}
Contribuições são bem-vindas! Aqui estão algumas maneiras de ajudar:
- Relatar bugs: Abra uma issue descrevendo o problema encontrado.
- Adicionar funcionalidades: Proponha melhorias através de pull requests.
- Melhorar a documentação: Sugerir ajustes ou exemplos mais claros.
Siga as boas práticas de desenvolvimento e garanta que seus commits sejam descritivos e organizados.