Sistema completo de venda de ingressos com frontend React e backend Node.js seguro.
- ✅ Autenticação segura com JWT
- ✅ Cadastro e login de usuários
- ✅ Listagem de eventos
- ✅ Detalhes de eventos
- ✅ Compra de ingressos
- ✅ Dashboard com ingressos do usuário
- ✅ Histórico de compras
- ✅ Validação de CPF
- ✅ Rate limiting
- ✅ Proteção contra SQL injection
- ✅ Criptografia de senhas
- ✅ CORS configurado
- ✅ Validação de dados
O backend implementa as seguintes medidas de segurança:
- Autenticação JWT com refresh tokens
- Hash de senhas com bcrypt (12 rounds)
- Validação de dados com Zod
- Rate limiting para prevenir DDoS
- Helmet para headers de segurança HTTP
- CORS configurado
- Prisma ORM (proteção contra SQL injection)
- Validação de CPF
- Sanitização de inputs
- Logging de segurança
- Proteção de rotas sensíveis
- Transações de banco de dados
- Entre na pasta do servidor:
cd server- Instale as dependências:
npm install- Configure as variáveis de ambiente:
cp .env.example .envEdite o arquivo .env e configure as variáveis necessárias.
- Configure o banco de dados:
npm run prisma:generate
npm run prisma:migrate- Inicie o servidor:
npm run devO servidor estará rodando em http://localhost:3001
- Na raiz do projeto, instale as dependências:
npm install- Configure as variáveis de ambiente:
cp .env.example .env- Inicie o servidor de desenvolvimento:
npm run devO frontend estará rodando em http://localhost:8080
.
├── server/ # Backend
│ ├── src/
│ │ ├── controllers/ # Controladores
│ │ ├── middleware/ # Middlewares
│ │ ├── routes/ # Rotas
│ │ ├── utils/ # Utilitários
│ │ └── index.ts # Entry point
│ ├── prisma/
│ │ └── schema.prisma # Schema do banco de dados
│ └── package.json
├── src/ # Frontend
│ ├── components/ # Componentes React
│ ├── pages/ # Páginas
│ ├── lib/ # Bibliotecas e utilitários
│ └── App.tsx # App principal
└── package.json
POST /api/auth/register- Registrar novo usuárioPOST /api/auth/login- Fazer loginPOST /api/auth/refresh- Renovar token
GET /api/events- Listar eventosGET /api/events/:id- Obter evento por IDPOST /api/events- Criar evento (requer autenticação)PUT /api/events/:id- Atualizar evento (requer autenticação)DELETE /api/events/:id- Deletar evento (requer autenticação)
POST /api/orders- Criar pedido (requer autenticação)GET /api/orders- Listar pedidos do usuário (requer autenticação)GET /api/orders/:id- Obter pedido por ID (requer autenticação)
GET /api/tickets- Listar ingressos do usuário (requer autenticação)GET /api/tickets/:id- Obter ingresso por ID (requer autenticação)GET /api/tickets/code/:code- Obter ingresso por código (requer autenticação)
PORT: Porta do servidor (padrão: 3001)FRONTEND_URL: URL do frontend para CORSJWT_SECRET: Secret para JWT access tokensJWT_REFRESH_SECRET: Secret para JWT refresh tokensDATABASE_URL: URL do banco de dadosNODE_ENV: Ambiente (development/production)
VITE_API_URL: URL da API (padrão: http://localhost:3001/api)
- Altere os secrets JWT para valores aleatórios e seguros
- Use PostgreSQL em vez de SQLite
- Configure HTTPS
- Configure um reverse proxy (nginx)
- Configure firewall adequadamente
- Monitore logs de segurança
- Use variáveis de ambiente seguras
- Configure backup do banco de dados
Este projeto é privado e confidencial.
Para desenvolvimento, certifique-se de ter:
- Node.js 18+
- npm ou yarn
- Banco de dados configurado
Este é um projeto privado. Para contribuições, entre em contato com o administrador do projeto.