Coder Social home page Coder Social logo

lucianagmbw / afirmajobs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from geankre/afirmajobs

0.0 0.0 0.0 11.29 MB

A AfirmaJobs é uma plataforma de divulgação de vagas voltadas para a diversidade e inclusão. A aplicação foi desenvolvida como projeto final do curso bootcamp da Reprograma

License: MIT License

Shell 0.08% JavaScript 99.81% Procfile 0.11%

afirmajobs's Introduction

Deploy on Heroku Database MongoDB Node version


AFIRMAJOBS



afirmajobs

Este projeto é resultado do Bootcamp Back-End - Todas em Tech - { reprograma }


Justificativa

Grupos historicamente minorizados – população negra, indígena, mulheres, pessoas LGBTQIAP+, pessoas com deficiência, em situação de vulnerabilidade, 50+ e refugiados – tendem a sofrer mais com a falta de oportunidades e a má distribuição de renda.

Segundo o IBGE, pessoas pretas ou pardas representem a maior parte da população (55,8%) e da força de trabalho brasileira (54,9%), porém apenas (29,9%) destas pessoas ocupavam cargos de gerência, segundo dados da Pesquisa Nacional por Amostra de Domicílios Contínua, em 2018.

No mercado de trabalho as ações afirmativas se apresentam como programas e políticas internas para tentar diminuir discrepâncias de equidade e inclusão no ambiente corporativo. As vagas afirmativas promovem alguma forma de reparação histórica, para combater a discriminação por meio de políticas sociais que promovem a inclusão destes grupos.

Mesmo com o aumento de programas e iniciativas que estimulam essas ações, ainda é árduo o processo de conexão entre as empresas e esses profissionais.


Solução

A AfirmaJobs é uma plataforma de divulgação de vagas voltadas para a diversidade e inclusão. A iniciativa consiste em encurtar o caminho entre empresas contratantes e profissionais pertencentes a grupos minorizados.


Objetivo

Por facilitar a conexão entre empresas e profissionais, a plataforma tem como objetivo principal estimular o aumento do índice de equidade corporativa, através de vagas afirmativas, utilizando a tecnologia para gerar impacto social.


Arquitetura

Esse projeto foi construído utilizando o padrão de arquitetura de software MVC, acrônimo para Model-View-Controller ou Modelo-Visão-Controle.

A separação em camadas faz com que a aplicação fique leve e funcione de forma independente, permitindo que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces.


  📁 afirmajobs
   |
   |---📁 assets
   |
   |---📁 src
   |    |
   |    |--📄 app.js
   |    |
   |    |--📁 config
   |    |    |--📄 database.js
   |    |
   |    |--📁 controllers
   |    |    |--📄 businessController.js
   |    |    |--📄 jobOpportunityController.js
   |    |    |--📄 loginController.js
   |    |    |--📄 signUpController.js
   |    |    |--📄 userController.js
   |    |
   |    |--📁 middlewares
   |         |- 📄 auth.js
   |
   |    |--📁 models
   |    |    |--📄 businessSchema.js
   |    |    |--📄 jobOpportunitySchema.js
   |    |    |--📄 signUpSchema.js
   |    |    |--📄 userSchema.js
   |    |
   |    |--📁 routes
   |    |    |--📄 businessRoutes.js
   |    |    |--📄 indexRoutes.js
   |    |    |--📄 jobOpportunityRoutes.js
   |    |    |--📄 signUpRoutes.js
   |    |    |--📄 userRoutes.js
   |
   |    |--📁 test
   |         |- 📄 api.test.js     
   |
   |- 📄 .env
   |- 📄 .env.example
   |- 📄 .gitignore
   |- 📄 package-lock,json
   |- 📄 package.json
   |- 📄 README.md
   |- 📄 server.js

Desenvolvimento

A plataforma Afirmajobs é uma API REST, usando Node.js e o banco de dados noSQL MongoDB. No projeto também foi implementado testes unitários utilizando o jest e o supertest.


🔸 SignUp

Para acessar as funcionalidades da plataforma é preciso que seja feito o cadastro do usuário, nesse momento é solicitado email, senha e escolha do tipo da conta (Usuário ou Empresa). No projeto foi utilizado o método de criptografia do tipo hash, bcrypt para gerar senhas criptografadas.

