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.
- 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.
- Criar usuário;
- Autenticação;
- Buscar todas vagas com empresas, anunciantes e tecnologias relacionadas;
- Atualizar usuário (self update ou admin);
- Soft delete de usuário (self delete ou admin);
- Buscar todos usuários (somente admin);
- Buscar usuário pelo ID (somente admin);
- Rota de profile retornando todas informações do usuário, exceto a senha;
- Criar empresa (somente admin);
- Atualizar empresa (somente admin);
- Buscar todas empresas e suas vagas atreladas;
- Buscar empresa pelo ID e suas vagas atreladas;
- Criar vaga (somente anunciante);
- Atualizar vaga (somente admin ou anunciante dono da vaga);
- Deletar vaga (somente admin ou anunciante dono da vaga);
- Buscar vaga pelo ID, incluindo nome da empresa e anunciante;
- Filtrar vagas por tecnologia, nome da vaga, faixa salarial, tipo de vaga e localização, com paginação;
- Criar tecnologia (somente admin);
- Buscar todas tecnologias;
- Documentação com Swagger para autenticação, usuários, empresas, vagas e tecnologias;
- Testes para serviços de autenticação, usuários, empresas, vagas e tecnologias;
- Testes para controllers e módulos de autenticação e usuários;
- Ferramentas de organização utilizadas deverão ser entregues pelo grupo;
{
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
}
{
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
}
{
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
}
{
tecName = VARCHAR(64), NOT NULL, UNIQUE
creatorsName = VARCHAR(64), NOT NULL
createAt = DATE, DAFAULT (now)
updateAt = DATE, DAFAULT (now)
daleteAt = DATE
}
git clone https://github.com/Team-Tech-School/back-end-metavagas.git
$ npm install
- 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);
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
Nest is MIT licensed.