Este projeto consiste em uma aplicação back-end (API) para Gerenciamento de Eventos Culturais. A plataforma permite aos organizadores de eventos criar e listar eventos, e aos participantes explorar, pesquisar e filtrar eventos com base em categorias, locais e datas.
Antes de utilizar o projeto, certifique-se de seguir as seguintes etapas:
-
Ter o git instalado na máquina;
-
Ter o Node instalado;
-
Ter um banco de dados relacional instalado (De preferência o PostgreSQL);
-
Ter um editor de código de sua preferência;
-
Clonar o repositório por meio do comando abaixo:
git clone https://github.com/Avanti-Bootcamp-GET-Geeks/back-end-plataforma-eventos-culturais.git
-
Utilize uma ferramenta que possibilite realizar todos os tipos de requisições como o Postman, Insomnia etc.
Com o repositório clonado, execute os comandos abaixo (no diretório do projeto):
-
Para baixar as dependências:
npm install
; -
Crie um arquivo com o nome
.env
, insira nele o código que está no arquivo.env.example
e realize os ajustes necessários.- DATABASE_URL: insira sua senha em '
senhaDoBanco
' e o nome do banco de dados 'nomeDoBanco
' para o projeto em questão. - SECRET_JWT: modifique a chave fornecida por outra de sua preferência.
- DATABASE_URL: insira sua senha em '
Important
Para a criação dos cargos é necessário cadastrar um usuário como admin e realizar o login.
- O sistema foi pensado para ter 3 cargos: 1.
admin
, 2.organizador
, 3.visitante
oupúblico
.
- Esquemas do banco de dados: execute o comando
npx prisma migrate dev
após a criação do banco e a configuração do mesmo no arquivo .env; - Execute o programa utilizando o comando
npm start
- GET: Para listagem de registro(s).
- POST: Para criação de novo(s) registro(s).
- PUT: Para atualização de registro(s) existente(s).
- DELETE: Para exclusão de registro(s).
As estruturas de dados necessárias para o funcionamento do sistema foram definidas por meio do ORM Prisma para o banco de dados PostgreSQL. Abaixo está um resumo das entidades:
- Categorias: Representa as categorias dos eventos.
- Locais: Descreve os locais onde os eventos ocorrerão.
- Eventos: Contém informações sobre os eventos, incluindo
nome, descrição, datas e relacionamentos com categorias e locais
. - Cargos: Define os cargos dos usuários.
- Usuários: Armazena dados dos usuários, incluindo
nome, email, telefone, senha, cargo e isAdmin
.
Os métodos POST, PUT e DELETE das rotas de
cargos
ecategorias
sãorestritas aos administrados
.
-
GET
/categories
: Retorna todas as categorias de eventos. -
POST
/category
: Cria uma nova categoria. -
GET
/category/:id
: Retorna uma categoria específica pelo ID. -
PUT
/category/:id
: Atualiza uma categoria existente pelo ID. -
DELETE
/category/:id
: Exclui uma categoria pelo ID.
- GET
/events
: Retorna todos os eventos. - GET
/events/user/:id
: Retorna todos os eventos com base no usuário que o criou. - GET
/event/:id
: Retorna um evento específico pelo ID. - POST
/event
: Cria um novo evento. - PUT
/event/:id
: Atualiza um evento existente pelo ID. - DELETE
/event/:id
: Exclui um evento pelo ID.
- GET
/locals
: Retorna todos os locais. - GET
/local/:id
: Retorna um local específico pelo ID. - POST
/local
: Cria um novo local. - PUT
/local/:id
: Atualiza um local existente pelo ID. - DELETE
/local/:id
: Exclui um local pelo ID.
- GET
/roles
: Retorna todos os cargos de usuário. - GET
/role/:id
: Retorna um cargo específico pelo ID. - POST
/role
: Cria um novo cargo. - PUT
/role/:id
: Atualiza um cargo existente pelo ID. - DELETE
/role/:id
: Exclui um cargo pelo ID.
- GET
/users
: Retorna todos os usuários. - GET
/user/:id
: Retorna um usuário específico pelo ID. - POST
/user
: Cria um novo usuário. - PUT
/user/:id
: Atualiza um usuário existente pelo ID. - DELETE
/user/:id
: Exclui um usuário pelo ID.
- POST
/login
: Realiza o login de um usuário.
- Usuários com
cargo visitante
não podem realizar requisições aos métodos POST, PUT e DELETE, havendo uma exceção apenas nas rotas deuser
. - A autenticação é
obrigatória
para todos os tipos de usuários, sendo dispensável apenas paraleitura de dados
.
Após inicializar a aplicação (npm start
), você pode utilizar a documentação Swagger para realizar testes por meio dos endpoints
disponíveis, além de consultar todos os schemas
. Para tanto, acesse o endpoint a seguir: http://localhost:3000/api-docs
.