Trabalho final da turma FS44 - Digital College. Sistema de gerenciamento de eventos, artistas e vendas de ingressos.
Antes de começar, você precisará ter as seguintes ferramentas instaladas em sua máquina:
Siga os passos abaixo para configurar e executar o projeto localmente.
-
Clone o repositório:
git clone [https://github.com/seu-usuario/api-casadeshow.git](https://github.com/seu-usuario/api-casadeshow.git) cd api-casadeshow -
Configure as variáveis de ambiente: Crie o arquivo
.enva partir do exemplo.cp .env.example .env
-
Ajuste o arquivo
.env: Abra o arquivo.enve preencha com suas credenciais e chaves.# Banco de Dados MYSQL_ROOT_PASSWORD=sua_senha_forte MYSQL_DATABASE=casadeshow_db DATABASE_URL="mysql://root:sua_senha_forte@db:3306/casadeshow_db" # Autenticação SECRET_KEY_JWT=sua_chave_secreta # Redis REDIS_HOST=redis REDIS_PORT=6379
-
Inicie os containers: Com o Docker em execução, suba os serviços (API, Banco de Dados, Redis).
docker-compose up -d
A aplicação estará disponível em http://localhost:8080 (ou a porta que você configurou).
POST /api/auths/login- Realizar loginPATCH /api/auths/change-password- Alterar senha
POST /api/users- Criar usuárioGET /api/users- Listar usuários
GET /api/events- Listar eventosGET /api/events/:id- Buscar evento por IDPOST /api/events- Criar eventoPATCH /api/events/:id- Atualizar eventoDELETE /api/events/:id- Remover evento
GET /api/artists- Listar artistasPOST /api/artists- Criar artistaPATCH /api/artists/:id- Atualizar artista
POST /api/sales- Realizar venda
- Swagger UI:
http://localhost:8080/api-docs - Queue Dashboard (BullMQ):
http://localhost:8080/admin/queues- Usuário:
admin - Senha:
senha123
- Usuário:
A estrutura do projeto segue uma arquitetura em camadas para separação de responsabilidades.
src/
config/ # Configurações da aplicação
database.ts # Conexão e setup do banco de dados
env.ts # Variáveis de ambiente centralizadas
routes/ # Definição das rotas (endpoints)
user.routes.ts
auth.routes.ts
# ...outras rotas
controllers/ # Controladores: recebem requisições das rotas
user.controller.ts
auth.controller.ts
services/ # Regras de negócio
user.service.ts
auth.service.ts
repositories/ # Acesso ao banco de dados (Prisma)
user.repository.ts
middleware/ # Middlewares globais ou específicos
auth.middleware.ts # Verificação de autenticação
error.middleware.ts # Tratamento de erros
validators/ # Validação de dados de entrada (Zod, Joi, etc.)
user.validator.ts # Ex.: validação de criação/edição de usuário
jobs/ # Processamento em background (Filas com BullMQ)
lib/ # Bibliotecas (Queue, Email, etc.)
utils/ # Funções utilitárias/auxiliares
logger.ts # Log centralizado
hashPassword.ts # Função para hash de senhas
app.ts # Configuração principal do Express (Middlewares, Rotas)
server.ts # Ponto de entrada da aplicação (Inicializa o servidor)classDiagram
class event {
string id PK
string name
DateTime date_start
DateTime date_end
int capacity
string description
event_status status
bool is_visible
}
class sector {
string id PK
string name
string description
Decimal price
int capacity
Decimal service_charge
string event_id FK
}
class user {
string id PK
string name
string email
string password
string telephone
type_user type_user
}
class ticket {
string id PK
string code_qr
string sale_id FK
string sector_id FK
status_ticket status
}
class artist {
string id PK
string name
string description
string contact
}
class coupons {
string id PK
string code
type_coupons type
Decimal price
DateTime expiration_date
int usage_limit
}
class sale {
string id PK
string user_id FK
string event_id FK
string coupon_id FK
DateTime sale_date
Decimal price_total
payment_method payment_method
status_payment status_payment
}
class event_artist {
string event_id FK
string artist_id FK
}
event "1" --* "many" sector
event "1" --* "many" sale
user "1" --* "many" sale
sector "1" --* "many" ticket
sale "1" --* "many" ticket
sale "many" o-- "1" coupons
event "1" --* "many" event_artist
artist "1" --* "many" event_artist
Para garantir a qualidade e o funcionamento da API, execute os testes:
# Executar todos os testes
npm test
# Executar testes unitários
npm test test/unit
# Executar testes de integração
npm test test/integration
- Node.js + Express
- MySQL
- Redis
- Docker
- Prisma ORM
- BullMQ
- Jest
- Swagger
- Levy Sousa
- Iasmin Oliveira
Para dúvidas ou problemas, abra uma issue no repositório.