API deve retornar o seguinte Json caso o tipo da conta seja de Usuário:

    {
        "_id": "62e284bd59687d4d337a4131",
        "email": "[email protected]",
        "password": "$2b$10$JO1GlQWVsuj.jn7mC4Pgu.gBcRRktl7CxxlFouCiRhRamo.lQpDJe",
        "role": "user",
        "createdAt": "2022-07-28T12:42:16.054Z",
        "updatedAt": "2022-07-28T12:42:16.054Z",
        "__v": 0
    }

API deve retornar o seguinte Json caso o tipo da conta seja de Empresa:

    {
        "_id": "62e2843d59687d4d337a4128",
        "email": "[email protected]",
        "password": "$2b$10$EaR4ufku7F2j7em0C3VWNe.kuwYFJedsxrL8W6IgwYGe3rz1rKIrW",
        "role": "business",
        "createdAt": "2022-07-28T12:42:16.054Z",
        "updatedAt": "2022-07-28T12:42:16.054Z",
        "__v": 0
    }
signUp

🔸 Login

Após a fase de cadastro, o usuário terá que fazer login, que por sua vez gerará um token para o mesmo tenha acesso as funcionalidades da aplicação.

API deve retornar o seguinte Json caso o login seja autorizado:

{
    "message": "Authorized login",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyZTI4NDNkNTk2ODdkNGQzMzdhNDEyOCIsImlhdCI6MTY1OTA3NDgyMX0.rTEzMy5ue-0i-wVpraaWfIWxW398rMSar9gMXmBhjKk"
}
login

🔸 Perfil de Usuário

Com o login autorizado o usuário poderá criar, atualizar e deletar o seu perfil na plataforma.

API deve retornar o seguinte Json para o perfil do Usuário:

   {
        "_id": "62e28edcbd2736480b75876b",
        "userId": "62e284bd59687d4d337a4131",
        "name": "Geankre Souza",
        "pronoun": "Ela/Dela",
        "subTitle": [
            "JavaScript",
            "Node.js"
        ],
        "country": "Brasil",
        "city": "Recife",
        "resident": "São Paulo",
        "race": "Preta",
        "genderIdentity": "Mulher cis",
        "sexualOrientation": "Homossexual",
        "desability": false,
        "phone": 89886473643,
        "lookJob": true,
        "education": [
            {
                "institution": "Reprograma",
                "course": "Back-end Developer",
                "fieldOfStudy": "Desenvolvimento de Software",
                "status": "Completo",
                "start": "2011",
                "finish": "2015",
                "_id": "62e28edcbd2736480b75876c"
            }
        ],
        "workExperience": [
            {
                "title": "Diretora de arte",
                "typeOfContract": "PJ",
                "company": "Salobra Estúdio Criativo",
                "location": "Recife",
                "descriptionJob": "Lorem Impsum",
                "start": "2015",
                "finish": "2022",
                "_id": "62e28edcbd2736480b75876d"
            }
        ],
        "language": [
            {
                "language": "Inglês",
                "level": "Básico",
                "_id": "62e28edcbd2736480b75876e"
            }
        ],
        "description": "Lorem Impsum",
        "picture": "link.imagem",
        "otherSocialMedia": [
            "linklink"
        ],
        "interest": [
            "Tecnologia",
            "Criatividade",
            "Inovação"
        ],
        "createdAt": "2022-07-28T13:27:19.765Z",
        "updatedAt": "2022-07-28T13:27:19.765Z",
        "__v": 0
    }

🔸 Perfil de empresa

Com o login autorizado o usuário poderá criar, atualizar e deletar o seu perfil na plataforma.

PI deve retornar o seguinte Json para o perfil de Empresa:

    {
        "userId": "62e2843d59687d4d337a4128",
        "name": "{Reprograma}",
        "subTitle": "+ Mulheres Programando",
        "segment": "Organizações sem fins lucrativos",
        "site": "www.reprograma.com.br",
        "description": "A {reprograma} é uma iniciativa de impacto social que foca em ensinar programação para mulheres cis e trans como forma de reduzir o gap de gênero no setor de tecnologia por meio da educação.",
            "based": "São Paulo",
        "foundation": "2016",
        "picture": "https://reprograma.com.br/assets/img/reprograma-fundos-claros.png",
        "interest": ["Tecnologia", "Educação", "Inovação"],
         "createdAt": "2022-07-28T14:15:23.676Z",
        "updatedAt": "2022-07-28T14:15:23.676Z",
        "__v": 0
    }

