Skip to content

Repository files navigation

WTISC Project 💻

nodejs express prisma mongodb jwt postman jest visual_studio_code

Tecnologias UtilizadasFerramentas UtilizadasInstalando e ExecutandoPré-requisitosAPI EndpointsColaboradores

Sobre o WTISC

Workshop de Tecnologia da Informação do Sertão Central (WTISC) é um evento da Universidade Federal do Ceará Campus Quixadá, realizado anualmente no primeiro semestre do ano, pelo grupo PET – Sistemas de Informação.

O objetivo do evento é promover e difundir o conhecimento sobre as diversas áreas de Tecnologia da Informação, de forma a fortalecer e motivar a formação técnico-profissional, por meio da troca de experiências entre profissionais e acadêmicos.

O WTISC é evento público realizado desde 2008, e consiste na oferta de palestras e minicursos. Buscando apresentar aos alunos/participantes um pouco da realidade do mercado de trabalho.

Nas palestras, os profissionais contam sua experiência profissional e temas acadêmicos: área de atuação, dicas para se tornar um bom profissional, tecnologias utilizadas, além de diversos temas tecnológicos.

Nos minicursos, são apresentados aos alunos/participantes várias técnicas e ferramentas utilizadas em diversas áreas de atuação no mercado e na academia.

Status do Projeto

🚧 Em desenvolvimento 🚧

Principais Funcionalidades

  • Gerenciamento de usuários
  • Inscrição em minicursos e palestras
  • Emissão de certificados
  • Criação e gerenciamento de produtos

Tecnologias Utilizadas

1. Backend

  • Node.js: Plataforma de execução de código JavaScript no servidor.
  • Express: Framework para criação de APIs e servidores HTTP.

2. Banco de Dados

  • Prisma: ORM para manipulação do banco de dados.
  • @prisma/client: Cliente gerado automaticamente pelo Prisma para interação com o banco de dados.

3. Segurança

  • bcrypt: Biblioteca para criptografia de senhas.
  • jsonwebtoken: Implementação de JWT para autenticação segura.

4. Templates e Renderização

  • EJS (Embedded JavaScript): Motor de templates para renderizar HTML a partir de JavaScript.

5. Utilitários

  • dotenv: Carrega variáveis de ambiente a partir de um arquivo .env.
  • cookie-parser: Middleware para parsing de cookies nas requisições HTTP.

6. Testes

  • Jest: Framework de testes em JavaScript para validação das funcionalidades do projeto.

7. Automação

  • Puppeteer: Biblioteca para controle de navegadores via código.
  • Nodemon: Ferramenta para reiniciar o servidor automaticamente em desenvolvimento.

Ferramentas Utilizadas

  • Postman: Utilizado para testar e documentar as APIs.

Pré-requisitos

  • Node.js
  • NPM
  • MongoDB (ou acesso ao MongoDB Atlas)

Instalando e Executando

Clone o repositório:

git clone https://github.com/GustavoErick/wtisc-project.git

Entre no diretório do projeto:

cd api
npm install

Ajueste as variáveis de ambiente. Use o .env.properties.example como referência para criar seu arquivo de configuração .env com suas credenciais de conexão com o banco de dados e chave secreta JWT

DATABASE_URL={Sua URL de conexão ao banco de dados}
JWT_SECRET_KEY={Sua chave secreta JWT}

Após isso, podemos gerar o client do Prisma a partir do schema definido no arquivo schema.prisma:

npx prisma generate

Agora para execute o servidor:

npm run dev

Testando a API com Postman

Após configurar e rodar o projeto, você pode testar as rotas da API utilizando o Postman. Siga os passos abaixo:

  1. Instale o Postman: Caso ainda não tenha, baixe e instale o Postman.
  2. Crie uma nova coleção: No Postman, crie uma nova coleção para agrupar as requisições.
  3. Adicione as requisições que deseja testar usando a URL http://localhost:8800: ​

API Endpoints

Aqui você encontra uma lista de algumas rotas da API e o que cada uma faz:

Rota Descrição
POST /auth/register Registra um usuário detalhes de registro
POST /auth/login Realiza o login/autentica o usuário detalhes de login
UPDATE /users/6643fcfdbf78a93ed89008cd Atualiza dados do usuário detalhes de atualização
GET /minicourses Retorna todos os minicursos detalhes do minicurso
POST /subscriptions/minicourses/ Inscreve-se em um minicurso detalhes da inscrição
DELETE /subscriptions/minicourses/66a98e1dd4ec13c270ad4b74 Deleta uma inscrição detalhes da inscrição deletada

POST /auth/register

REQUEST

{
    "name": "Antonio",
    "surname": "Mágico da Silva",
    "cpf": "121212",
    "email": "ontoin@email.com",
    "password": "cubomagico123"
}

RESPONSE

{
  {"message": "Usuário criado com sucesso!"}
}

POST /auth/login

REQUEST

{
    "cpf": "121212",
    "password": "cubomagico123"
}

RESPONSE

{
    "message": "Login efetuado com sucesso!"
}

UPDATE /users/6643fcfdbf78a93ed89008cd

REQUEST

{
    "name": "Anthony"
}

RESPONSE

{
    "userId": "6643fcfdbf78a93ed89008cd",
    "name": "Anthony",
    "surname": "Mágico da Silva",
    "cpf": "121212",
    "Role": "USER"
}

GET /minicourses

RESPONSE

{
        "minicourseId": "6642ae53d0d0d582ca8a6448",
        "title": "Node.js para iniciantes",
        "description": "Aqui você aprenderá o básico de Node.js!",
        "prequisites": "Javascript básico",
        "instructor": "Regis Pires",
        "date": "2024-08-31T15:00:00.000Z",
        "time": "15:00",
        "location": "Auditório",
        "capacity": 60,
        "workload": 2,
        "enrolled": 4
    }

POST /subscriptions/minicourses/

REQUEST

{
    "minicourseId": "6642ae53d0d0d582ca8a6448"
}

RESPONSE

{
    "enrollmentId": "66a98e1dd4ec13c270ad4b74",
    "userId": "6643fcfdbf78a93ed89008cd",
    "minicourseId": "6642ae53d0d0d582ca8a6448",
    "status": "ABSENT"
}

DELETE /minicourses/subscriptions/minicourses/66a98e1dd4ec13c270ad4b74

RESPONSE

{
    "message": "Inscrição no minicurso deletada com sucesso!"
}

🤝 Colaboradores

Agradecimento especial a todos aqueles que contribuíram com este projeto!

Gustavo Erick Profile Picture
Gustavo Erick
Beatriz Nascimento Picture
Beatriz Nascimento
Foto do Samuel Nascimento
Samuel Nascimento
Foto do Elysson Alves
Elysson Alves
Foto do Danilo Gomes
Danilo Gomes

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages