Skip to content

Team-Tech-School/back-end-metavagas

Repository files navigation

capa_metavagas

Metavagas – Projeto Fullstack

Descrição

Metavagas é um projeto fullstack que visa criar um front-end e uma API para a plataforma de vagas - Metavagas. O objetivo é permitir que usuários possam visualizar, cadastrar e filtrar vagas de emprego, bem como gerenciar empresas e tecnologias relacionadas às vagas.

Requisitos do projeto

Data de Entrega;

  • Data de entrega: 31/05/2024.
  • Repositórios: Os arquivos do projeto deverão estar em repositórios públicos no GitHub.
  • Publicação: A aplicação deverá ser publicada no Vercel/Railway.

Tecnologias Utilizadas;

Funcionalidades da API

Funcionalidades Públicas

  1. Criar usuário;
  2. Autenticação;
  3. Buscar todas vagas com empresas, anunciantes e tecnologias relacionadas;

Funcionalidades Privadas (Usuário)

  1. Atualizar usuário (self update ou admin);
  2. Soft delete de usuário (self delete ou admin);
  3. Buscar todos usuários (somente admin);
  4. Buscar usuário pelo ID (somente admin);
  5. Rota de profile retornando todas informações do usuário, exceto a senha;

Funcionalidades Privadas (Empresas)

  1. Criar empresa (somente admin);
  2. Atualizar empresa (somente admin);
  3. Buscar todas empresas e suas vagas atreladas;
  4. Buscar empresa pelo ID e suas vagas atreladas;

Funcionalidades Privadas (Vagas)

  1. Criar vaga (somente anunciante);
  2. Atualizar vaga (somente admin ou anunciante dono da vaga);
  3. Deletar vaga (somente admin ou anunciante dono da vaga);
  4. Buscar vaga pelo ID, incluindo nome da empresa e anunciante;
  5. Filtrar vagas por tecnologia, nome da vaga, faixa salarial, tipo de vaga e localização, com paginação;

Funcionalidades Privadas (Tecnologias)

  1. Criar tecnologia (somente admin);
  2. Buscar todas tecnologias;

Documentação e Testes

  1. Documentação com Swagger para autenticação, usuários, empresas, vagas e tecnologias;
  2. Testes para serviços de autenticação, usuários, empresas, vagas e tecnologias;
  3. Testes para controllers e módulos de autenticação e usuários;
  4. Ferramentas de organização utilizadas deverão ser entregues pelo grupo;

Entidades

User

{
  name = VARCHAR(64), NOT NULL
  email = VARCHAR(100), NOT NULL, UNIQUE
  password = VARCHAR(64), NOT NULL
  role = (admin, advertiser, cadidate), NOT NULL, DEFAULT (candidate)
  isActive = BOOLEAN, DAFAULT (true)
  createAt = DATE, DAFAULT (now)
  updateAt = DATE, DAFAULT (now)
  daleteAt = DATE
}

Vacancy

{
  vacancyRole = VARCHAR(80), NOT NULL
  wage = INT, NOT NULL
  location = VARCHAR(80), NOT NULL
  vacancyType = VARCHAR(80), NOT NULL
  vacancyDescription = TEXT, NOT NULL
  companyId = INT, NOT NULL
  advertserId = INT, NOT NULL
  createAt = DATE, DAFAULT (now)
  updateAt = DATE, DAFAULT (now)
  daleteAt = DATE
}

Company

{
  name = VARCHAR(64), NOT NULL, UNIQUE
  city = VARCHAR(128), NOT NULL
  state = VARCHAR(128), NOT NULL
  address = VARCHAR(128), NOT NULL
  foundeAt = DATE, NOT NULL
  description = TEXT, NOT NULL
  createAt = DATE, DAFAULT (now)
  updateAt = DATE, DAFAULT (now)
  daleteAt = DATE
}

Technology

{
  tecName = VARCHAR(64), NOT NULL, UNIQUE
  creatorsName = VARCHAR(64), NOT NULL
  createAt = DATE, DAFAULT (now)
  updateAt = DATE, DAFAULT (now)
  daleteAt = DATE
}

Links Úteis

Como Rodar a Aplicação

Clone o Repositório

git clone https://github.com/Team-Tech-School/back-end-metavagas.git

Instalação de dependências

$ npm install

Configure as Variáveis de Ambiente

  • Crie um arquivo .env na raiz do projeto backend com as variáveis de ambiente necessárias;
# APP
PORT = Porta que queira utilizar em sua aplicação (3000);

# BASE_URL
JWT_SECRET = Chave para jwt funcionar (exemplo_de_chave);
JWT_EXPIRES = Tempo de expiração de um token gerado (10m);

## DATABASE
DB_HOST = Host do banco de dados (localhost);
DB_PORT = Porta que seu banco esta ativo (5431);
DB_USERNAME = Nome de usuário do banco de dados (nome_user);
DB_PASSWORD = Senha do banco de dados (123456);
DB_NAME = Nome do banco de dados (back-end-metavagas);

Executando o aplicativo

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Teste

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

Contato

License

Nest is MIT licensed.

back-end-metavagas