🔸 Vagas

As vagas são postadas exclusivamente por um usuário do tipo empresa e podem ser consultadas tanto pelo usuário comum, quanto por outras empresas.

API deve retornar o seguinte Json para uma vaga cadastrada:

    {
        "_id": "62e299fbe06adce4f5d3efa3",
        "position": "Engenheiro de software",
        "company": "{Reprograma}",
        "level": "Pleno",
        "typeOfWorkingPlace": "Híbrido",
        "location": "São Paulo",
        "contractType": "PJ",
        "salaryRange": "Indisponível",
        "description": "Lorem ipsum dolor sit amet",
        "afirmativePolicies": "Racial",
        "attachment": "anexo.png",
        "createdAt": "2022-07-28T14:15:23.676Z",
        "updatedAt": "2022-07-28T14:15:23.676Z",
        "__v": 0
    }

Rotas


Métodos POST/GET/PUT/DELETE - SignUp/Login


Método Rota Descrição
POST https://afirmajobs.herokuapp.com/signUp/create Cadastra novos usuários
POST https://afirmajobs.herokuapp.com/signUp/login Permite acesso a usuários cadastrados
GET https://afirmajobs.herokuapp.com/signUp/all Lista de todos os usuários cadastrados
PUT https://afirmajobs.herokuapp.com/signUp/update_email/:id Atualiza o email do usuário buscando por ID
PUT https://afirmajobs.herokuapp.com/signUp/update_password/:id Atualizar senha do usuário buscando por ID
DELETE https://afirmajobs.herokuapp.com/signUp/delete/:id Deletar registro de usuário buscando por ID

Métodos POST/GET/PUT/DELETE - Perfil de usuário


Método Rota Descrição
POST https://afirmajobs.herokuapp.com/user/profile Cadastra perfil o usuário
GET https://afirmajobs.herokuapp.com/user/all Lista de todos usuários cadastrados
GET https://afirmajobs.herokuapp.com/user/by_name Busca por nome de usuário ou empresa
GET https://afirmajobs.herokuapp.com/user/by_interest Busca usuário ou empresa de acordo com as tags de interesses adicionadas pelo usuário.
PUT https://afirmajobs.herokuapp.com/user/update_profile/:id Atualiza informações do perfil do usuário buscando por ID
DELETE https://afirmajobs.herokuapp.com/user/delete_profile/:id Deleta perfil de usuário buscando por ID

Métodos POST/GET/PUT/DELETE - Perfil de empresa


Método Rota Descrição
POST https://afirmajobs.herokuapp.com/business/profile Cadastra perfil da empresa
GET https://afirmajobs.herokuapp.com/business/all Lista de todas as empresas cadastradas
GET https://afirmajobs.herokuapp.com/business/by_name Busca por nome de usuário ou empresa
GET https://afirmajobs.herokuapp.com/business/by_interest Busca usuário ou empresa de acordo com as tags de interesses adicionadas pelo usuário.
GET https://afirmajobs.herokuapp.com/business/profile_user Filtro de busca de perfis de usuários pela localidade, raça, identidade de gênero, orientação sexual e palavras-chave
PUT https://afirmajobs.herokuapp.com/business/update_profile/:id Atualiza informações do perfil da empresa buscando por ID
DELETE https://afirmajobs.herokuapp.com/business/delete_profile/:id Deleta perfil da empresa buscando por ID

Métodos POST/GET/PUT/DELETE - Vagas


