Este é um aplicativo mobile para ficar por dentro de vagas de emprego. Ele permite que usuários visualizem vagas e informações pessoais, que são armazenadas em um banco de dados conectado à API.
- Cadastro de usuários: Usuários podem se cadastrar para acessar funcionalidades do app.
- Edicão de usuários: Usuários podem editar suas informações na aba de perfil do app.
- Cadastro de vagas: É possível cadastrar vagas através do POSTMAN utilizando o endpoint /vagas
- Visualizar de vagas: É possível visualizar vagas cadastradas no aplicativo.
- Integração com Whatsapp: Em vagas abertas, o usuário pode enviar uma mensagem pelo Whatsapp ao clicar no botão de "Entrar em contato"
- Autenticação: Apenas usuários autenticados têm acesso às funcionalidades principais.
- Gerenciamento de perfil: Usuários podem visualizar e editar suas informações pessoais.
- Armazenamento local de dados: Os dados de um usuário ficam armazenados localmente até ele fazer o logout.
- Como não pude hospedar a aplicação, é necessário trocar um a variável baseURL - aonde esta escrito 'localhost' deve ser o IP da sua rede.
- O código abaixo é onde você deve alterar, o caminho dele é: '\app\src\services\api.js'
- Caso prefira, apenas dê um Ctrl+F e pesquise pelo comentário '//POR FAVOR, ALTERE 'localhost' PARA O IP DA SUA REDE'
import axios from 'axios';
const api = axios.create({
baseURL: 'http://localhost:3000' //POR FAVOR, ALTERE 'localhost' PARA O IP DA SUA REDE
});
export default api;
cd api
- Node.js
- Instale as dependências:
yarn install
- Inicie o servidor:
yarn start
cd app
- Expo
- Ambiente configurado com emulador Android/iOS ou dispositivo físico.
- Instale as dependências:
yarn install
- Inicie o servidor Expo:
yarn start
- Escaneie o QR Code exibido no terminal para abrir o app no dispositivo.
Para interagir com a API, utilize o Postman ou outro cliente HTTP.
Cadastro de vaga
Endpoint: POST http://localhost:3000/vagas
Exemplo de requisição:
{
"titulo": "Desenvolvedor Front-end",
"descricao": "Desenvolvimento de interfaces web utilizando React.",
"dataCadastro": "2024-06-30",
"telefone": "1234-5678",
"status": "aberta",
"empresa": "Tech Solutions"
}
Edição de vaga
Endpoint: POST http://localhost:3000/vagas/{ID DA VAGA QUE DESEJA ALTERAR}
Exemplo de requisição:
{
"titulo": "Nova vaga",
"descricao": "Desenvolvimento de interfaces web utilizando React.",
"dataCadastro": "2024-06-30",
"telefone": "1234-5678",
"status": "fechada",
"empresa": "Tech Solutions"
}
Cadastro de usuário
Endpoint: POST http://localhost:3000/usuarios
- Essa funcionalidade também pode ser acessada diretamente pelo aplicativo com a criação de uma conta nova. Exemplo de requisição:
{
"nome": "Carlos Pereira",
"email": "[email protected]",
"senha": "senha789"
}
Edição de usuário
Endpoint: POST http://localhost:3000/usuario/{ID DO USUARIO QUE DESEJA ALTERAR}
- Essa funcionalidade também pode ser acessada diretamente pelo aplicativo na aba de Perfil.
- É possível alterar todas as informações - não é mostrada a senha para ser mais "seguro" mas é possível alterá-la. (Isso é um ponto para melhoria - confirmação por e-mail para alteração de senha) Exemplo de requisição:
{
"nome": "Carlos Pereira",
"email": "[email protected]",
"senha": "senha789"
}
Nota:
- Todas as requisições devem ser feitas individualmente.
- Não é necessário enviar o id pois ele é definido pelo próprio backend.
App.tsx
: Configura a navegação do aplicativo e autenticação de usuários.screens
: Contém telas como Login, Formulário, Lista de Vagas e Perfil.context/AuthContext.tsx
: Gerencia autenticação, persistência e logout de usuários.
models/
: Contém definições das tabelasUser
eVaga
.controllers/
: Implementa as operações de CRUD para usuários e vagas.server.js
: Define as rotas para endpoints de usuários e vagas.
- A autenticação no app é feita por meio do contexto
AuthContext
e utilizaAsyncStorage
para persistir dados localmente. - No backend, as senhas são armazenadas com
bcrypt
para segurança.
As senhas dos usuários são protegidas utilizando o algoritmo bcrypt, que aplica hashing com salt para garantir a segurança dos dados. Esse método impede o armazenamento de senhas em texto puro no banco de dados, protegendo contra vazamentos e ataques de força bruta.
Para facilitar os testes da aplicação, fornecemos abaixo alguns usuários pré-cadastrados. Utilize as credenciais fornecidas para acessar as funcionalidades.
Usuários disponíveis para teste:
-
Teste
- E-mail: teste
- Senha: 1
-
João Silva
- E-mail: [email protected]
- Senha: senha123
-
Maria Oliveira
- E-mail: [email protected]
- Senha: senha456
-
Carlos Pereira
- E-mail: [email protected]
- Senha: senha789
Ids de Vagas já cadastradas:
{
"id": "fef8ed53-57da-40eb-81f1-8b39228389e9",
"titulo": "Desenvolvedor Front-end",
"descricao": "Desenvolvimento de interfaces web utilizando React.",
"dataCadastro": "2024-06-30T00:00:00.000Z",
"telefone": "1234-5678",
"status": "aberta",
"empresa": "Tech Solutions",
},
{
"id": "e8ad3ec5-1db9-4f95-b799-3bb093500194",
"titulo": "Desenvolvedor Back-end",
"descricao": "Desenvolvimento de APIs RESTful utilizando Node.js.",
"dataCadastro": "2024-06-28T00:00:00.000Z",
"telefone": "8765-4321",
"status": "aberta",
"empresa": "Innovative Tech",
}
- Lembre que o padrão de data é "2024-06-01".
- Opte por colocar o status da empresa num padrão também "aberta" ou "fechada"
- Utilize o GET para visualizar todas as vagas cadastradas e seus correspondentes IDs.
- Caso você insira uma vaga e ela ainda não apareceu, experimente arrastar a lista de vagas para baixo para atualizar a página.
- React Native
- Expo
- React Navigation
- Styled Components
- Node.js
- Express
- Sequelize
- Implementar buscas e filtros de vagas no frontend.
- Adicionar notificações push para novas vagas.
- Refatorar a UI/UX do aplicativo.
- Criar um perfil para Administrador/empresa - permitindo adicionar vagas diretamente no app.
- Confirmação por e-mail para alteração de senha/"Esqueci minha senha"
- Hospedar a aplicação