Método Rota Descrição
POST https://afirmajobs.herokuapp.com/job/create Cadastra uma nova vaga
GET https://afirmajobs.herokuapp.com/job/all Lista todas as vagas cadastradas
GET https://afirmajobs.herokuapp.com/job/by_position_company Busca vagas pelo cargo ou empresa
GET https://afirmajobs.herokuapp.com/job/filter Filtro de busca de vagas de acordo com o nível do cargo, a localização da vaga, o tipo de contrato de trabalho, o formato de trabalho (Presencial, Híbrido ou Remoto) e o recorte ao qual a vaga é destinada
PUT https://afirmajobs.herokuapp.com/job/update_job_opportunity/:id Atualiza informações de uma vaga publicada buscando por ID
DELETE https://afirmajobs.herokuapp.com/job/delete_job_opportunity/:id Deleta uma vaga publicada buscando por ID

Tecnologias Utilizadas


Para que fosse possível a execução desse projeto, foi necessário a utilização de algumas dependências, descritas a seguir:

⚙️Dependências do Projeto

Para que fosse possível a execução desse projeto, foi necessário a utilização de algumas dependências, descritas a seguir:

  • Express - Framework para aplicativo da web do Node.js;

  • Cors - Permite que um site acesse recursos de outro site mesmo estando em domínios diferentes.

  • Mongoose - É uma biblioteca de programação orientada a objetos JavaScript que cria uma conexão entre MongoDB e a estrutura de aplicativo da web Express.

  • Dotenv-safe - Carrega variáveis de ambiente de um arquivo .env para process.env.

- [Bcrypt](https://www.npmjs.com/package/bcryptjs) - Método de criptografia do tipo hash para senhas baseado no Blowfish.
  • Jsonwebtoken - É um método definido na RFC 7519 para autenticação remota entre duas partes. Ele é uma das formas mais utilizadas para autenticar usuários em APIs RESTful.

⚙️Dependências de desenvolvimento

  • Nodemon - Ajuda no desenvolvimento de sistemas com o Node. js reiniciando automaticamente o servidor;

  • Jest - Framework de teste unitário de código aberto em JavaScript criado pelo Facebook a partir do framework Jasmine.

  • Supertest - É uma módulo que forja requisições visando testar webservers em Node.js e verifica o retorno das mesmas para automatizar testes desde tipo de infraestrutura, principalmente web APIs.

📑 Arquivos:


  • package.json - Arquivo de configuração utilizado para estipular e configurar dependências;

  • .gitignore - Arquivo que lista quais arquivos ou pastas o Git deve ignorar;

Instalação


  1. Entre na pasta onde você deseja clonar o repositório. Abra o git nela e digite:

    $ git clone https://github.com/Geankre/Reprograma-Afirmajobs
  2. Digite a linha abaixo para entrar na pasta correta:

     $ cd afirmajobs
  3. Escreva a seguinte linha para instalar as dependências utilizadas nesse projeto:

     $ npm install
  4. Inicie o servidor com o comando:

     $ npm run dev
  5. Para realizar a verificação dos testes da API utilize o comando:

    $ npm run test

Testando a API


Acesse através do Heroku:



Acesse através do Postman:


  • Importe a coleção para teste deste servidor clicando aqui!

  • Copie o link acima e, no Postman, clique em Import -> Link (cole o link) -> Continue -> Import.

  • Ou forke diretamente para o seu Postman através do link:

    Run in Postman


©️ Licença

Este projeto está sob a licença MIT.


Implementações futuras


  • Serviço de chat com WebSocket;
  • Postagens no feed do perfil tipo usuário ou empresa;
  • Função de adicionar usuário ou empresa à sua rede;
  • Alerta de vagas;
  • Sugestão de vagas de acordo com o perfil do usuário;
  • Adicionar um perfil de Recrutador;

Desenvolvedora

autora

Linkedin Badge

Também conhecida como Gel Souza, sou pernambucana, apaixonada por criação e inovação, desenvolvedora back-end pela {Reprograma} e musicista nas horas vagas. Desenvolvo APIs Rest ultilizando JavaScript e Node.js, integradas com o banco de dados NoSQL MongoDB e testes com Jest e Supertest. Utilizo o BCRYPT como método de criptografia do tipo hash e o JWT para autenticação e verificação do usuário. Me coloco aberta para novas possibilidades de aprender, fazer e existir no mundo.


Referências

O que são ações afirmativas

Desigualdades sociais no brasil - IBGE

Falta de orferta em educação de qualidade aumenta a desigualdade racial

A importância de ações afirmativas nas empresas

afirmajobs's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.